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