Mercurial > boomslang
comparison 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 |
comparison
equal
deleted
inserted
replaced
383:30923e9408cd | 384:56a05ae56574 |
---|---|
33 def draw_item(self, surface, item_no, rect): | 33 def draw_item(self, surface, item_no, rect): |
34 item_image = self.state.inventory[item_no].get_inventory_image() | 34 item_image = self.state.inventory[item_no].get_inventory_image() |
35 surface.blit(item_image, rect, None, BLEND_ADD) | 35 surface.blit(item_image, rect, None, BLEND_ADD) |
36 | 36 |
37 def click_item(self, item_no, event): | 37 def click_item(self, item_no, event): |
38 item = self.state.inventory[item_no] | |
38 if self.item_is_selected(item_no): | 39 if self.item_is_selected(item_no): |
39 self.unselect() | 40 self.unselect() |
41 elif self.state.tool or hasattr(item, 'interact_without'): | |
42 result = item.interact(self.state.tool, self.state) | |
43 handle_result(result, self.state_widget) | |
40 else: | 44 else: |
41 if self.state.tool: | 45 self.state.set_tool(self.state.inventory[item_no]) |
42 result = self.state.inventory[item_no].interact(self.state.tool, self.state) | |
43 handle_result(result, self.state_widget) | |
44 else: | |
45 self.state.set_tool(self.state.inventory[item_no]) | |
46 | 46 |
47 def item_is_selected(self, item_no): | 47 def item_is_selected(self, item_no): |
48 return self.state.tool is self.state.inventory[item_no] | 48 return self.state.tool is self.state.inventory[item_no] |
49 | 49 |
50 def unselect(self): | 50 def unselect(self): |
102 self.subwidgets[0]._mouse_move(mouse.get_pos()) | 102 self.subwidgets[0]._mouse_move(mouse.get_pos()) |
103 else: | 103 else: |
104 self._mouse_move(mouse.get_pos()) | 104 self._mouse_move(mouse.get_pos()) |
105 | 105 |
106 def show_detail(self, detail): | 106 def show_detail(self, detail): |
107 self.clear_detail() | |
107 w, h = self.state.set_current_detail(detail) | 108 w, h = self.state.set_current_detail(detail) |
108 self.detail.set_image_rect(Rect(0, 0, w, h)) | 109 self.detail.set_image_rect(Rect(0, 0, w, h)) |
109 self.add_centered(self.detail) | 110 self.add_centered(self.detail) |
110 self.state.do_enter_detail() | 111 self.state.do_enter_detail() |
111 | 112 |
112 def clear_detail(self): | 113 def clear_detail(self): |
113 """Hide the detail view""" | 114 """Hide the detail view""" |
114 self.remove(self.detail) | 115 if self.state.current_detail is not None: |
115 self.state.do_leave_detail() | 116 self.remove(self.detail) |
116 self.state.set_current_detail(None) | 117 self.state.do_leave_detail() |
118 self.state.set_current_detail(None) | |
117 | 119 |
118 | 120 |
119 class DetailWindow(Widget): | 121 class DetailWindow(Widget): |
120 def __init__(self, screen): | 122 def __init__(self, screen): |
121 Widget.__init__(self) | 123 Widget.__init__(self) |