ya2 · news · projects · code · about

entities component
[pmachines.git] / entities / scenes / scene_domino_box.py
CommitLineData
78589fb1
FC
1from entities.scene import Scene
2from entities.items.box import Box
3from entities.items.shelf import Shelf
4from entities.items.domino import Domino, UpStrategy, DownStrategy
5from entities.items.basketball import Basketball
6from entities.items.teetertooter import TeeterTooter
3211f3f3
FC
7
8
9class SceneDominoBox(Scene):
10
3211f3f3
FC
11 @staticmethod
12 def name():
13 return _('Domino and box')
14
15 def _set_items(self):
16 self.items = []
17 self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=5, count=2)]
18 #self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=9)]
19 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-.56, 0, .21))]
20 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(1.67, 0, .21))]
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))]
22 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))]
23 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))]
24 #self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=9)]
0e86689f
FC
25 self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.61, 0, -.94), r=37)]
26 self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
27 self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.06, 0, -.89))]
28 self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
29 self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(0.91, 0, -.89))]
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, pos=(1.73, 0, -.89))]
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, pos=(2.57, 0, -.89))]
34 self.items[-1].set_strategy(UpStrategy(self.items[-1]._np, 30))
35 self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.61, 0, .73), r=37)]
36 self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
37 self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(-.06, 0, .78))]
38 self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
39 self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(0.91, 0, .78))]
40 self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
41 self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(1.73, 0, .78))]
42 self.items[-1].set_strategy(UpStrategy(self.items[-1]._np, 30))
43 self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(2.57, 0, .78))]
44 self.items[-1].set_strategy(UpStrategy(self.items[-1]._np, 30))
3211f3f3
FC
45 #self.items += [Basketball(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
46 #self.items += [TeeterTooter(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, count=3)]
47
48 def _instr_txt(self):
49 txt = _('Scene: ') + self.name() + '\n\n'
0e86689f 50 txt += _('Goal: only the last piece of each row must be up\n\n')
3211f3f3
FC
51 txt += _('keep \5mouse_l\5 pressed to drag an item\n\n'
52 'keep \5mouse_r\5 pressed to rotate an item')
53 return txt
0e86689f 54
0a0994e4
FC
55 def _win_condition(self):
56 return all(itm.strategy.win_condition() for itm in self.items) and not self._paused