ya2 · news · projects · code · about

removed python scenes
authorFlavio Calva <f.calva@gmail.com>
Fri, 30 Sep 2022 17:44:46 +0000 (18:44 +0100)
committerFlavio Calva <f.calva@gmail.com>
Fri, 30 Sep 2022 17:44:46 +0000 (18:44 +0100)
14 files changed:
assets/locale/po/it_IT.po
pmachines/app.py
pmachines/gui/menu.py
pmachines/scene.py
pmachines/scenes/__init__.py [deleted file]
pmachines/scenes/scene_basketball.py [deleted file]
pmachines/scenes/scene_box.py [deleted file]
pmachines/scenes/scene_domino.py [deleted file]
pmachines/scenes/scene_domino_box.py [deleted file]
pmachines/scenes/scene_domino_box_basketball.py [deleted file]
pmachines/scenes/scene_teeter_domino_box_basketball.py [deleted file]
pmachines/scenes/scene_teeter_tooter.py [deleted file]
prj.org
ya2/build/screenshots.py

index 7dd1b68fcc102454c2db0d2f42703f556bac880e..cee06208fecb55d3ae3bd7ff62b50e7088f95689 100644 (file)
@@ -17,15 +17,15 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: pmachines/scene.py:89
+#: pmachines/scene.py:95
 msgid "Scene: "
 msgstr "Scena: "
 
-#: pmachines/scene.py:608
+#: pmachines/scene.py:614
 msgid "You win!"
 msgstr "Hai vinto!"
 
-#: pmachines/scene.py:681
+#: pmachines/scene.py:687
 msgid "You have failed!"
 msgstr "Hai perso!"
 
@@ -46,12 +46,12 @@ msgid "Exit"
 msgstr "Esci"
 
 #: pmachines/gui/menu.py:121 pmachines/gui/menu.py:124
-#: pmachines/gui/menu.py:309
+#: pmachines/gui/menu.py:310
 msgid "English"
 msgstr "Inglese"
 
 #: pmachines/gui/menu.py:121 pmachines/gui/menu.py:125
-#: pmachines/gui/menu.py:310
+#: pmachines/gui/menu.py:311
 msgid "Italian"
 msgstr "Italiano"
 
@@ -80,7 +80,7 @@ msgid "Shadows"
 msgstr "Ombre"
 
 #: pmachines/gui/menu.py:213 pmachines/gui/menu.py:238
-#: pmachines/gui/menu.py:275
+#: pmachines/gui/menu.py:276
 msgid "Back"
 msgstr "Indietro"
 
index eec42be1ac3ee68358ce7beeb7730101b5fb10a9..c03d7281e3ed164d29c31db1d4560086dd9c1f41 100755 (executable)
@@ -18,13 +18,6 @@ from pmachines.audio.music import MusicMgr
 from pmachines.items.background import Background
 from pmachines.gui.menu import Menu
 from pmachines.scene import Scene
-from pmachines.scenes.scene_basketball import SceneBasketBall
-from pmachines.scenes.scene_box import SceneBox
-from pmachines.scenes.scene_domino_box_basketball import SceneDominoBoxBasketball
-from pmachines.scenes.scene_domino_box import SceneDominoBox
-from pmachines.scenes.scene_domino import SceneDomino
-from pmachines.scenes.scene_teeter_domino_box_basketball import SceneTeeterDominoBoxBasketball
-from pmachines.scenes.scene_teeter_tooter import SceneTeeterTooter
 from pmachines.posmgr import PositionMgr
 from pmachines.persistent import Persistent
 from ya2.utils.dictfile import DctFile
@@ -72,13 +65,13 @@ class MainFsm(FSM):
 class Pmachines:
 
     scenes = [
-        SceneDomino,
-        SceneBox,
-        SceneDominoBox,
-        SceneBasketBall,
-        SceneDominoBoxBasketball,
-        SceneTeeterTooter,
-        SceneTeeterDominoBoxBasketball]
+        'domino',
+        'box',
+        'domino_box',
+        'basketball',
+        'domino_box_basketball',
+        'teeter_tooter',
+        'teeter_domino_box_basketball']
 
     def __init__(self):
         info('platform: %s' % platform)
@@ -109,8 +102,8 @@ class Pmachines:
 
     def start(self):
         if self._args.screenshot:
