Mercurial > boomslang
comparison pyntnclick/gamescreen.py @ 667:c71530b8a19d pyntnclick
More toolbar work.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 12 Feb 2012 17:28:20 +0200 |
parents | 12149ea1c18e |
children | 562f8133bb07 |
comparison
equal
deleted
inserted
replaced
666:de3f6ad0da9d | 667:c71530b8a19d |
---|---|
19 SCREEN = constants.screen | 19 SCREEN = constants.screen |
20 LEAVE = constants.leave | 20 LEAVE = constants.leave |
21 | 21 |
22 | 22 |
23 class InventoryView(Widget): | 23 class InventoryView(Widget): |
24 # TODO: Make this work again | 24 MIN_UPDOWN_WIDTH = 16 |
25 | 25 |
26 sel_color = Color("yellow") | 26 sel_color = Color("yellow") |
27 sel_width = 2 | 27 sel_width = 2 |
28 | 28 |
29 def __init__(self, rect, gd, screen): | 29 def __init__(self, rect, gd, screen): |
30 self.bsize = gd.constants.button_size | 30 self.bsize = gd.constants.button_size |
31 super(InventoryView, self).__init__(rect, gd) | 31 super(InventoryView, self).__init__(rect, gd) |
32 self.inv_slots = (self.rect.width - self.MIN_UPDOWN_WIDTH) / self.bsize | |
33 self.updown_width = self.rect.width - self.inv_slots * self.bsize | |
32 self.screen = screen | 34 self.screen = screen |
33 self.game = screen.game | 35 self.game = screen.game |
34 self.state_widget = screen.state_widget | 36 self.state_widget = screen.state_widget |
35 self.add_callback(MOUSEBUTTONDOWN, self.mouse_down) | 37 self.add_callback(MOUSEBUTTONDOWN, self.mouse_down) |
36 self.update_surface() | 38 self.update_surface() |
39 self.surface = Surface(self.rect.size) | 41 self.surface = Surface(self.rect.size) |
40 for item_no in range(self.num_items()): | 42 for item_no in range(self.num_items()): |
41 self.draw_item(self.surface, item_no, | 43 self.draw_item(self.surface, item_no, |
42 Rect((item_no * self.bsize, 0), | 44 Rect((item_no * self.bsize, 0), |
43 (self.bsize, self.bsize))) | 45 (self.bsize, self.bsize))) |
46 self.draw_updown(self.surface) | |
44 | 47 |
45 def draw(self, surface): | 48 def draw(self, surface): |
46 self.update_surface() | 49 self.update_surface() |
47 surface.blit(self.surface, self.rect) | 50 surface.blit(self.surface, self.rect) |
48 | 51 |
51 | 54 |
52 def draw_item(self, surface, item_no, rect): | 55 def draw_item(self, surface, item_no, rect): |
53 item_image = self.game.inventory[item_no].get_inventory_image() | 56 item_image = self.game.inventory[item_no].get_inventory_image() |
54 surface.blit(item_image, rect, None) | 57 surface.blit(item_image, rect, None) |
55 | 58 |
59 def draw_updown(self, surface): | |
60 rect = Rect((self.rect.width - self.updown_width, 0), | |
61 (self.updown_width, self.rect.height)) | |
62 s = Surface(rect.size) | |
63 s.fill(Color("blue")) | |
64 surface.blit(s, rect) | |
65 | |
56 def click_item(self, item_no, event): | 66 def click_item(self, item_no, event): |
57 item = self.game.inventory[item_no] | 67 item = self.game.inventory[item_no] |
58 print "Using:", item | |
59 if self.item_is_selected(item_no): | 68 if self.item_is_selected(item_no): |
60 self.unselect() | 69 self.unselect() |
61 elif item.is_interactive(self.game.tool): | 70 elif item.is_interactive(self.game.tool): |
62 result = item.interact(self.game.tool) | 71 result = item.interact(self.game.tool) |
63 handle_result(result, self.state_widget) | 72 handle_result(result, self.state_widget) |
69 return self.game.cancel_doodah(self.screen) | 78 return self.game.cancel_doodah(self.screen) |
70 x, y = self.global_to_local(event.pos) | 79 x, y = self.global_to_local(event.pos) |
71 item_no = x / self.bsize | 80 item_no = x / self.bsize |
72 if item_no < self.num_items(): | 81 if item_no < self.num_items(): |
73 self.click_item(item_no, event) | 82 self.click_item(item_no, event) |
74 else: | |
75 print "No item." | |
76 | 83 |
77 def item_is_selected(self, item_no): | 84 def item_is_selected(self, item_no): |
78 return self.game.tool is self.game.inventory[item_no] | 85 return self.game.tool is self.game.inventory[item_no] |
79 | 86 |
80 def unselect(self): | 87 def unselect(self): |