changeset 569:f735665c359e

Only save state when PuzzleDoor is activated, not on update.
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 07 Sep 2013 22:39:16 +0200
parents 35168dbf76bd
children 3c7593a84b06
files nagslang/game_object.py
diffstat 1 files changed, 10 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/nagslang/game_object.py	Sat Sep 07 22:38:32 2013 +0200
+++ b/nagslang/game_object.py	Sat Sep 07 22:39:16 2013 +0200
@@ -400,8 +400,12 @@
         )
 
     def _post_door_event(self, protagonist):
+        self.door_opened()
         DoorEvent.post(self.destination, self.dest_pos)
 
+    def door_opened(self):
+        pass
+
 
 class Door(BaseDoor):
     def __init__(self, space, position, destination, dest_pos, angle):
@@ -458,19 +462,18 @@
 
     @property
     def is_open(self):
-        return self._stored_state['is_open']
+        if self._stored_state['is_open']:
+            return True
+        return self.puzzler.glue.get_state_of(self._key_state)
+
+    def door_opened(self):
+        self._stored_state['is_open'] = True
 
     def set_stored_state_dict(self, stored_state):
         self._stored_state = stored_state
         self._stored_state.setdefault('is_open', False)
         return True
 
-    def update(self, dt):
-        if not self.is_open:
-            self._stored_state['is_open'] = self.puzzler.glue.get_state_of(
-                self._key_state)
-        super(PuzzleDoor, self).update(dt)
-
     @classmethod
     def requires(cls):
         return [("name", "string"), ("position", "coordinates"),