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):