comparison pyntnclick/state.py @ 677:a8c42709a689 pyntnclick

Event-driven inventory management magic. No more inventory recreation every frame!
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 12 Feb 2012 19:47:56 +0200
parents 387b4288d357
children fa168b5e2624
comparison
equal deleted inserted replaced
676:106efeae9745 677:a8c42709a689
2 2
3 import copy 3 import copy
4 4
5 from widgets.text import LabelWidget 5 from widgets.text import LabelWidget
6 from pygame.color import Color 6 from pygame.color import Color
7
8 from pyntnclick.engine import ScreenEvent
7 9
8 10
9 def frame_rect(surface, color, rect, thick=1): 11 def frame_rect(surface, color, rect, thick=1):
10 # FIXME: Stolen from albow 12 # FIXME: Stolen from albow
11 surface.fill(color, (rect.left, rect.top, rect.width, thick)) 13 surface.fill(color, (rect.left, rect.top, rect.width, thick))
167 self.current_detail = None 169 self.current_detail = None
168 else: 170 else:
169 self.current_detail = self.detail_views[name] 171 self.current_detail = self.detail_views[name]
170 return self.current_detail 172 return self.current_detail
171 173
174 def _update_inventory(self):
175 ScreenEvent.post('game', 'inventory', None)
176
172 def add_inventory_item(self, name): 177 def add_inventory_item(self, name):
173 self.inventory.append(self.items[name]) 178 self.inventory.append(self.items[name])
179 self._update_inventory()
174 180
175 def is_in_inventory(self, name): 181 def is_in_inventory(self, name):
176 if name in self.items: 182 if name in self.items:
177 return self.items[name] in self.inventory 183 return self.items[name] in self.inventory
178 return False 184 return False
180 def remove_inventory_item(self, name): 186 def remove_inventory_item(self, name):
181 self.inventory.remove(self.items[name]) 187 self.inventory.remove(self.items[name])
182 # Unselect tool if it's removed 188 # Unselect tool if it's removed
183 if self.tool == self.items[name]: 189 if self.tool == self.items[name]:
184 self.set_tool(None) 190 self.set_tool(None)
191 self._update_inventory()
185 192
186 def replace_inventory_item(self, old_item_name, new_item_name): 193 def replace_inventory_item(self, old_item_name, new_item_name):
187 """Try to replace an item in the inventory with a new one""" 194 """Try to replace an item in the inventory with a new one"""
188 try: 195 try:
189 index = self.inventory.index(self.items[old_item_name]) 196 index = self.inventory.index(self.items[old_item_name])
190 self.inventory[index] = self.items[new_item_name] 197 self.inventory[index] = self.items[new_item_name]
191 if self.tool == self.items[old_item_name]: 198 if self.tool == self.items[old_item_name]:
192 self.set_tool(self.items[new_item_name]) 199 self.set_tool(self.items[new_item_name])
193 except ValueError: 200 except ValueError:
194 return False 201 return False
202 self._update_inventory()
195 return True 203 return True
196 204
197 def set_tool(self, item): 205 def set_tool(self, item):
198 self.tool = item 206 self.tool = item
199 207