ya2 · news · projects · code · about

scenes already done
[pmachines.git] / pmachines / scene.py
index 4f1cdbf01254dbcd10e91e99840e86a2420c3f09..6029d720c98ddf9558ce6ca94b0b0e63e9bbc350 100644 (file)
@@ -20,7 +20,9 @@ from ya2.p3d.p3d import LibP3d
 
 class Scene(DirectObject):
 
-    def __init__(self, world, exit_cb, auto_close_instr, dbg_items, reload_cb, scenes, pos_mgr, testing, mouse_coords):
+    scenes_done = []
+
+    def __init__(self, world, exit_cb, auto_close_instr, dbg_items, reload_cb, scenes, pos_mgr, testing, mouse_coords, persistent):
         super().__init__()
         self._world = world
         self._exit_cb = exit_cb
@@ -33,6 +35,7 @@ class Scene(DirectObject):
         self._scenes = scenes
         self._start_evt_time = None
         self._enforce_res = ''
+        self.__persistent = persistent
         self.accept('enforce_res', self.enforce_res)
         self._set_camera()
         self._cursor = MouseCursor(
@@ -61,6 +64,10 @@ class Scene(DirectObject):
     def name():
         return ''
 
+    @classmethod
+    def is_done(cls):
+        return bool([(name, version) for name, version in cls.scenes_done if cls.__name__ == name and cls.version == version])
+
     def _instr_txt(self):
         return ''
 
@@ -488,6 +495,7 @@ class Scene(DirectObject):
         self._pos_mgr.register('close_instructions', LibP3d.wdg_pos(btn))
 
     def _set_win(self):
+        self.__persistent.save_scene(self.__class__.__name__, self.version)
         loader.load_sfx('assets/audio/sfx/success.ogg').play()
         self._paused = True
         self.__store_state()