-            cls = [cls for cls in self.scenes if cls.__name__ == self._args.screenshot][0]
-            scene = cls(BulletWorld(), None, True, False, lambda: None, self.scenes, self._pos_mgr, None, None)
+            #cls = [cls for cls in self.scenes if cls.__name__ == self._args.screenshot][0]
+            scene = Scene(BulletWorld(), None, True, False, lambda: None, self.scenes, self._pos_mgr, None, None, None, self._args.screenshot)
             scene.screenshot()
             scene.destroy()
             exit()
@@ -140,9 +133,9 @@ class Pmachines:
         self._menu_bg.destroy()
         self._menu.destroy()
 
-    def on_scene_enter(self, cls):
+    def on_scene_enter(self, scene_name):
         self._set_physics()
-        self._scene = cls(
+        self._scene = Scene(
             self.world, self.on_home,
             self._options['development']['auto_close_instructions'],
             self._options['development']['debug_items'],
@@ -151,7 +144,8 @@ class Pmachines:
             self._pos_mgr,
             self._args.functional_test or self._args.functional_ref,
             self._options['development']['mouse_coords'],
-            self.__persistent)
+            self.__persistent,
+            scene_name)
 
     def on_scene_exit(self):
         self._unset_physics()
index 337ce3dbd6eff23ea9ffd90a4318ed522880cb88..6f657b60db0f884344892dd10808654cb06daae5 100644 (file)
@@ -252,19 +252,20 @@ class Menu(DirectObject):
             'frameColor': (1, 1, 1, .8),
             'text_scale': .64}
         left = - (dx := .8) * (min(4, len(self._scenes)) - 1) / 2
-        for i, cls in enumerate(self._scenes):
+        from pmachines.scene import Scene
+        for i, scene_name in enumerate(self._scenes):
             top = .1 if len(self._scenes) < 5 else .6
             row = 0 if i < 4 else 1
             new_cmn = cmn.copy()
-            if cls.is_done():
+            if Scene.is_done(scene_name):
                 new_cmn['frameColor'] = (1, 1, 1, .4)
                 new_cmn['text_fg'] = (.9, .9, .9, .4)
             self._widgets += [DirectButton(
-                text=cls.name(), pos=(left + dx * (i % 4), 1, top - dx * row),
-                command=self.start, extraArgs=[cls], text_wordwrap=6,
-                frameTexture='assets/images/scenes/%s.dds' % cls.__name__,
+                text=Scene.name(scene_name), pos=(left + dx * (i % 4), 1, top - dx * row),
+                command=self.start, extraArgs=[scene_name], text_wordwrap=6,
+                frameTexture='assets/images/scenes/%s.dds' % scene_name,
                 **new_cmn)]
-            name = cls.__name__[5:].lower()
+            name = scene_name.lower()
             self._pos_mgr.register(name, LibP3d.wdg_pos(self._widgets[-1]))
             for j in range(4):
                 tnode = self._widgets[-1].component('text%s' % j).textNode
index e425eabf68e8ccbe619facf02f5dbfbafedfb51e..aeb05b9a7e0bd56e1782b61e77b6116285c61d47 100644 (file)
@@ -26,10 +26,10 @@ from ya2.p3d.p3d import LibP3d
 
 class Scene(DirectObject):
 
+    json_files = {}
     scenes_done = []
-    json = {}
 
-    def __init__(self, world, exit_cb, auto_close_instr, dbg_items, reload_cb, scenes, pos_mgr, testing, mouse_coords, persistent):
+    def __init__(self, world, exit_cb, auto_close_instr, dbg_items, reload_cb, scenes, pos_mgr, testing, mouse_coords, persistent, json_name):
         super().__init__()
         self._world = world
         self._exit_cb = exit_cb
@@ -43,6 +43,8 @@ class Scene(DirectObject):
         self._start_evt_time = None
         self._enforce_res = ''
         self.__persistent = persistent
