Commit | Line | Data |
---|---|---|
a5fddddc FC |
1 | from pmachines.scene import Scene |
2 | from pmachines.items.box import Box | |
3 | from pmachines.items.shelf import Shelf | |
4 | from pmachines.items.domino import Domino, UpStrategy, DownStrategy | |
5 | from pmachines.items.basketball import Basketball | |
6 | from pmachines.items.teetertooter import TeeterTooter | |
7 | ||
8 | ||
9 | class SceneTeeterDominoBoxBasketball(Scene): | |
10 | ||
11 | sorting = 6 | |
12 | ||
13 | @staticmethod | |
14 | def name(): | |
15 | return _('Teeter tooter, domino, box and basket ball') | |
16 | ||
17 | def _set_items(self): | |
18 | self.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)] | |
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 | ||
49 | def _instr_txt(self): | |
50 | txt = _('Scene: ') + self.name() + '\n\n' | |
51 | txt += _('Goal: every domino piece must be hit\n\n') | |
52 | txt += _('keep \5mouse_l\5 pressed to drag an item\n\n' | |
53 | 'keep \5mouse_r\5 pressed to rotate an item') | |
54 | return txt | |
55 | ||
56 | def _win_condition(self): | |
57 | return all(itm.strategy.win_condition() for itm in self.items) and not self._paused |