Mercurial > pyntnclick
comparison gamelib/gamescreen.py @ 201:9531a22721d1
Add support for lists of results
author | Neil Muller <neil@dip.sun.ac.za> |
---|---|
date | Thu, 26 Aug 2010 10:54:25 +0200 |
parents | c56a0170f0cb |
children | 407d23635343 |
comparison
equal
deleted
inserted
replaced
200:7bedca2376f5 | 201:9531a22721d1 |
---|---|
12 | 12 |
13 from constants import SCREEN, BUTTON_SIZE, SCENE_SIZE | 13 from constants import SCREEN, BUTTON_SIZE, SCENE_SIZE |
14 from cursor import CursorWidget | 14 from cursor import CursorWidget |
15 from hand import HandButton | 15 from hand import HandButton |
16 from popupmenu import PopupMenu, PopupMenuButton | 16 from popupmenu import PopupMenu, PopupMenuButton |
17 from state import initial_state, Item | 17 from state import initial_state, Item, handle_result |
18 from widgets import MessageDialog | 18 from widgets import MessageDialog |
19 | |
19 | 20 |
20 class InventoryView(PaletteView): | 21 class InventoryView(PaletteView): |
21 | 22 |
22 sel_color = Color("yellow") | 23 sel_color = Color("yellow") |
23 sel_width = 2 | 24 sel_width = 2 |
38 if self.item_is_selected(item_no): | 39 if self.item_is_selected(item_no): |
39 self.unselect() | 40 self.unselect() |
40 else: | 41 else: |
41 if self.state.tool: | 42 if self.state.tool: |
42 result = self.state.inventory[item_no].interact(self.state.tool, self.state) | 43 result = self.state.inventory[item_no].interact(self.state.tool, self.state) |
43 if result: | 44 handle_result(result, self.state_widget) |
44 result.process(self.state_widget) | |
45 else: | 45 else: |
46 self.state.set_tool(self.state.inventory[item_no]) | 46 self.state.set_tool(self.state.inventory[item_no]) |
47 | 47 |
48 def item_is_selected(self, item_no): | 48 def item_is_selected(self, item_no): |
49 return self.state.tool is self.state.inventory[item_no] | 49 return self.state.tool is self.state.inventory[item_no] |
71 self.remove(self.detail) | 71 self.remove(self.detail) |
72 self.state.set_current_detail(None) | 72 self.state.set_current_detail(None) |
73 self._mouse_move(event.pos) | 73 self._mouse_move(event.pos) |
74 else: | 74 else: |
75 result = self.state.interact(event.pos) | 75 result = self.state.interact(event.pos) |
76 if result: | 76 handle_result(result, self) |
77 result.process(self) | |
78 | 77 |
79 def animate(self): | 78 def animate(self): |
80 if self.state.animate(): | 79 if self.state.animate(): |
81 # queue a redraw | 80 # queue a redraw |
82 self.invalidate() | 81 self.invalidate() |
83 # We do this here so we can get enter and leave events regardless | 82 # We do this here so we can get enter and leave events regardless |
84 # of what happens | 83 # of what happens |
85 result = self.state.check_enter_leave(self.screen) | 84 result = self.state.check_enter_leave(self.screen) |
86 if result: | 85 handle_result(result, self) |
87 result.process(self) | |
88 | 86 |
89 def mouse_move(self, event): | 87 def mouse_move(self, event): |
90 if not self.subwidgets: | 88 if not self.subwidgets: |
91 self._mouse_move(event.pos) | 89 self._mouse_move(event.pos) |
92 | 90 |
132 def mouse_down(self, event): | 130 def mouse_down(self, event): |
133 if event.button != 1: # We have a right/middle click | 131 if event.button != 1: # We have a right/middle click |
134 self.state.set_tool(None) | 132 self.state.set_tool(None) |
135 return | 133 return |
136 result = self.state.interact_detail(self.global_to_local(event.pos)) | 134 result = self.state.interact_detail(self.global_to_local(event.pos)) |
137 if result: | 135 handle_result(result, self) |
138 result.process(self) | |
139 | 136 |
140 def mouse_move(self, event): | 137 def mouse_move(self, event): |
141 self._mouse_move(event.pos) | 138 self._mouse_move(event.pos) |
142 | 139 |
143 def _mouse_move(self, pos): | 140 def _mouse_move(self, pos): |