diff skaapsteker/engine.py @ 454:95527fd29872

More complete game load/save/restart.
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 09 Apr 2011 20:47:35 +0200
parents 4bec05fed6c7
children fb9258d66137
line wrap: on
line diff
--- a/skaapsteker/engine.py	Sat Apr 09 20:42:48 2011 +0200
+++ b/skaapsteker/engine.py	Sat Apr 09 20:47:35 2011 +0200
@@ -22,8 +22,6 @@
         self.game_state = GameState(os.path.join(options['save_location'], 'savegame.json'))
         if self.game_state.can_resume():
             self.game_state.load_game()
-        else:
-            self.game_state.new_game()
         self.soundsystem = soundsystem
 
     def change_scene(self, next_scene):
@@ -44,6 +42,10 @@
             for ev in events:
                 if ev.type is QUIT:
                     return
+                if NewGameEvent.matches(ev):
+                    self.game_state.new_game()
+                    fox = self.game_state.world.fox
+                    ChangeScene.post((ev.scene_type, '.'.join([fox.level, fox.doorway])))
                 if ChangeScene.matches(ev):
                     next_scene = ev.next_scene
                     if not isinstance(next_scene, Scene):
@@ -103,6 +105,14 @@
     def matches(cls, ev):
         return ev.type is USEREVENT and ev.utype == cls.utype
 
+class NewGameEvent(UserEvent):
+
+    utype = "NEW_GAME_EVENT"
+
+    @classmethod
+    def post(cls, scene_type):
+        super(NewGameEvent, cls).post(scene_type=scene_type)
+
 class ChangeScene(UserEvent):
 
     utype = "CHANGE_SCENE"