Mercurial > nagslang
diff nagslang/screens/area.py @ 440:9eee96966d88
Add Death event to reduce death code duplication
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Sat, 07 Sep 2013 14:36:09 +0200 |
parents | d087dfb10896 |
children | 82db70c28722 |
line wrap: on
line diff
--- a/nagslang/screens/area.py Sat Sep 07 14:30:27 2013 +0200 +++ b/nagslang/screens/area.py Sat Sep 07 14:36:09 2013 +0200 @@ -8,7 +8,7 @@ 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 +from nagslang.events import ScreenChange, DoorEvent, QuitEvent, DeathEvent from nagslang.level import Level from nagslang.screens.base import Screen from nagslang.sound import sound @@ -165,12 +165,7 @@ if self._level.is_starting_level(): QuitEvent.post() return - room, pos = self.game_starting_point - self.world.load() - self.world.deaths += 1 - ScreenChange.post(room) - self.protagonist.set_position(pos) - self._disable_render = True + self.protagonist.die() return cmd_key = self.keys.get_command_key(ev.key) if cmd_key is not None: @@ -187,6 +182,14 @@ return # else we're teleporting within the screen, and just the # position change is enough + elif DeathEvent.matches(ev): + self._disable_render = True + self.world.load() + self.world.deaths += 1 + level, pos = Level.game_starting_point() + self.protagonist.set_position(pos) + ScreenChange.post(level) + self.keys.handle_event(ev) def _calc_viewport(self, level_surface, display_surface):