comparison gamelib/gamescreen.py @ 166:0db92b3b5833

Add inventory interactions
author Neil Muller <neil@dip.sun.ac.za>
date Wed, 25 Aug 2010 12:03:08 +0200
parents 5184d30669b5
children 5845a3ed4dad
comparison
equal deleted inserted replaced
165:9b3bba5e65f3 166:0db92b3b5833
20 class InventoryView(PaletteView): 20 class InventoryView(PaletteView):
21 21
22 sel_color = Color("yellow") 22 sel_color = Color("yellow")
23 sel_width = 2 23 sel_width = 2
24 24
25 def __init__(self, state): 25 def __init__(self, state, scene_widget):
26 PaletteView.__init__(self, (BUTTON_SIZE, BUTTON_SIZE), 1, 6, scrolling=True) 26 PaletteView.__init__(self, (BUTTON_SIZE, BUTTON_SIZE), 1, 6, scrolling=True)
27 self.state = state 27 self.state = state
28 self.scene_widget = scene_widget
28 29
29 def num_items(self): 30 def num_items(self):
30 return len(self.state.inventory) 31 return len(self.state.inventory)
31 32
32 def draw_item(self, surface, item_no, rect): 33 def draw_item(self, surface, item_no, rect):
35 36
36 def click_item(self, item_no, event): 37 def click_item(self, item_no, event):
37 if self.item_is_selected(item_no): 38 if self.item_is_selected(item_no):
38 self.unselect() 39 self.unselect()
39 else: 40 else:
40 self.state.set_tool(self.state.inventory[item_no]) 41 if self.state.tool:
42 result = self.state.inventory[item_no].interact(self.state.tool)
43 if result:
44 result.process(self.scene_widget)
45 else:
46 self.state.set_tool(self.state.inventory[item_no])
41 47
42 def item_is_selected(self, item_no): 48 def item_is_selected(self, item_no):
43 return self.state.tool is self.state.inventory[item_no] 49 return self.state.tool is self.state.inventory[item_no]
44 50
45 def unselect(self): 51 def unselect(self):
162 self.menubutton = PopupMenuButton('Menu', 168 self.menubutton = PopupMenuButton('Menu',
163 action=self.popup_menu.show_menu) 169 action=self.popup_menu.show_menu)
164 170
165 self.handbutton = HandButton(action=self.hand_pressed) 171 self.handbutton = HandButton(action=self.hand_pressed)
166 172
167 self.inventory = InventoryView(self.state) 173 self.inventory = InventoryView(self.state, self.state_widget)
168 174
169 self.toolbar = ToolBar([ 175 self.toolbar = ToolBar([
170 self.menubutton, 176 self.menubutton,
171 self.handbutton, 177 self.handbutton,
172 self.inventory, 178 self.inventory,