Mercurial > nagslang
diff nagslang/screens/area.py @ 520:3f79a77ef1e3
Ephemeral messages
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Sat, 07 Sep 2013 20:20:25 +0200 |
parents | a46767c61ad6 |
children | bf7960e49063 |
line wrap: on
line diff
--- a/nagslang/screens/area.py Sat Sep 07 20:09:31 2013 +0200 +++ b/nagslang/screens/area.py Sat Sep 07 20:20:25 2013 +0200 @@ -9,7 +9,8 @@ COLLISION_TYPE_WALL, COLLISION_TYPE_PLAYER, CALLBACK_COLLIDERS, COLLISION_TYPE_FURNITURE, COLLISION_TYPE_WEREWOLF_ATTACK, CMD_TOGGLE_FORM, CMD_ACTION) -from nagslang.events import ScreenChange, DoorEvent, QuitEvent, DeathEvent +from nagslang.events import ( + AddDrawableEvent, DeathEvent, DoorEvent, QuitEvent, ScreenChange) from nagslang.level import Level from nagslang.screens.base import Screen from nagslang.sound import sound @@ -203,7 +204,10 @@ level, pos = Level.game_starting_point() self.protagonist.set_position(pos) ScreenChange.post(level) - + elif AddDrawableEvent.matches(ev): + self._drawables.add(ev.drawable) + if ev.drawable.overlay: + self._level.overlay_drawables.append(ev.drawable.overlay) self.keys.handle_event(ev) def _calc_viewport(self, level_surface, display_surface): @@ -247,9 +251,10 @@ surface.blit(self._surface, (0, 0), render_rect) # Maximum width we allow for overlays max_width = min(render_rect.width, self._surface.get_width()) - for overlay in self._level.overlay_drawables: + for overlay in reversed(self._level.overlay_drawables): if overlay.is_visible(): overlay.render(surface, render_rect.topleft, max_width) + break self.render_health_bar(surface) def tick_protagonist(self): @@ -268,8 +273,12 @@ if result is not None: for drawable in result.add: self._drawables.add(drawable) + if drawable.overlay: + self._level.overlay_drawables.add(drawable.overlay) for drawable in result.remove: self._drawables.remove(drawable) + if drawable.overlay: + self._level.overlay_drawables.remove(drawable.overlay) def render_health_bar(self, surface, damage_experienced=None): bar_surface = pygame.Surface((110, 50)).convert(surface)