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):