annotate gamelib/toolbar.py @ 490:8308bef91864

fixed so that tool highlight also cleared.
author Adrianna Pińska <adrianna.pinska@gmail.com>
date Wed, 25 Nov 2009 22:08:30 +0000
parents a5dc09881aa1
children e8430f93b23a
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
486
8897a436a8cb Factor out save game logic and (new, simplified) dialogs into their own module. Add preferences folder to concept to config. Save games under preferences folder.
Simon Cross <hodgestar@gmail.com>
parents: 484
diff changeset
10 import savegame
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
11
472
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
12 class RinkhalsTool(gui.Tool):
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
13 def __init__(self, group, label, value, func, **params):
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
14 gui.Tool.__init__(self, group, label, value, **params)
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
15 self.func = func
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
16
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
17 def click(self):
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
18 gui.Tool.click(self)
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
19 if not self.func():
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
20 # Don't hightlight if the function says so
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
21 self.group.value = None
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
22
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
23 class OpaqueLabel(gui.Label):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
24 def __init__(self, value, **params):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
25 gui.Label.__init__(self, value, **params)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
26 if 'width' in params:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
27 self._width = params['width']
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
28 if 'height' in params:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
29 self._height = params['height']
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
30 self._set_size()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
31
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
32 def _set_size(self):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
33 width, height = self.font.size(self.value)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
34 width = getattr(self, '_width', width)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
35 height = getattr(self, '_height', height)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
36 self.style.width, self.style.height = width, height
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
37
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
38 def paint(self, s):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
39 s.fill(self.style.background)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
40 if self.style.align > 0:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
41 r = s.get_rect()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
42 w, _ = self.font.size(self.value)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
43 s = s.subsurface(r.move((r.w-w, 0)).clip(r))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
44 gui.Label.paint(self, s)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
45
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
46 def update_value(self, value):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
47 self.value = value
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
48 self._set_size()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
49 self.repaint()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
50
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
51 def mklabel(text="", **params):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
52 params.setdefault('color', constants.FG_COLOR)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
53 params.setdefault('width', constants.TOOLBAR_WIDTH/2)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
54 return OpaqueLabel(text, **params)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
55
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
56 def mkcountupdate(counter):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
57 def update_counter(self, value):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
58 getattr(self, counter).update_value("%s " % value)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
59 self.repaint()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
60 return update_counter
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
61
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
62 class BaseToolBar(gui.Table):
483
25e8c57189c3 toggling move/select from subtoolbar no longer crashes
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 482
diff changeset
63
25e8c57189c3 toggling move/select from subtoolbar no longer crashes
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 482
diff changeset
64 IS_DEFAULT = False
25e8c57189c3 toggling move/select from subtoolbar no longer crashes
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 482
diff changeset
65
434
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
66 def __init__(self, gameboard, **params):
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
67 gui.Table.__init__(self, **params)
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
68 self.group = gui.Group(name='base_toolbar', value=None)
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
69 self._next_tool_value = 0
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
70 self.gameboard = gameboard
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
71 self.cash_counter = mklabel(align=1)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
72 self.wood_counter = mklabel(align=1)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
73 self.chicken_counter = mklabel(align=1)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
74 self.egg_counter = mklabel(align=1)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
75 self.day_counter = mklabel(align=1)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
76 self.killed_foxes = mklabel(align=1)
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
77 self.add_labels()
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
78
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
79 def add_labels(self):
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
80 self.tr()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
81 self.td(gui.Spacer(self.rect.w/2, 0))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
82 self.td(gui.Spacer(self.rect.w/2, 0))
459
e9393970b5f6 picture icons for all counters
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 458
diff changeset
83 self.add_counter(icons.DAY_ICON, self.day_counter)
e9393970b5f6 picture icons for all counters
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 458
diff changeset
84 self.add_counter(icons.GROATS_ICON, self.cash_counter)
e9393970b5f6 picture icons for all counters
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 458
diff changeset
85 self.add_counter(icons.WOOD_ICON, self.wood_counter)
e9393970b5f6 picture icons for all counters
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 458
diff changeset
86 self.add_counter(icons.EGG_ICON, self.egg_counter)
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
87 self.add_counter(icons.CHKN_ICON, self.chicken_counter)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
88 self.add_counter(icons.KILLED_FOX, self.killed_foxes)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
89 self.add_spacer(5)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
90
434
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
91 def start_night(self):
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
92 self.clear_tool()
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
93 self._set_all_disabled(True)
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
94 self.fin_tool.widget = gui.basic.Label('Fast Forward')
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
95 self.fin_tool.resize()
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
96 self.fin_tool.disabled = False # Can always select this
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
97 self.fin_tool.focusable = True # Can always select this
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
98
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
99 def start_day(self):
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
100 self.clear_tool()
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
101 self._set_all_disabled(False)
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
102 self.fin_tool.widget = gui.basic.Label('Finished Day')
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
103 self.fin_tool.resize()
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
104
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
105 def _set_all_disabled(self, state):
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
106 """Sets the disabled flag on all the buttons in the toolbar"""
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
107 for td in self.widgets:
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
108 for widget in td.widgets:
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
109 if hasattr(widget, 'group'): # Tool
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
110 widget.disabled = state
f2a55e5e24db Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents: 433
diff changeset
111 widget.focusable = not state
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
112
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
113 def show_prices(self):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
114 """Popup dialog of prices"""
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
115 def make_box(text):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
116 style = {
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
117 'border' : 1
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
118 }
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
119 word = gui.Label(text, style=style)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
120 return word
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
121
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
122 def fix_widths(doc):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
123 """Loop through all the widgets in the doc, and set the
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
124 width of the labels to max + 10"""
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
125 # We need to do this because of possible font issues
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
126 max_width = 0
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
127 for thing in doc.widgets:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
128 if hasattr(thing, 'style'):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
129 # A label
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
130 if thing.style.width > max_width:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
131 max_width = thing.style.width
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
132 for thing in doc.widgets:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
133 if hasattr(thing, 'style'):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
134 thing.style.width = max_width + 10
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
135
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
136 tbl = gui.Table()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
137 tbl.tr()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
138 doc = gui.Document(width=510)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
139 space = doc.style.font.size(" ")
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
140 for header in ['Item', 'Buy Price', 'Sell Price', 'Repair Price']:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
141 doc.add(make_box(header))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
142 doc.br(space[1])
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
143 for building in buildings.BUILDINGS:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
144 doc.add(make_box(building.NAME))
448
92e7a641b4a6 added units to price list
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 447
diff changeset
145 doc.add(make_box('%d planks' % building.BUY_PRICE))
92e7a641b4a6 added units to price list
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 447
diff changeset
146 doc.add(make_box('%d planks' % building.SELL_PRICE))
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
147 if building.BREAKABLE:
448
92e7a641b4a6 added units to price list
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 447
diff changeset
148 doc.add(make_box('%d planks' % building.REPAIR_PRICE))
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
149 else:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
150 doc.add(make_box('N/A'))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
151 doc.br(space[1])
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
152 for equip in equipment.EQUIPMENT:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
153 doc.add(make_box(equip.NAME))
448
92e7a641b4a6 added units to price list
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 447
diff changeset
154 doc.add(make_box('%d groats' % equip.BUY_PRICE))
92e7a641b4a6 added units to price list
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 447
diff changeset
155 doc.add(make_box('%d groats' % equip.SELL_PRICE))
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
156 doc.add(make_box('N/A'))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
157 doc.br(space[1])
461
279caa00f3fa exchange rate should be per tree, not per plank
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 460
diff changeset
158 doc.add(make_box("5 planks"))
460
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
159 doc.add(make_box('%d groats' % self.gameboard.wood_buy_price))
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
160 doc.add(make_box('%d groats' % self.gameboard.wood_sell_price))
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
161 doc.add(make_box('N/A'))
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
162 doc.br(space[1])
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
163
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
164 fix_widths(doc)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
165 for word in "Damaged equipment or buildings will be sold for" \
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
166 " less than the sell price.".split():
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
167 doc.add(gui.Label(word))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
168 doc.space(space)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
169 close_button = gui.Button("Close")
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
170 tbl.td(doc)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
171 tbl.tr()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
172 tbl.td(close_button, align=1)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
173 dialog = gui.Dialog(gui.Label('Price Reference'), tbl)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
174 close_button.connect(gui.CLICK, dialog.close)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
175 dialog.open()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
176
444
feb9b7a23ef2 Support for saving and loading games (toolbar entries commented out for lack of space).
Simon Cross <hodgestar@gmail.com>
parents: 434
diff changeset
177 def save_game(self):
feb9b7a23ef2 Support for saving and loading games (toolbar entries commented out for lack of space).
Simon Cross <hodgestar@gmail.com>
parents: 434
diff changeset
178 """Save game 'dialog'."""
486
8897a436a8cb Factor out save game logic and (new, simplified) dialogs into their own module. Add preferences folder to concept to config. Save games under preferences folder.
Simon Cross <hodgestar@gmail.com>
parents: 484
diff changeset
179 savegame.SaveDialog(self.gameboard).open()
444
feb9b7a23ef2 Support for saving and loading games (toolbar entries commented out for lack of space).
Simon Cross <hodgestar@gmail.com>
parents: 434
diff changeset
180
feb9b7a23ef2 Support for saving and loading games (toolbar entries commented out for lack of space).
Simon Cross <hodgestar@gmail.com>
parents: 434
diff changeset
181 def load_game(self):
feb9b7a23ef2 Support for saving and loading games (toolbar entries commented out for lack of space).
Simon Cross <hodgestar@gmail.com>
parents: 434
diff changeset
182 """Load game 'dialog'."""
486
8897a436a8cb Factor out save game logic and (new, simplified) dialogs into their own module. Add preferences folder to concept to config. Save games under preferences folder.
Simon Cross <hodgestar@gmail.com>
parents: 484
diff changeset
183 savegame.RestoreDialog(self.gameboard).open()
444
feb9b7a23ef2 Support for saving and loading games (toolbar entries commented out for lack of space).
Simon Cross <hodgestar@gmail.com>
parents: 434
diff changeset
184
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
185 update_cash_counter = mkcountupdate('cash_counter')
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
186 update_wood_counter = mkcountupdate('wood_counter')
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
187 update_fox_counter = mkcountupdate('killed_foxes')
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
188 update_chicken_counter = mkcountupdate('chicken_counter')
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
189 update_egg_counter = mkcountupdate('egg_counter')
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
190 update_day_counter = mkcountupdate('day_counter')
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
191
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
192 def add_spacer(self, height):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
193 self.tr()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
194 self.td(gui.Spacer(0, height), colspan=2)
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_heading(self, text):
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(mklabel(text), 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_tool_button(self, text, tool, price=None, cursor=None):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
201 if price is not None:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
202 text = "%s (%s)" % (text, price)
482
cab751de93cc selected button switches when you toggle select/move
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 472
diff changeset
203 return self.add_tool(text, lambda: self.gameboard.set_selected_tool(tool,
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
204 cursor))
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
205
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
206 def add_tool(self, text, func):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
207 label = gui.basic.Label(text)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
208 value = self._next_tool_value
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
209 self._next_tool_value += 1
472
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
210 tool = RinkhalsTool(self.group, label, value, func, width=self.rect.w,
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
211 style={"padding_left": 0})
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
212 #tool.connect(gui.CLICK, func)
433
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
213 self.tr()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
214 self.td(tool, align=-1, colspan=2)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
215 return tool
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
216
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
217 def clear_tool(self):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
218 self.group.value = None
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
219 for item in self.group.widgets:
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
220 item.pcls = ""
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
221
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
222 def add_counter(self, icon, label):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
223 self.tr()
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
224 self.td(icon, width=self.rect.w/2)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
225 self.td(label, width=self.rect.w/2)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
226
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
227 def resize(self, width=None, height=None):
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
228 width, height = gui.Table.resize(self, width, height)
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
229 width = constants.TOOLBAR_WIDTH
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
230 return width, height
8643893635e7 Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff changeset
231
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
232 class DefaultToolBar(BaseToolBar):
483
25e8c57189c3 toggling move/select from subtoolbar no longer crashes
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 482
diff changeset
233
25e8c57189c3 toggling move/select from subtoolbar no longer crashes
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 482
diff changeset
234 IS_DEFAULT = True
25e8c57189c3 toggling move/select from subtoolbar no longer crashes
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 482
diff changeset
235
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
236 def __init__(self, gameboard, **params):
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
237 BaseToolBar.__init__(self, gameboard, **params)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
238 self.group = gui.Group(name='default_toolbar', value=None)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
239 self.make_toolbar()
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
240
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
241 def make_toolbar(self):
482
cab751de93cc selected button switches when you toggle select/move
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 472
diff changeset
242 self._select_tool = self.add_tool_button("Select chicken", constants.TOOL_SELECT_CHICKENS,
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
243 None, cursors.cursors['select'])
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
244
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
245 self.add_spacer(5)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
246
458
7e4ea53d8b10 Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents: 454
diff changeset
247 self.add_tool('Equip chickens', self.add_equipment_toolbar)
7e4ea53d8b10 Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents: 454
diff changeset
248
482
cab751de93cc selected button switches when you toggle select/move
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 472
diff changeset
249 self._move_tool = self.add_tool_button("Move chickens", constants.TOOL_PLACE_ANIMALS,
458
7e4ea53d8b10 Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents: 454
diff changeset
250 None, cursors.cursors['select'])
7e4ea53d8b10 Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents: 454
diff changeset
251
454
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
252 self.add_tool('Sell stuff', self.add_sell_toolbar)
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
253
460
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
254 self.add_tool('Trade wood', self.add_wood_toolbar)
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
255
458
7e4ea53d8b10 Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents: 454
diff changeset
256 self.add_spacer(5)
7e4ea53d8b10 Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents: 454
diff changeset
257
7e4ea53d8b10 Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents: 454
diff changeset
258 self.add_heading("Buildings")
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
259
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
260 self.add_tool('Buy building', self.add_building_toolbar)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
261
458
7e4ea53d8b10 Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents: 454
diff changeset
262 self.add_tool_button("Sell building", constants.TOOL_SELL_BUILDING,
7e4ea53d8b10 Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents: 454
diff changeset
263 None, cursors.cursors['sell'])
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
264
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
265 self.add_tool_button("Repair", constants.TOOL_REPAIR_BUILDING, None, cursors.cursors['repair'])
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
266
458
7e4ea53d8b10 Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents: 454
diff changeset
267 self.add_spacer(5)
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
268 self.add_heading("Help")
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
269 self.add_tool("Price Reference", self.show_prices)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
270
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
271 self.add_spacer(5)
458
7e4ea53d8b10 Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents: 454
diff changeset
272 self.add_heading("Game")
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
273 self.add_tool("Save Game", self.save_game)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
274 self.add_tool("Load Game", self.load_game)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
275
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
276 self.add_heading(" ")
460
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
277 ## Dear pgu, is there a better way to get the current height?
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
278 #_cur_width, cur_height = self.resize()
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
279 #self.add_spacer(570-cur_height)
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
280 self.fin_tool = self.add_tool("Finished Day", self.day_done)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
281
487
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
282 if self.gameboard.selected_tool == constants.TOOL_PLACE_ANIMALS:
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
283 self.toggle_move_on()
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
284 elif self.gameboard.selected_tool == constants.TOOL_SELECT_CHICKENS:
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
285 self.toggle_select_on()
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
286 else:
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
287 self.gameboard.set_selected_tool(None, None)
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
288
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
289 def toggle_move_on(self):
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
290 self._select_tool.group.value = self._move_tool.value
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
291 self._move_tool.pcls = "down"
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
292 self._select_tool.pcls = ""
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
293
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
294 def toggle_select_on(self):
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
295 self._select_tool.group.value = self._select_tool.value
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
296 self._move_tool.pcls = ""
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
297 self._select_tool.pcls = "down"
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
298
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
299 def add_building_toolbar(self):
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
300 self.gameboard.change_toolbar(BuildingToolBar(self.gameboard,
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
301 width=self.style.width))
472
67574723427e Partially working (but much less crashy) multiple select support
Neil Muller <drnlmuller@gmail.com>
parents: 466
diff changeset
302 self.gameboard.unselect_all()
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
303
454
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
304 def add_sell_toolbar(self):
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
305 self.gameboard.change_toolbar(SellToolBar(self.gameboard,
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
306 width=self.style.width))
487
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
307 self.gameboard.unselect_all()
454
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
308
460
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
309 def add_wood_toolbar(self):
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
310 self.gameboard.change_toolbar(WoodToolBar(self.gameboard,
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
311 width=self.style.width))
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
312
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
313 def add_equipment_toolbar(self):
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
314 self.gameboard.change_toolbar(EquipmentToolBar(self.gameboard,
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
315 width=self.style.width))
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
316
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
317 def day_done(self):
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
318 if self.gameboard.day:
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
319 pygame.event.post(engine.START_NIGHT)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
320 else:
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
321 pygame.event.post(engine.FAST_FORWARD)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
322
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
323 class BuildingToolBar(BaseToolBar):
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
324 def __init__(self, gameboard, **params):
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
325 BaseToolBar.__init__(self, gameboard, **params)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
326 self.group = gui.Group(name='building_toolbar', value=None)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
327 self.make_toolbar()
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
328
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
329 def make_toolbar(self):
487
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
330 self.gameboard.set_selected_tool(None, None)
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
331 for building_cls in buildings.BUILDINGS:
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
332 self.add_tool_button(building_cls.NAME.title(), building_cls,
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
333 None, cursors.cursors.get('build', None))
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
334 self.add_spacer(15)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
335 self.add_tool('Done', self.add_default_toolbar)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
336
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
337 def add_default_toolbar(self):
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
338 self.gameboard.change_toolbar(DefaultToolBar(self.gameboard,
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
339 width=self.style.width))
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
340
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
341 class EquipmentToolBar(BaseToolBar):
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
342 def __init__(self, gameboard, **params):
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
343 BaseToolBar.__init__(self, gameboard, **params)
484
d3381e722839 gave toolbars unique groups
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 483
diff changeset
344 self.group = gui.Group(name='equipment_toolbar', value=None)
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
345 self.make_toolbar()
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
346
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
347 def make_toolbar(self):
487
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
348 if self.gameboard.selected_tool not in [constants.TOOL_SELECT_CHICKENS, constants.TOOL_PLACE_ANIMALS]:
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
349 self.gameboard.set_selected_tool(None, None)
447
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
350 for equipment_cls in equipment.EQUIPMENT:
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
351 self.add_tool_button(equipment_cls.NAME.title(),
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
352 equipment_cls,
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
353 equipment_cls.BUY_PRICE,
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
354 cursors.cursors.get('buy', None))
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
355 self.add_spacer(15)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
356 self.add_tool('Done', self.add_default_toolbar)
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
357
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
358 def add_default_toolbar(self):
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
359 self.gameboard.change_toolbar(DefaultToolBar(self.gameboard,
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
360 width=self.style.width))
f04a2490c35f The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents: 446
diff changeset
361
454
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
362 class SellToolBar(BaseToolBar):
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
363 def __init__(self, gameboard, **params):
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
364 BaseToolBar.__init__(self, gameboard, **params)
484
d3381e722839 gave toolbars unique groups
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 483
diff changeset
365 self.group = gui.Group(name='sell_toolbar', value=None)
454
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
366 self.make_toolbar()
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
367
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
368 def make_toolbar(self):
487
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
369 self.gameboard.set_selected_tool(None, None)
454
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
370
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
371 self.add_heading("Sell ...")
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
372 self.add_tool_button("Chicken", constants.TOOL_SELL_CHICKEN,
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
373 self.gameboard.level.sell_price_chicken, cursors.cursors['sell'])
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
374 self.add_tool_button("Egg", constants.TOOL_SELL_EGG,
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
375 self.gameboard.level.sell_price_egg, cursors.cursors['sell'])
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
376 self.add_tool_button("Equipment", constants.TOOL_SELL_EQUIPMENT,
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
377 None, cursors.cursors['sell'])
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
378 self.add_spacer(15)
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
379 self.add_tool('Done', self.add_default_toolbar)
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
380
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
381 def add_default_toolbar(self):
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
382 self.gameboard.change_toolbar(DefaultToolBar(self.gameboard,
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
383 width=self.style.width))
30e6d6097b12 Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents: 450
diff changeset
384
460
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
385 class WoodToolBar(BaseToolBar):
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
386 def __init__(self, gameboard, **params):
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
387 BaseToolBar.__init__(self, gameboard, **params)
484
d3381e722839 gave toolbars unique groups
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 483
diff changeset
388 self.group = gui.Group(name='wood_toolbar', value=None)
460
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
389 self.make_toolbar()
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
390
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
391 def make_toolbar(self):
487
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
392 if self.gameboard.selected_tool not in [constants.TOOL_SELECT_CHICKENS, constants.TOOL_PLACE_ANIMALS]:
a5dc09881aa1 rationalised when tools are reset; e.g. you can trade wood without losing selection / move tool. Default toolbar shows correct tool when reloaded (select/move only; other tools reset)
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 486
diff changeset
393 self.gameboard.set_selected_tool(None, None)
460
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
394
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
395 self.add_heading("Trade...")
461
279caa00f3fa exchange rate should be per tree, not per plank
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 460
diff changeset
396 self.add_tool("Buy 5 planks (%s)" % self.gameboard.wood_buy_price, self.buy_wood)
279caa00f3fa exchange rate should be per tree, not per plank
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 460
diff changeset
397 self.add_tool("Sell 5 planks (%s)" % self.gameboard.wood_sell_price, self.sell_wood)
460
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
398
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
399 self.add_spacer(15)
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
400 self.add_tool('Done', self.add_default_toolbar)
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
401
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
402 def add_default_toolbar(self):
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
403 self.gameboard.change_toolbar(DefaultToolBar(self.gameboard,
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
404 width=self.style.width))
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
405
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
406 def buy_wood(self):
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
407 if self.gameboard.cash >= self.gameboard.wood_buy_price:
461
279caa00f3fa exchange rate should be per tree, not per plank
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 460
diff changeset
408 self.gameboard.add_wood(5)
460
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
409 self.gameboard.add_cash(-self.gameboard.wood_buy_price)
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
410
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
411 def sell_wood(self):
461
279caa00f3fa exchange rate should be per tree, not per plank
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 460
diff changeset
412 if self.gameboard.wood >= 5:
279caa00f3fa exchange rate should be per tree, not per plank
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 460
diff changeset
413 self.gameboard.add_wood(-5)
460
7204c16ab64d Wood market!
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 459
diff changeset
414 self.gameboard.add_cash(self.gameboard.wood_sell_price)