annotate gamelib/toolbar.py @ 433:8643893635e7

Seperate toolbar and gameboard
author Neil Muller <drnlmuller@gmail.com>
date Sat, 21 Nov 2009 16:59:49 +0000
parents
children f2a55e5e24db
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
1 import pygame
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
2 from pgu import gui
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
3
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
4 import icons
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
5 import constants
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
6 import buildings
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
7 import equipment
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
8 import cursors
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
9 import engine
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
10
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
11 class OpaqueLabel(gui.Label):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
12 def __init__(self, value, **params):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
13 gui.Label.__init__(self, value, **params)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
14 if 'width' in params:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
15 self._width = params['width']
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
16 if 'height' in params:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
17 self._height = params['height']
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
18 self._set_size()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
19
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
20 def _set_size(self):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
21 width, height = self.font.size(self.value)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
22 width = getattr(self, '_width', width)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
23 height = getattr(self, '_height', height)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
24 self.style.width, self.style.height = width, height
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
25
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
26 def paint(self, s):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
27 s.fill(self.style.background)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
28 if self.style.align > 0:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
29 r = s.get_rect()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
30 w, _ = self.font.size(self.value)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
31 s = s.subsurface(r.move((r.w-w, 0)).clip(r))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
32 gui.Label.paint(self, s)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
33
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
34 def update_value(self, value):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
35 self.value = value
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
36 self._set_size()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
37 self.repaint()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
38
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
39 def mklabel(text="", **params):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
40 params.setdefault('color', constants.FG_COLOR)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
41 params.setdefault('width', constants.TOOLBAR_WIDTH/2)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
42 return OpaqueLabel(text, **params)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
43
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
44 def mkcountupdate(counter):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
45 def update_counter(self, value):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
46 getattr(self, counter).update_value("%s " % value)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
47 self.repaint()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
48 return update_counter
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
49
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
50 class ToolBar(gui.Table):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
51 def __init__(self, gameboard, level, **params):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
52 gui.Table.__init__(self, **params)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
53 self.group = gui.Group(name='toolbar', value=None)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
54 self._next_tool_value = 0
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
55 self.gameboard = gameboard
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
56 self.cash_counter = mklabel(align=1)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
57 self.wood_counter = mklabel(align=1)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
58 self.chicken_counter = mklabel(align=1)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
59 self.egg_counter = mklabel(align=1)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
60 self.day_counter = mklabel(align=1)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
61 self.killed_foxes = mklabel(align=1)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
62
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
63 self.tr()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
64 self.td(gui.Spacer(self.rect.w/2, 0))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
65 self.td(gui.Spacer(self.rect.w/2, 0))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
66 self.add_counter(mklabel("Day:"), self.day_counter)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
67 self.add_counter(mklabel("Groats:"), self.cash_counter)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
68 self.add_counter(mklabel("Planks:"), self.wood_counter)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
69 self.add_counter(mklabel("Eggs:"), self.egg_counter)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
70 self.add_counter(icons.CHKN_ICON, self.chicken_counter)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
71 self.add_counter(icons.KILLED_FOX, self.killed_foxes)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
72 self.add_spacer(5)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
73
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
74 self.add_tool_button("Move Hen", constants.TOOL_PLACE_ANIMALS,
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
75 None, cursors.cursors['select'])
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
76 self.add_spacer(5)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
77
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
78 self.add_heading("Sell ...")
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
79 self.add_tool_button("Chicken", constants.TOOL_SELL_CHICKEN,
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
80 level.sell_price_chicken, cursors.cursors['sell'])
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
81 self.add_tool_button("Egg", constants.TOOL_SELL_EGG,
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
82 level.sell_price_egg, cursors.cursors['sell'])
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
83 self.add_tool_button("Building", constants.TOOL_SELL_BUILDING,
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
84 None, cursors.cursors['sell'])
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
85 self.add_tool_button("Equipment", constants.TOOL_SELL_EQUIPMENT,
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
86 None, cursors.cursors['sell'])
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
87 self.add_spacer(5)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
88
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
89 self.add_heading("Buy ...")
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
90
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
91 for building_cls in buildings.BUILDINGS:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
92 self.add_tool_button(building_cls.NAME.title(), building_cls,
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
93 None, cursors.cursors.get('build', None))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
94
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
95 for equipment_cls in equipment.EQUIPMENT:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
96 self.add_tool_button(equipment_cls.NAME.title(),
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
97 equipment_cls,
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
98 equipment_cls.BUY_PRICE,
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
99 cursors.cursors.get('buy', None))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
100
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
101 self.add_spacer(5)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
102 self.add_tool_button("Repair", constants.TOOL_REPAIR_BUILDING, None, cursors.cursors['repair'])
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
103
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
104 self.add_spacer(5)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
105 self.add_tool("Price Reference", self.show_prices)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
106
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
107 self.fin_tool = self.add_tool("Finished Day", self.day_done)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
108
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
109 self.anim_clear_tool = False # Flag to clear the tool on an anim loop
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
110 # pgu's tool widget fiddling happens after the tool action, so calling
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
111 # clear_tool in the tool's action doesn't work, so we punt it to
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
112 # the anim loop
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
113
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
114 def day_done(self):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
115 if self.gameboard.day:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
116 pygame.event.post(engine.START_NIGHT)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
117 else:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
118 self.anim_clear_tool = True
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
119 pygame.event.post(engine.FAST_FORWARD)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
120
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
121 def update_fin_tool(self, day):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
122 if day:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
123 self.fin_tool.widget = gui.basic.Label('Finished Day')
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
124 self.fin_tool.resize()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
125 else:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
126 self.fin_tool.widget = gui.basic.Label('Fast Forward')
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
127 self.fin_tool.resize()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
128
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
129 def show_prices(self):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
130 """Popup dialog of prices"""
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
131 def make_box(text):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
132 style = {
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
133 'border' : 1
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
134 }
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
135 word = gui.Label(text, style=style)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
136 return word
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
137
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
138 def fix_widths(doc):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
139 """Loop through all the widgets in the doc, and set the
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
140 width of the labels to max + 10"""
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
141 # We need to do this because of possible font issues
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
142 max_width = 0
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
143 for thing in doc.widgets:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
144 if hasattr(thing, 'style'):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
145 # A label
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
146 if thing.style.width > max_width:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
147 max_width = thing.style.width
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
148 for thing in doc.widgets:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
149 if hasattr(thing, 'style'):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
150 thing.style.width = max_width + 10
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
151
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
152 tbl = gui.Table()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
153 tbl.tr()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
154 doc = gui.Document(width=510)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
155 space = doc.style.font.size(" ")
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
156 for header in ['Item', 'Buy Price', 'Sell Price', 'Repair Price']:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
157 doc.add(make_box(header))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
158 doc.br(space[1])
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
159 for building in buildings.BUILDINGS:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
160 doc.add(make_box(building.NAME))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
161 doc.add(make_box('%d' % building.BUY_PRICE))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
162 doc.add(make_box('%d' % building.SELL_PRICE))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
163 if building.BREAKABLE:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
164 doc.add(make_box('%d' % building.REPAIR_PRICE))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
165 else:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
166 doc.add(make_box('N/A'))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
167 doc.br(space[1])
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
168 for equip in equipment.EQUIPMENT:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
169 doc.add(make_box(equip.NAME))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
170 doc.add(make_box('%d' % equip.BUY_PRICE))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
171 doc.add(make_box('%d' % equip.SELL_PRICE))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
172 doc.add(make_box('N/A'))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
173 doc.br(space[1])
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
174
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
175 fix_widths(doc)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
176 for word in "Damaged equipment or buildings will be sold for" \
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
177 " less than the sell price.".split():
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
178 doc.add(gui.Label(word))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
179 doc.space(space)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
180 close_button = gui.Button("Close")
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
181 tbl.td(doc)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
182 tbl.tr()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
183 tbl.td(close_button, align=1)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
184 dialog = gui.Dialog(gui.Label('Price Reference'), tbl)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
185 close_button.connect(gui.CLICK, dialog.close)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
186 dialog.open()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
187 self.anim_clear_tool = True
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
188
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
189 update_cash_counter = mkcountupdate('cash_counter')
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
190 update_wood_counter = mkcountupdate('wood_counter')
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
191 update_fox_counter = mkcountupdate('killed_foxes')
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
192 update_chicken_counter = mkcountupdate('chicken_counter')
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
193 update_egg_counter = mkcountupdate('egg_counter')
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
194 update_day_counter = mkcountupdate('day_counter')
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
195
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
196 def add_spacer(self, height):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
197 self.tr()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
198 self.td(gui.Spacer(0, height), colspan=2)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
199
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
200 def add_heading(self, text):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
201 self.tr()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
202 self.td(mklabel(text), colspan=2)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
203
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
204 def add_tool_button(self, text, tool, price=None, cursor=None):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
205 if price is not None:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
206 text = "%s (%s)" % (text, price)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
207 self.add_tool(text, lambda: self.gameboard.set_selected_tool(tool,
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
208 cursor))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
209
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
210 def add_tool(self, text, func):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
211 label = gui.basic.Label(text)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
212 value = self._next_tool_value
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
213 self._next_tool_value += 1
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
214 tool = gui.Tool(self.group, label, value, width=self.rect.w, style={"padding_left": 0})
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
215 tool.connect(gui.CLICK, func)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
216 self.tr()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
217 self.td(tool, align=-1, colspan=2)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
218 return tool
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
219
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
220 def clear_tool(self):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
221 self.group.value = None
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
222 for item in self.group.widgets:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
223 item.pcls = ""
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
224 self.anim_clear_tool = False
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
225
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
226 def add_counter(self, icon, label):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
227 self.tr()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
228 self.td(icon, width=self.rect.w/2)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
229 self.td(label, width=self.rect.w/2)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
230
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
231 def resize(self, width=None, height=None):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
232 width, height = gui.Table.resize(self, width, height)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
233 width = constants.TOOLBAR_WIDTH
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
234 return width, height
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
235