Mercurial > boomslang
diff gamelib/gamescreen.py @ 384:56a05ae56574
Initial manual implementation.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sat, 28 Aug 2010 19:04:30 +0200 |
parents | 760f6a318d2e |
children | b1dc0caec668 |
line wrap: on
line diff
--- a/gamelib/gamescreen.py Sat Aug 28 18:59:51 2010 +0200 +++ b/gamelib/gamescreen.py Sat Aug 28 19:04:30 2010 +0200 @@ -35,14 +35,14 @@ surface.blit(item_image, rect, None, BLEND_ADD) def click_item(self, item_no, event): + item = self.state.inventory[item_no] if self.item_is_selected(item_no): self.unselect() + elif self.state.tool or hasattr(item, 'interact_without'): + result = item.interact(self.state.tool, self.state) + handle_result(result, self.state_widget) else: - if self.state.tool: - result = self.state.inventory[item_no].interact(self.state.tool, self.state) - handle_result(result, self.state_widget) - else: - self.state.set_tool(self.state.inventory[item_no]) + self.state.set_tool(self.state.inventory[item_no]) def item_is_selected(self, item_no): return self.state.tool is self.state.inventory[item_no] @@ -104,6 +104,7 @@ self._mouse_move(mouse.get_pos()) def show_detail(self, detail): + self.clear_detail() w, h = self.state.set_current_detail(detail) self.detail.set_image_rect(Rect(0, 0, w, h)) self.add_centered(self.detail) @@ -111,9 +112,10 @@ def clear_detail(self): """Hide the detail view""" - self.remove(self.detail) - self.state.do_leave_detail() - self.state.set_current_detail(None) + if self.state.current_detail is not None: + self.remove(self.detail) + self.state.do_leave_detail() + self.state.set_current_detail(None) class DetailWindow(Widget):