Commit | Line | Data |
---|---|---|
4586cbf6 FC |
1 | from pmachines.scene import Scene |
2 | from pmachines.items.box import Box | |
3 | from pmachines.items.shelf import Shelf | |
c991401b | 4 | from pmachines.items.domino import Domino, DownStrategy |
4586cbf6 FC |
5 | from pmachines.items.basketball import Basketball |
6 | from pmachines.items.teetertooter import TeeterTooter | |
a5fddddc FC |
7 | |
8 | ||
9 | class SceneTeeterDominoBoxBasketball(Scene): | |
10 | ||
da03f030 | 11 | filename = 'assets/scenes/teeter_domino_box_basketball.json' |
92c29685 | 12 | |
a5fddddc FC |
13 | @staticmethod |
14 | def name(): | |
15 | return _('Teeter tooter, domino, box and basket ball') | |
16 | ||
17 | def _set_items(self): | |
25c59f4a FC |
18 | super()._set_items() |
19 | #self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=3, count=2, friction=1)] | |
a5fddddc FC |
20 | self.items += [Basketball(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(.98, 1, 1.02))] |
21 | 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))] | |
22 | 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))] | |
23 | 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))] | |
24 | 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)] | |
25 | self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(5.37, 0, -.78))] | |
26 | self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(7.48, 0, -.78))] | |
27 | 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))] | |
28 | 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))] | |
29 | 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))] | |
30 | self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35)) | |
31 | 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))] | |
32 | self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35)) | |
33 | 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))] | |
34 | self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35)) | |
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)] | |
36 | 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)] | |
37 | 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)] | |
38 | 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)] | |
39 | 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)] | |
40 | 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)] | |
41 | 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)] | |
42 | 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))] | |
43 | self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35)) | |
44 | self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=.5, pos=(-.97, 0, 1.11))] | |
45 | self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35)) | |
46 | self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=.5, pos=(-.1, 0, 1.11))] | |
47 | self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35)) | |
48 | ||
da03f030 FC |
49 | # def _define_test_items(self): |
50 | # self._pos_mgr.register('drag_start_0', (60, 60)) | |
51 | # self._set_test_item('drag_stop_0', (-7.33, 4.24)) | |
52 | # self._set_test_item('drag_stop_1', (-7.12, 4.24)) | |
53 | # self._set_test_item('drag_start_1', (-6.77, 4.66)) | |
54 | # self._set_test_item('drag_stop_2', (-6.77, 4.24)) | |
067a36db | 55 | |
a5fddddc FC |
56 | def _instr_txt(self): |
57 | txt = _('Scene: ') + self.name() + '\n\n' | |
58 | txt += _('Goal: every domino piece must be hit\n\n') | |
59 | txt += _('keep \5mouse_l\5 pressed to drag an item\n\n' | |
60 | 'keep \5mouse_r\5 pressed to rotate an item') | |
61 | return txt | |
62 | ||
63 | def _win_condition(self): | |
64 | return all(itm.strategy.win_condition() for itm in self.items) and not self._paused |