diff nagslang/screens/area.py @ 505:80c452f348dc

Rearrange progress saving, to happen on room entrance
author Stefano Rivera <stefano@rivera.za.net>
date Sat, 07 Sep 2013 18:38:40 +0200
parents 5680d7383717
children a98ae2bc4957
line wrap: on
line diff
--- a/nagslang/screens/area.py	Sat Sep 07 18:29:14 2013 +0200
+++ b/nagslang/screens/area.py	Sat Sep 07 18:38:40 2013 +0200
@@ -85,12 +85,12 @@
         self.keys = ControlKeys()
         self._level = Level(self.name, self.world)
         self._level.load(self.space)
-        self.game_starting_point = Level.game_starting_point()
         self._drawables = Drawables()
         self.add_walls()
         self._add_collision_handlers()
         self.add_protagonist()
         self.add_game_objects()
+        self.save_progress()
         sound.play_music("POL-cyber-factory-short.ogg")
 
     def teardown(self):
@@ -158,8 +158,16 @@
     def add_protagonist(self):
         self.protagonist = self.world.protagonist
         self.protagonist.change_space(self.space)
+        self.world.rooms += 1
         self._drawables.add(self.protagonist)
 
+    def save_progress(self):
+        if self.name == Level.game_starting_point()[0]:
+            return
+        self.world.level = (self.name, (self.protagonist.physicser.position.x,
+                                        self.protagonist.physicser.position.y))
+        self.world.save()
+
     def handle_event(self, ev):
         if ev.type == pygame.locals.KEYDOWN:
             if ev.key == pygame.locals.K_ESCAPE:
@@ -180,9 +188,6 @@
             if ev.destination is not None and ev.destination != self.name:
                 # Go to anther screen
                 self._disable_render = True
-                self.world.rooms += 1
-                self.world.level = (ev.destination, ev.dest_pos)
-                self.world.save()
                 ScreenChange.post(ev.destination)
                 return
             # else we're teleporting within the screen, and just the