comparison gamelib/state.py @ 167:5845a3ed4dad

Inventory interaction can (surprisingly) affect the inventory
author Neil Muller <neil@dip.sun.ac.za>
date Wed, 25 Aug 2010 12:21:16 +0200
parents 0db92b3b5833
children c6ea3b11514c
comparison
equal deleted inserted replaced
166:0db92b3b5833 167:5845a3ed4dad
118 self.inventory.remove(self.items[name]) 118 self.inventory.remove(self.items[name])
119 # Unselect tool if it's removed 119 # Unselect tool if it's removed
120 if self.tool == self.items[name]: 120 if self.tool == self.items[name]:
121 self.set_tool(None) 121 self.set_tool(None)
122 122
123 def replace_inventory_item(self, old_item, new_item):
124 """Try to replace an item in the inventory with a new one"""
125 try:
126 index = self.inventory.index(old_item)
127 self.inventory[index] = new_item
128 if self.tool == old_item:
129 self.set_tool(new_item)
130 except ValueError:
131 return False
132 return True
133
123 def set_tool(self, item): 134 def set_tool(self, item):
124 self.tool = item 135 self.tool = item
125 if item is None: 136 if item is None:
126 self.screen.set_cursor(HAND) 137 self.screen.set_cursor(HAND)
127 else: 138 else:
549 # TODO: needs cursor 560 # TODO: needs cursor
550 561
551 def get_inventory_image(self): 562 def get_inventory_image(self):
552 return self.inventory_image 563 return self.inventory_image
553 564
554 def interact(self, tool): 565 def interact(self, tool, state):
555 handler = getattr(self, 'interact_with_' + tool.name, None) 566 handler = getattr(self, 'interact_with_' + tool.name, None)
556 inverse_handler = getattr(tool, 'interact_with_' + self.name, None) 567 inverse_handler = getattr(tool, 'interact_with_' + self.name, None)
557 if handler is not None: 568 if handler is not None:
558 return handler(tool) 569 return handler(tool, state)
559 elif inverse_handler is not None: 570 elif inverse_handler is not None:
560 return inverse_handler(self) 571 return inverse_handler(self, state)
561 else: 572 else:
562 return self.interact_default(tool) 573 return self.interact_default(tool, state)
563 574
564 def interact_default(self, tool): 575 def interact_default(self, tool, state):
565 return Result("That doesn't do anything useful") 576 return Result("That doesn't do anything useful")
566 577