+        self.__json_name = json_name
+        self.json = {}
         self.accept('enforce_res', self.enforce_res)
         self._set_camera()
         self._cursor = MouseCursor(
@@ -68,26 +70,30 @@ class Scene(DirectObject):
         self._scene_tsk = taskMgr.add(self.on_frame, 'on_frame')
 
     @classmethod
-    def name(cls):
-        if not cls.json:
-            with open(cls.filename) as f:
-                cls.json = loads(f.read())
-        return _(cls.json['name'])
+    def filename(cls, scene_name):
+        return f'assets/scenes/{scene_name}.json'
 
     @classmethod
-    def version(cls):
-        if not cls.json:
-            with open(cls.filename) as f:
-                cls.json = loads(f.read())
-        return cls.json['version']
+    def name(cls, scene_name):
+        if not scene_name in cls.json_files:
+            with open(cls.filename(scene_name)) as f:
+                cls.json_files[scene_name] = loads(f.read())
+        return _(cls.json_files[scene_name]['name'])
 
     @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 version(cls, scene_name):
+        if not scene_name in cls.json_files:
+            with open(cls.filename(scene_name)) as f:
+                cls.json_files[scene_name] = loads(f.read())
+        return cls.json_files[scene_name]['version']
+
+    @classmethod
+    def is_done(cls, scene_name):
+        return bool([(name, version) for name, version in cls.scenes_done if scene_name == name and cls.version(scene_name) == version])
 
     def _instr_txt(self):
-        txt = _('Scene: ') + self.name() + '\n\n'
-        for instruction_line in self.__class__.json['instructions']:
+        txt = _('Scene: ') + self.name(self.__json_name) + '\n\n'
+        for instruction_line in self.__class__.json_files[self.__json_name]['instructions']:
             instruction_line = self.__process_json_escape(instruction_line)
             txt += _(instruction_line)
         return txt
@@ -98,10 +104,10 @@ class Scene(DirectObject):
     def _set_items(self):
         self.items = []
         self._test_items = []
-        if not self.__class__.json:
-            with open(self.__class__.filename) as f:
-                self.__class__.json = loads(f.read())
-        for item in self.__class__.json['start_items']:
+        if not self.json:
+            with open(f'assets/scenes/{self.__json_name}.json') as f:
+                self.json = loads(f.read())
+        for item in self.json['start_items']:
             args = {
                 'world': self._world,
                 'plane_node': self._mouse_plane_node,
@@ -115,7 +121,7 @@ class Scene(DirectObject):
             if 'friction' in item:
                 args['friction'] = item['friction']
             self.items += [self.__code2class(item['class'])(**args)]
-        for item in self.__class__.json['fixed_items']:
+        for item in self.json['fixed_items']:
             args = {
                 'world': self._world,
                 'plane_node': self._mouse_plane_node,
@@ -132,7 +138,7 @@ class Scene(DirectObject):
             if 'friction' in item:
                 args['friction'] = item['friction']
             self.items += [self.__code2class(item['class'])(**args)]
-        for item in self.__class__.json['scene_items']:
+        for item in self.json['scene_items']:
             args = {
                 'world': self._world,
                 'plane_node': self._mouse_plane_node,
@@ -192,7 +198,7 @@ class Scene(DirectObject):
             enable_shadows=True)
         base.graphicsEngine.renderFrame()
         base.graphicsEngine.renderFrame()
-        fname = self.__class__.__name__
+        fname = self.__json_name
         if not exists('assets/images/scenes'):
             makedirs('assets/images/scenes')
         buffer.save_screenshot('assets/images/scenes/%s.png' % fname)
@@ -593,7 +599,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())
+        self.__persistent.save_scene(self.__json_name, self.version(self.__json_name))
         loader.load_sfx('assets/audio/sfx/success.ogg').play()
         self._paused = True
         self.__store_state()
@@ -648,9 +654,9 @@ class Scene(DirectObject):
             clickSound=loader.load_sfx('assets/audio/sfx/click.ogg'))
         self._pos_mgr.register('replay', LibP3d.wdg_pos(btn))
         btn.set_transparency(True)
-        enabled = self._scenes.index(self.__class__) < len(self._scenes) - 1
+        enabled = self._scenes.index(self.__json_name) < len(self._scenes) - 1
         if enabled:
-            next_scene = self._scenes[self._scenes.index(self.__class__) + 1]
+            next_scene = self._scenes[self._scenes.index(self.__json_name) + 1]
         else:
             next_scene = None
         imgs = [self.__load_img_btn('right', col) for col in colors]
@@ -766,12 +772,12 @@ class Scene(DirectObject):
         taskMgr.doMethodLater(.01, frame_after, 'frame after')
 
     def _define_test_items(self):
-        if not self.__class__.json:
-            with open(self.__class__.filename) as f:
-                self.__class__.json = loads(f.read())
-        for item in self.__class__.json['test_items']['pixel_space']:
+        if not self.__json_name in self.__class__.json_files:
+            with open(self.__class__.filename(self.__json_name)) as f:
+                self.__class__.json_files[self.__json_name] = loads(f.read())
+        for item in self.__class__.json_files[self.__json_name]['test_items']['pixel_space']:
             self._pos_mgr.register(item['id'], tuple(item['position']))
-        for item in self.__class__.json['test_items']['world_space']:
+        for item in self.__class__.json_files[self.__json_name]['test_items']['world_space']:
             self._set_test_item(item['id'], tuple(item['position']))
 
     def _set_test_item(self, name, pos):
diff --git a/pmachines/scenes/__init__.py b/pmachines/scenes/__init__.py
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/pmachines/scenes/scene_basketball.py b/pmachines/scenes/scene_basketball.py
deleted file mode 100644 (file)
index dbea5f6..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-from pmachines.scene import Scene
-
-
-class SceneBasketBall(Scene):
-
-    filename = 'assets/scenes/basketball.json'
-
-    # @staticmethod
-    # def name():
-    #     return _('Basket ball')
-
-    # def _set_items(self):
-    #     super()._set_items()
-        #self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=5, count=2)]
-        #self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=9)]
-        #self.items += [Basketball(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=1)]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-.56, 0, .21))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(1.67, 0, .21))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-.56, 0, -1.45))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(1.67, 0, -1.45))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-4.45, 0, -3.18), r=27, restitution=1)]
-        #self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-5.45, 0, -3.18), restitution=1)]
-        #self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(3.78, 0, -1.45))]
-        #self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=9)]
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.61, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.06, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(0.91, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(1.73, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(2.57, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 30))
-        #self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.61, 0, .73), r=37)]
-        #self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        #self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.06, 0, .78))]
-        #self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        #self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(0.91, 0, .78))]
-        #self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        #self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(1.73, 0, .78))]
-        #self.items[-1].set_strategy(UpStrategy(self.items[-1]._np, 30))
-        #self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(2.57, 0, .78))]
-        #self.items[-1].set_strategy(UpStrategy(self.items[-1]._np, 30))
-        #self.items += [Basketball(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-        #self.items += [TeeterTooter(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-
-    # def _define_test_items(self):
-    #     self._pos_mgr.register('drag_start_0', (55, 50))
-    #     self._set_test_item('drag_stop_0', (-.42, 1.03))
-    #     self._set_test_item('drag_stop_1', (-4.19, 4.66))
-
-    # def _instr_txt(self):
-    #     txt = _('Scene: ') + self.name() + '\n\n'
-    #     txt += _('Goal: you must hit every domino piece\n\n')
-    #     txt += _('keep \5mouse_l\5 pressed to drag an item\n\n'
-    #             'keep \5mouse_r\5 pressed to rotate an item')
-    #     return txt
-
-    # def _win_condition(self):
-    #     return all(itm.strategy.win_condition() for itm in self.items) and not self._paused
diff --git a/pmachines/scenes/scene_box.py b/pmachines/scenes/scene_box.py
deleted file mode 100644 (file)
index a2ee10b..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-from pmachines.scene import Scene
-
-
-class SceneBox(Scene):
-
-    filename = 'assets/scenes/box.json'
-
-    # @staticmethod
-    # def name():
-    #     return _('Box')
-
-    # def _set_items(self):
-    #     super()._set_items()
-        # self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-        #self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(.46, 0, -3.95))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(4.43, 0, -3.95))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-1.29, 0, .26), r=28.45)]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(2.15, 0, -1.49), r=28.45)]
-        # self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-1.55, 0, 1.23), friction=.4)]
-        # self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(4.38, 0, -3.35))]
-        # self.items[-1].set_strategy(HitStrategy(self.items[-2], self.items[-1].node, self.items[-1]._world))
-        #self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=2)]
-        #self.items += [TargetDomino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-1.14, 0, -.04), tgt_degrees=60)]
-        #self.items += [TargetDomino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.49, 0, -.04), tgt_degrees=60)]
-        #self.items += [TargetDomino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(0.94, 0, -.04), tgt_degrees=60)]
-        #self.items += [TargetDomino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(1.55, 0, -.04), tgt_degrees=60)]
-        #self.items += [TargetDomino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(2.09, 0, -.04), tgt_degrees=88)]
-        #self.items += [Basketball(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-        #self.items += [TeeterTooter(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-
-    # def _define_test_items(self):
-    #     self._pos_mgr.register('drag_start_0', (65, 60))
-    #     self._set_test_item('drag_stop_0', (.42, -3.29))
-    #     self._set_test_item('drag_stop_1', (.42, -2.18))
-    #     self._set_test_item('drag_stop_2', (.35, -1.06))
-
-    # def _instr_txt(self):
-    #     txt = _('Scene: ') + self.name() + '\n\n'
-    #     txt += _('Goal: the left box must hit the right box\n\n')
-    #     txt += _('keep \5mouse_l\5 pressed to drag an item\n\n'
-    #             'keep \5mouse_r\5 pressed to rotate an item')
-    #     return txt
-
-    # def _win_condition(self):
-    #     return all(itm.strategy.win_condition() for itm in self.items) and not self._paused
diff --git a/pmachines/scenes/scene_domino.py b/pmachines/scenes/scene_domino.py
deleted file mode 100644 (file)
index 7b4038b..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-from pmachines.scene import Scene
-
-
-class SceneDomino(Scene):
-
-    filename = 'assets/scenes/domino.json'
-
-    # @staticmethod
-    # def name():
-    #     return _('Domino')
-
-    # def _set_items(self):
-    #     super()._set_items()
-        #self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-        #self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-        #self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-1.2, 0, -.6))]
-        #self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(1.2, 0, -.6))]
-        #self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=2)]
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-1.14, 0, -.04))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 60))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.49, 0, -.04))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 60))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(0.94, 0, -.04))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 60))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(1.55, 0, -.04))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 60))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(2.09, 0, -.04))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 88))
-        #self.items += [Basketball(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-        #self.items += [TeeterTooter(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-
-    # def _define_test_items(self):
-    #     self._pos_mgr.register('drag_start_0', (35, 60))
-    #     self._set_test_item('drag_stop_0', (-1.82, .06))
-    #     self._set_test_item('drag_stop_1', (.49, .06))
-    #     self._set_test_item('drag_stop_2', (-1.54, .06))
-    #     self._set_test_item('drag_start_1', (-1.54, .4))
-    #     self._set_test_item('drag_stop_3', (-1.05, .4))
-
-    # def _instr_txt(self):
-    #     txt = _('Scene: ') + self.name() + '\n\n'
-    #     txt += _('Goal: every domino piece must fall\n\n')
-    #     txt += _('keep \5mouse_l\5 pressed to drag an item\n\n'
-    #             'keep \5mouse_r\5 pressed to rotate an item')
-    #     return txt
-
-    # def _win_condition(self):
-    #     return all(itm.strategy.win_condition() for itm in self.items) and not self._paused
diff --git a/pmachines/scenes/scene_domino_box.py b/pmachines/scenes/scene_domino_box.py
deleted file mode 100644 (file)
index 0094f22..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-from pmachines.scene import Scene
-
-
-class SceneDominoBox(Scene):
-
-    filename = 'assets/scenes/domino_box.json'
-
-    # @staticmethod
-    # def name():
-    #     return _('Domino and box')
-
-    # def _set_items(self):
-    #     super()._set_items()
-        #self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=5, count=2)]
-        #self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=9)]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-.56, 0, .21))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(1.67, 0, .21))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-.56, 0, -1.45))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(1.67, 0, -1.45))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(3.78, 0, -1.45))]
-        #self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=9)]
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.61, 0, -.94), r=37)]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.06, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(0.91, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(1.73, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(2.57, 0, -.89))]
-        # self.items[-1].set_strategy(UpStrategy(self.items[-1]._np, 30))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.61, 0, .73), r=37)]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.06, 0, .78))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(0.91, 0, .78))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(1.73, 0, .78))]
-        # self.items[-1].set_strategy(UpStrategy(self.items[-1]._np, 30))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(2.57, 0, .78))]
-        # self.items[-1].set_strategy(UpStrategy(self.items[-1]._np, 30))
-        #self.items += [Basketball(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-        #self.items += [TeeterTooter(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-
-    # def _define_test_items(self):
-    #     self._pos_mgr.register('drag_start_0', (65, 60))
-    #     self._set_test_item('drag_stop_0', (3.21, -.78))
-    #     self._set_test_item('drag_stop_1', (3.21, .33))
-    #     self._set_test_item('drag_stop_2', (2.16, 1.87))
-
-    # def _instr_txt(self):
-    #     txt = _('Scene: ') + self.name() + '\n\n'
-    #     txt += _('Goal: only the last piece of each row must be up\n\n')
-    #     txt += _('keep \5mouse_l\5 pressed to drag an item\n\n'
-    #             'keep \5mouse_r\5 pressed to rotate an item')
-    #     return txt
-
-    # def _win_condition(self):
-    #     return all(itm.strategy.win_condition() for itm in self.items) and not self._paused
diff --git a/pmachines/scenes/scene_domino_box_basketball.py b/pmachines/scenes/scene_domino_box_basketball.py
deleted file mode 100644 (file)
index ed189c3..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-from pmachines.scene import Scene
-
-
-class SceneDominoBoxBasketball(Scene):
-
-    filename = 'assets/scenes/domino_box_basketball.json'
-
-    # @staticmethod
-    # def name():
-    #     return _('Domino, box and basket ball')
-
-    # def _set_items(self):
-    #     super()._set_items()
-        #self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=1, mass=5)]
-        #self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=1)]
-        # self.items += [Basketball(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.3, 1, 2.5))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-.56, 0, -1.45))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(1.67, 0, -1.45))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(3.78, 0, -1.45))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(1.48, 0, .38), r=-90)]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(2.62, 0, .05))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(4.88, 0, .05))]
-        #self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=9)]
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(1.68, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(2.35, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(3.08, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(3.78, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(4.53, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        #self.items += [Basketball(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-        #self.items += [TeeterTooter(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-
-    # def _define_test_items(self):
-    #     self._pos_mgr.register('drag_start_0', (65, 60))
-    #     self._pos_mgr.register('drag_start_1', (30, 60))
-    #     self._set_test_item('drag_stop_0', (-1.4, -.78))
-    #     self._set_test_item('drag_stop_1', (-1.26, .2))
-    #     self._set_test_item('drag_stop_2', (-.28, -.78))
-    #     self._set_test_item('drag_start_2', (-.28, -.57))
-    #     self._set_test_item('drag_stop_3', (-.77, -.57))
-    #     self._set_test_item('drag_start_3', (-.28, -.85))
-    #     self._set_test_item('drag_stop_4', (-.42, -.85))
-
-    # def _instr_txt(self):
-    #     txt = _('Scene: ') + self.name() + '\n\n'
-    #     txt += _('Goal: every domino piece must be hit\n\n')
-    #     txt += _('keep \5mouse_l\5 pressed to drag an item\n\n'
-    #             'keep \5mouse_r\5 pressed to rotate an item')
-    #     return txt
-
-    # def _win_condition(self):
-    #     return all(itm.strategy.win_condition() for itm in self.items) and not self._paused
diff --git a/pmachines/scenes/scene_teeter_domino_box_basketball.py b/pmachines/scenes/scene_teeter_domino_box_basketball.py
deleted file mode 100644 (file)
index 1910e05..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-from pmachines.scene import Scene
-
-
-class SceneTeeterDominoBoxBasketball(Scene):
-
-    filename = 'assets/scenes/teeter_domino_box_basketball.json'
-
-    # @staticmethod
-    # def name():
-    #     return _('Teeter tooter, domino, box and basket ball')
-
-    # def _set_items(self):
-    #     super()._set_items()
-        #self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=3, count=2, friction=1)]
-        # self.items += [Basketball(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(.98, 1, 1.02))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-6.24, 0, -1.45))]
-        # self.items += [TeeterTooter(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-6.24, 0, -1.20))]
-        #self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=1, r=24.60, friction=1, pos=(-6.15, 0, -.93))]
-        # self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=.3, friction=1, model_scale=.5, pos=(-5.38, 0, -.93), r=24.60)]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(5.37, 0, -.78))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(7.48, 0, -.78))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(4.74, 0, -1.95))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(6.88, 0, -1.95))]
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=1, pos=(4.83, 0, -1.39))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=1, pos=(5.67, 0, -1.39))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=1, pos=(6.59, 0, -1.39))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(.53, 0, -1.95), restitution=.95)]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(2.63, 0, -1.95), restitution=.95)]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-3.65, 0, 1.05), r=28, friction=0)]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-1.27, 0, 1.72), restitution=.95)]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(.88, 0, 1.72), restitution=.95)]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-1.67, 0, .55), restitution=.95)]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(.52, 0, .55), restitution=.95)]
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=.5, pos=(-1.73, 0, 1.11))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=.5, pos=(-.97, 0, 1.11))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=.5, pos=(-.1, 0, 1.11))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-
-    # def _define_test_items(self):
-    #     self._pos_mgr.register('drag_start_0', (60, 60))
-    #     self._set_test_item('drag_stop_0', (-7.33, 4.24))
-    #     self._set_test_item('drag_stop_1', (-7.12, 4.24))
-    #     self._set_test_item('drag_start_1', (-6.77, 4.66))
-    #     self._set_test_item('drag_stop_2', (-6.77, 4.24))
-
-    # def _instr_txt(self):
-    #     txt = _('Scene: ') + self.name() + '\n\n'
-    #     txt += _('Goal: every domino piece must be hit\n\n')
-    #     txt += _('keep \5mouse_l\5 pressed to drag an item\n\n'
-    #             'keep \5mouse_r\5 pressed to rotate an item')
-    #     return txt
-
-    # def _win_condition(self):
-    #     return all(itm.strategy.win_condition() for itm in self.items) and not self._paused
diff --git a/pmachines/scenes/scene_teeter_tooter.py b/pmachines/scenes/scene_teeter_tooter.py
deleted file mode 100644 (file)
index 0db91d0..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-from pmachines.scene import Scene
-
-
-class SceneTeeterTooter(Scene):
-
-    filename = 'assets/scenes/teeter_tooter.json'
-
-    # @staticmethod
-    # def name():
-    #     return _('Teeter tooter')
-
-    # def _set_items(self):
-    #     super()._set_items()
-        #self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=3, count=1, friction=1)]
-        #self.items += [TeeterTooter(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=5, count=2)]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-2.76, 0, -1.45))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-.56, 0, -1.45))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(2.27, 0, -.28))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(4.38, 0, -.28))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(1.67, 0, -1.45))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(3.78, 0, -1.45))]
-        # self.items += [TeeterTooter(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-2.74, 0, -1.20))]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=1, r=-25.30, friction=1, pos=(-2.78, 0, -.93))]
-        # self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=.2, friction=1, model_scale=.5, pos=(-3.61, 0, -.99), r=-25.30)]
-        # self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-.25, 0, -.57), r=52)]
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(1.73, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(2.57, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        # self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(3.50, 0, -.89))]
-        # self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
-        #self.items += [Basketball(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-        #self.items += [TeeterTooter(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
-
-    # def _define_test_items(self):
-    #     self._pos_mgr.register('drag_start_0', (60, 60))
-    #     self._set_test_item('drag_stop_0', (-2.65, 1.18))
-    #     self._set_test_item('drag_stop_1', (-2.65, 3.27))
-    #     self._set_test_item('drag_start_1', (-2.3, 3.75))
-    #     self._set_test_item('drag_stop_2', (-2.5, 3.66))
-
-    # def _instr_txt(self):
-    #     txt = _('Scene: ') + self.name() + '\n\n'
-    #     txt += _('Goal: you must hit every domino piece\n\n')
-    #     txt += _('keep \5mouse_l\5 pressed to drag an item\n\n'
-    #             'keep \5mouse_r\5 pressed to rotate an item')
-    #     return txt
-
-    # def _win_condition(self):
-    #     return all(itm.strategy.win_condition() for itm in self.items) and not self._paused
diff --git a/prj.org b/prj.org
index 76b79b35312f4c1988efe05db4784ba8a8ae3e92..74164e7093c93fff1f600ef0447ebf5fb74b5653 100644 (file)
--- a/prj.org
+++ b/prj.org
@@ -4,7 +4,6 @@
 #+TAGS: bug(b) calendar(c) waiting(w)
 
 * DOING editor
-- [ ] remove scene files (.py)
 - [ ] edit level (button)
 - [ ] global level editor (title, description)
 - [ ] version is the hash of the json file
index 307c25b9c0285f206e2e57c3986aa2a3370e449e..297b18a81b3c7b6e3330f8df84fe9e5da163ed30 100644 (file)
@@ -2,8 +2,8 @@ from os import system
 from multiprocessing import Pool
 
 
-def do_screenshot(cls):
-    system('python main.py --screenshot ' + cls.__name__)
+def do_screenshot(scene_name):
+    system('python main.py --screenshot ' + scene_name)
 
 
 def build_screenshots(scene_classes):