comparison pyntnclick/gamescreen.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 106efeae9745
children 36d7f7e9650e
comparison
equal deleted inserted replaced
676:106efeae9745 677:a8c42709a689
103 (self.bsize, self.rect.height)) 103 (self.bsize, self.rect.height))
104 return InventorySlot(rect, self.gd) 104 return InventorySlot(rect, self.gd)
105 105
106 def up_callback(self, event, widget): 106 def up_callback(self, event, widget):
107 self.inv_offset = max(self.inv_offset - len(self.slots), 0) 107 self.inv_offset = max(self.inv_offset - len(self.slots), 0)
108 self.update_slots()
108 109
109 def down_callback(self, event, widget): 110 def down_callback(self, event, widget):
110 self.inv_offset += len(self.slots) 111 self.inv_offset += len(self.slots)
112 self.update_slots()
111 113
112 def update_slots(self): 114 def update_slots(self):
113 items = (self.slot_items + [None] * len(self.slots))[:len(self.slots)] 115 items = (self.slot_items + [None] * len(self.slots))[:len(self.slots)]
114 for item, slot in zip(items, self.slots): 116 for item, slot in zip(items, self.slots):
115 slot.set_item(item) 117 slot.set_item(item)
124 self.down_button.disable() 126 self.down_button.disable()
125 else: 127 else:
126 self.down_button.enable() 128 self.down_button.enable()
127 129
128 def draw(self, surface): 130 def draw(self, surface):
129 self.update_slots()
130 super(InventoryView, self).draw(surface) 131 super(InventoryView, self).draw(surface)
131 132
132 @property 133 @property
133 def slot_items(self): 134 def slot_items(self):
134 return self.game.inventory[self.inv_offset:][:len(self.slots)] 135 return self.game.inventory[self.inv_offset:][:len(self.slots)]
135
136 def draw_updown(self, surface):
137 rect = Rect((self.rect.width - self.updown_width, 0),
138 (self.updown_width, self.rect.height))
139 s = Surface(rect.size)
140 s.fill(Color("blue"))
141 surface.blit(s, rect)
142 136
143 def mouse_down(self, event, widget): 137 def mouse_down(self, event, widget):
144 if event.button != 1: 138 if event.button != 1:
145 self.game.cancel_doodah(self.screen) 139 self.game.cancel_doodah(self.screen)
146 140
358 self.container.remove(widget) 352 self.container.remove(widget)
359 353
360 def process_event(self, event_name, data): 354 def process_event(self, event_name, data):
361 if event_name == 'restart': 355 if event_name == 'restart':
362 self.start_game() 356 self.start_game()
357 elif event_name == 'inventory':
358 self.inventory.update_slots()
363 359
364 def start_game(self): 360 def start_game(self):
365 self._clear_all() 361 self._clear_all()
366 toolbar_height = self.gd.constants.button_size 362 toolbar_height = self.gd.constants.button_size
367 rect = Rect(0, 0, self.surface_size[0], 363 rect = Rect(0, 0, self.surface_size[0],