Mercurial > pyntnclick
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 |