Mercurial > boomslang
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], |