Mercurial > boomslang
comparison gamelib/tests/game_logic_utils.py @ 724:11daadcb06d6 pyntnclick
We can now walk through until we hit the first JimLabel
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Tue, 15 Jan 2013 21:54:10 +0200 |
parents | b2e362eacfe9 |
children | 657b4da736bc |
comparison
equal
deleted
inserted
replaced
723:4203fbf11b86 | 724:11daadcb06d6 |
---|---|
15 | 15 |
16 def setUp(self): | 16 def setUp(self): |
17 # Events require us to initialize the display | 17 # Events require us to initialize the display |
18 pygame.display.init() | 18 pygame.display.init() |
19 | 19 |
20 self.state = gamelib.main.SuspendedSentence().initial_state() | 20 self.game_description = gamelib.main.SuspendedSentence() |
21 self.state = self.game_description.initial_state() | |
21 self.state.current_scene = self.state.scenes[self.CURRENT_SCENE] | 22 self.state.current_scene = self.state.scenes[self.CURRENT_SCENE] |
23 | |
24 # We aren't handling events, monkey patch change_scene | |
25 def change_scene(name): | |
26 self.state.current_scene = self.state.scenes[name] | |
27 self.state.change_scene = change_scene | |
22 | 28 |
23 def tearDown(self): | 29 def tearDown(self): |
24 for item in self.state.items.values(): | 30 for item in self.state.items.values(): |
25 if isinstance(item, pyntnclick.state.CloneableItem): | 31 if isinstance(item, pyntnclick.state.CloneableItem): |
26 type(item)._counter = 0 | 32 type(item)._counter = 0 |
31 gizmo = gizmo.things[thing] | 37 gizmo = gizmo.things[thing] |
32 gizmo.set_data(key, value) | 38 gizmo.set_data(key, value) |
33 | 39 |
34 def assert_game_data(self, key, value, thing=None, scene=None): | 40 def assert_game_data(self, key, value, thing=None, scene=None): |
35 gizmo = self.state.current_scene | 41 gizmo = self.state.current_scene |
36 if self.state.current_detail is not None: | |
37 gizmo = self.state.current_detail | |
38 if scene is not None: | 42 if scene is not None: |
39 gizmo = self.state.scenes[scene] | 43 gizmo = self.state.scenes[scene] |
40 if thing is not None: | 44 if thing is not None: |
41 gizmo = gizmo.things[thing] | 45 gizmo = gizmo.things[thing] |
42 self.assertEquals(value, gizmo.get_data(key)) | 46 self.assertEquals(value, gizmo.get_data(key)) |
46 | 50 |
47 def assert_scene_thing(self, thing, in_scene=True): | 51 def assert_scene_thing(self, thing, in_scene=True): |
48 self.assertEquals(in_scene, thing in self.state.current_scene.things) | 52 self.assertEquals(in_scene, thing in self.state.current_scene.things) |
49 | 53 |
50 def assert_detail_thing(self, thing, in_detail=True): | 54 def assert_detail_thing(self, thing, in_detail=True): |
55 return | |
51 self.assertEquals(in_detail, thing in self.state.current_detail.things) | 56 self.assertEquals(in_detail, thing in self.state.current_detail.things) |
52 | 57 |
53 def assert_item_exists(self, item, exists=True): | 58 def assert_item_exists(self, item, exists=True): |
54 self.assertEquals(exists, item in self.state.items) | 59 self.assertEquals(exists, item in self.state.items) |
55 | 60 |
56 def assert_current_scene(self, scene): | 61 def assert_current_scene(self, scene): |
57 self.assertEquals(scene, self.state.current_scene.name) | 62 self.assertEquals(scene, self.state.current_scene.name) |
58 | 63 |
59 def assert_current_detail(self, scene): | 64 def assert_current_detail(self, scene): |
60 self.assertEquals(scene, self.state.current_detail.name) | 65 # TODO: Delete? |
66 return | |
61 | 67 |
62 def handle_result(self, result): | 68 def handle_result(self, result): |
63 if result is None: | 69 if result is None: |
64 return None | 70 return None |
65 if hasattr(result, 'process'): | 71 if hasattr(result, 'process'): |
66 if result.detail_view: | 72 if result.detail_view: |
67 self.state.set_current_detail(result.detail_view) | 73 self.state.show_detail(result.detail_view) |
68 return result | 74 return result |
69 return [self.handle_result(r) for r in result] | 75 return [self.handle_result(r) for r in result] |
70 | 76 |
71 def interact_thing(self, thing, item=None): | 77 def interact_thing(self, thing, item=None, detail=None): |
72 item_obj = None | 78 item_obj = None |
73 if item is not None: | 79 if item is not None: |
74 self.assert_inventory_item(item) | 80 self.assert_inventory_item(item) |
75 item_obj = self.state.items[item] | 81 item_obj = self.state.items[item] |
76 thing_container = self.state.current_detail or self.state.current_scene | 82 thing_container = self.state.current_scene |
83 if detail is not None: | |
84 thing_container = self.state.detail_views[detail] | |
77 result = thing_container.things[thing].interact(item_obj) | 85 result = thing_container.things[thing].interact(item_obj) |
78 return self.handle_result(result) | 86 return self.handle_result(result) |
79 | 87 |
80 def interact_item(self, target_item, item): | 88 def interact_item(self, target_item, item): |
81 self.assert_inventory_item(target_item) | 89 self.assert_inventory_item(target_item) |
83 target_obj = self.state.items[target_item] | 91 target_obj = self.state.items[target_item] |
84 result = target_obj.interact(item_obj) | 92 result = target_obj.interact(item_obj) |
85 return self.handle_result(result) | 93 return self.handle_result(result) |
86 | 94 |
87 def close_detail(self): | 95 def close_detail(self): |
88 self.state.set_current_detail(None) | 96 # TODO: Delete? |
97 return |