Mercurial > rinkhals
annotate gamelib/toolbar.py @ 466:3d173ea43ad5
Add version number to saved games.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Tue, 24 Nov 2009 20:53:54 +0000 |
parents | 279caa00f3fa |
children | 67574723427e |
rev | line source |
---|---|
433
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
1 import pygame |
450
5d74d0e4a4cc
Switch to XML (RPC) for save game encoding.
Simon Cross <hodgestar@gmail.com>
parents:
448
diff
changeset
|
2 import xmlrpclib |
433
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
3 from pgu import gui |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
4 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
5 import icons |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
6 import constants |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
7 import buildings |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
8 import equipment |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
9 import cursors |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
10 import engine |
466
3d173ea43ad5
Add version number to saved games.
Simon Cross <hodgestar@gmail.com>
parents:
461
diff
changeset
|
11 import version |
433
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
12 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
13 class OpaqueLabel(gui.Label): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
14 def __init__(self, value, **params): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
15 gui.Label.__init__(self, value, **params) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
16 if 'width' in params: |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
17 self._width = params['width'] |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
18 if 'height' in params: |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
19 self._height = params['height'] |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
20 self._set_size() |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
21 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
22 def _set_size(self): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
23 width, height = self.font.size(self.value) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
24 width = getattr(self, '_width', width) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
25 height = getattr(self, '_height', height) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
26 self.style.width, self.style.height = width, height |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
27 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
28 def paint(self, s): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
29 s.fill(self.style.background) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
30 if self.style.align > 0: |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
31 r = s.get_rect() |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
32 w, _ = self.font.size(self.value) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
33 s = s.subsurface(r.move((r.w-w, 0)).clip(r)) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
34 gui.Label.paint(self, s) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
35 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
36 def update_value(self, value): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
37 self.value = value |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
38 self._set_size() |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
39 self.repaint() |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
40 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
41 def mklabel(text="", **params): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
42 params.setdefault('color', constants.FG_COLOR) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
43 params.setdefault('width', constants.TOOLBAR_WIDTH/2) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
44 return OpaqueLabel(text, **params) |
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 mkcountupdate(counter): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
47 def update_counter(self, value): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
48 getattr(self, counter).update_value("%s " % value) |
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 return update_counter |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
51 |
447
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
52 class BaseToolBar(gui.Table): |
434
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
53 def __init__(self, gameboard, **params): |
433
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
54 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
|
55 self.group = gui.Group(name='base_toolbar', value=None) |
433
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
56 self._next_tool_value = 0 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
57 self.gameboard = gameboard |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
58 self.cash_counter = mklabel(align=1) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
59 self.wood_counter = mklabel(align=1) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
60 self.chicken_counter = mklabel(align=1) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
61 self.egg_counter = mklabel(align=1) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
62 self.day_counter = mklabel(align=1) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
63 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
|
64 self.add_labels() |
433
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
65 |
447
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
66 def add_labels(self): |
433
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
67 self.tr() |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
68 self.td(gui.Spacer(self.rect.w/2, 0)) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
69 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
|
70 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
|
71 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
|
72 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
|
73 self.add_counter(icons.EGG_ICON, self.egg_counter) |
433
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
74 self.add_counter(icons.CHKN_ICON, self.chicken_counter) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
75 self.add_counter(icons.KILLED_FOX, self.killed_foxes) |
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 |
434
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
78 def start_night(self): |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
79 self.clear_tool() |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
80 self._set_all_disabled(True) |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
81 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
|
82 self.fin_tool.resize() |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
83 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
|
84 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
|
85 |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
86 def start_day(self): |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
87 self.clear_tool() |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
88 self._set_all_disabled(False) |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
89 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
|
90 self.fin_tool.resize() |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
91 |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
92 def _set_all_disabled(self, state): |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
93 """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
|
94 for td in self.widgets: |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
95 for widget in td.widgets: |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
96 if hasattr(widget, 'group'): # Tool |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
97 widget.disabled = state |
f2a55e5e24db
Disable non-selectable toolbar widgets at night
Neil Muller <drnlmuller@gmail.com>
parents:
433
diff
changeset
|
98 widget.focusable = not state |
433
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
99 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
100 def show_prices(self): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
101 """Popup dialog of prices""" |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
102 def make_box(text): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
103 style = { |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
104 'border' : 1 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
105 } |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
106 word = gui.Label(text, style=style) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
107 return word |
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 def fix_widths(doc): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
110 """Loop through all the widgets in the doc, and set the |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
111 width of the labels to max + 10""" |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
112 # We need to do this because of possible font issues |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
113 max_width = 0 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
114 for thing in doc.widgets: |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
115 if hasattr(thing, 'style'): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
116 # A label |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
117 if thing.style.width > max_width: |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
118 max_width = thing.style.width |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
119 for thing in doc.widgets: |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
120 if hasattr(thing, 'style'): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
121 thing.style.width = max_width + 10 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
122 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
123 tbl = gui.Table() |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
124 tbl.tr() |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
125 doc = gui.Document(width=510) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
126 space = doc.style.font.size(" ") |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
127 for header in ['Item', 'Buy Price', 'Sell Price', 'Repair Price']: |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
128 doc.add(make_box(header)) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
129 doc.br(space[1]) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
130 for building in buildings.BUILDINGS: |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
131 doc.add(make_box(building.NAME)) |
448
92e7a641b4a6
added units to price list
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
447
diff
changeset
|
132 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
|
133 doc.add(make_box('%d planks' % building.SELL_PRICE)) |
433
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
134 if building.BREAKABLE: |
448
92e7a641b4a6
added units to price list
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
447
diff
changeset
|
135 doc.add(make_box('%d planks' % building.REPAIR_PRICE)) |
433
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
136 else: |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
137 doc.add(make_box('N/A')) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
138 doc.br(space[1]) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
139 for equip in equipment.EQUIPMENT: |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
140 doc.add(make_box(equip.NAME)) |
448
92e7a641b4a6
added units to price list
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
447
diff
changeset
|
141 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
|
142 doc.add(make_box('%d groats' % equip.SELL_PRICE)) |
433
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
143 doc.add(make_box('N/A')) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
144 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
|
145 doc.add(make_box("5 planks")) |
460 | 146 doc.add(make_box('%d groats' % self.gameboard.wood_buy_price)) |
147 doc.add(make_box('%d groats' % self.gameboard.wood_sell_price)) | |
148 doc.add(make_box('N/A')) | |
149 doc.br(space[1]) | |
433
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
150 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
151 fix_widths(doc) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
152 for word in "Damaged equipment or buildings will be sold for" \ |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
153 " less than the sell price.".split(): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
154 doc.add(gui.Label(word)) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
155 doc.space(space) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
156 close_button = gui.Button("Close") |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
157 tbl.td(doc) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
158 tbl.tr() |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
159 tbl.td(close_button, align=1) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
160 dialog = gui.Dialog(gui.Label('Price Reference'), tbl) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
161 close_button.connect(gui.CLICK, dialog.close) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
162 dialog.open() |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
163 |
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
|
164 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
|
165 """Save game 'dialog'.""" |
446
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
166 dialog = gui.FileDialog("Save game ...", button_txt="Save") |
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
167 |
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
168 def save(): |
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
169 if dialog.value is None: |
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
170 return |
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
171 data = self.gameboard.save_game() |
466
3d173ea43ad5
Add version number to saved games.
Simon Cross <hodgestar@gmail.com>
parents:
461
diff
changeset
|
172 params = (version.SAVE_GAME_VERSION, data) |
3d173ea43ad5
Add version number to saved games.
Simon Cross <hodgestar@gmail.com>
parents:
461
diff
changeset
|
173 xml = xmlrpclib.dumps(params, "foxassault") |
450
5d74d0e4a4cc
Switch to XML (RPC) for save game encoding.
Simon Cross <hodgestar@gmail.com>
parents:
448
diff
changeset
|
174 try: |
5d74d0e4a4cc
Switch to XML (RPC) for save game encoding.
Simon Cross <hodgestar@gmail.com>
parents:
448
diff
changeset
|
175 open(dialog.value, "wb").write(xml) |
5d74d0e4a4cc
Switch to XML (RPC) for save game encoding.
Simon Cross <hodgestar@gmail.com>
parents:
448
diff
changeset
|
176 except Exception, e: |
5d74d0e4a4cc
Switch to XML (RPC) for save game encoding.
Simon Cross <hodgestar@gmail.com>
parents:
448
diff
changeset
|
177 print "Failed to save game: %s" % (e,) |
446
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
178 |
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
179 dialog.connect(gui.CHANGE, save) |
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
180 dialog.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
|
181 |
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 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
|
183 """Load game 'dialog'.""" |
446
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
184 dialog = gui.FileDialog("Load game ...", button_txt="Load") |
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
185 |
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
186 def restore(): |
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
187 if dialog.value is None: |
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
188 return |
450
5d74d0e4a4cc
Switch to XML (RPC) for save game encoding.
Simon Cross <hodgestar@gmail.com>
parents:
448
diff
changeset
|
189 try: |
5d74d0e4a4cc
Switch to XML (RPC) for save game encoding.
Simon Cross <hodgestar@gmail.com>
parents:
448
diff
changeset
|
190 xml = open(dialog.value, "rb").read() |
5d74d0e4a4cc
Switch to XML (RPC) for save game encoding.
Simon Cross <hodgestar@gmail.com>
parents:
448
diff
changeset
|
191 params, methodname = xmlrpclib.loads(xml) |
5d74d0e4a4cc
Switch to XML (RPC) for save game encoding.
Simon Cross <hodgestar@gmail.com>
parents:
448
diff
changeset
|
192 if methodname != "foxassault": |
466
3d173ea43ad5
Add version number to saved games.
Simon Cross <hodgestar@gmail.com>
parents:
461
diff
changeset
|
193 raise ValueError("File does not appear to be a " |
3d173ea43ad5
Add version number to saved games.
Simon Cross <hodgestar@gmail.com>
parents:
461
diff
changeset
|
194 "Fox Assault save game.") |
3d173ea43ad5
Add version number to saved games.
Simon Cross <hodgestar@gmail.com>
parents:
461
diff
changeset
|
195 save_version = params[0] |
3d173ea43ad5
Add version number to saved games.
Simon Cross <hodgestar@gmail.com>
parents:
461
diff
changeset
|
196 if save_version != version.SAVE_GAME_VERSION: |
3d173ea43ad5
Add version number to saved games.
Simon Cross <hodgestar@gmail.com>
parents:
461
diff
changeset
|
197 raise ValueError("Incompatible save game version.") |
3d173ea43ad5
Add version number to saved games.
Simon Cross <hodgestar@gmail.com>
parents:
461
diff
changeset
|
198 data = params[1] |
450
5d74d0e4a4cc
Switch to XML (RPC) for save game encoding.
Simon Cross <hodgestar@gmail.com>
parents:
448
diff
changeset
|
199 except Exception, e: |
5d74d0e4a4cc
Switch to XML (RPC) for save game encoding.
Simon Cross <hodgestar@gmail.com>
parents:
448
diff
changeset
|
200 "Failed to load game: %s" % (e,) |
5d74d0e4a4cc
Switch to XML (RPC) for save game encoding.
Simon Cross <hodgestar@gmail.com>
parents:
448
diff
changeset
|
201 return |
5d74d0e4a4cc
Switch to XML (RPC) for save game encoding.
Simon Cross <hodgestar@gmail.com>
parents:
448
diff
changeset
|
202 |
446
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
203 self.gameboard.restore_game(data) |
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
204 |
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
205 dialog.connect(gui.CHANGE, restore) |
0c523d384681
Basic load and save dialogs.
Simon Cross <hodgestar@gmail.com>
parents:
444
diff
changeset
|
206 dialog.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
|
207 |
433
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
208 update_cash_counter = mkcountupdate('cash_counter') |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
209 update_wood_counter = mkcountupdate('wood_counter') |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
210 update_fox_counter = mkcountupdate('killed_foxes') |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
211 update_chicken_counter = mkcountupdate('chicken_counter') |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
212 update_egg_counter = mkcountupdate('egg_counter') |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
213 update_day_counter = mkcountupdate('day_counter') |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
214 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
215 def add_spacer(self, height): |
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(gui.Spacer(0, height), colspan=2) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
218 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
219 def add_heading(self, text): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
220 self.tr() |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
221 self.td(mklabel(text), colspan=2) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
222 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
223 def add_tool_button(self, text, tool, price=None, cursor=None): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
224 if price is not None: |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
225 text = "%s (%s)" % (text, price) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
226 self.add_tool(text, lambda: self.gameboard.set_selected_tool(tool, |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
227 cursor)) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
228 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
229 def add_tool(self, text, func): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
230 label = gui.basic.Label(text) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
231 value = self._next_tool_value |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
232 self._next_tool_value += 1 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
233 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
|
234 tool.connect(gui.CLICK, func) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
235 self.tr() |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
236 self.td(tool, align=-1, colspan=2) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
237 return tool |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
238 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
239 def clear_tool(self): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
240 self.group.value = None |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
241 for item in self.group.widgets: |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
242 item.pcls = "" |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
243 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
244 def add_counter(self, icon, label): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
245 self.tr() |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
246 self.td(icon, width=self.rect.w/2) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
247 self.td(label, width=self.rect.w/2) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
248 |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
249 def resize(self, width=None, height=None): |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
250 width, height = gui.Table.resize(self, width, height) |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
251 width = constants.TOOLBAR_WIDTH |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
252 return width, height |
8643893635e7
Seperate toolbar and gameboard
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
253 |
447
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
254 class DefaultToolBar(BaseToolBar): |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
255 def __init__(self, gameboard, **params): |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
256 BaseToolBar.__init__(self, gameboard, **params) |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
257 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
|
258 self.make_toolbar() |
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 def make_toolbar(self): |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
261 self.add_tool_button("Select chicken", constants.TOOL_SELECT_CHICKENS, |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
262 None, cursors.cursors['select']) |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
263 |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
264 self.add_spacer(5) |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
265 |
458
7e4ea53d8b10
Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents:
454
diff
changeset
|
266 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
|
267 |
7e4ea53d8b10
Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents:
454
diff
changeset
|
268 self.add_tool_button("Move chickens", constants.TOOL_PLACE_ANIMALS, |
7e4ea53d8b10
Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents:
454
diff
changeset
|
269 None, cursors.cursors['select']) |
7e4ea53d8b10
Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents:
454
diff
changeset
|
270 |
454
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
271 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
|
272 |
460 | 273 self.add_tool('Trade wood', self.add_wood_toolbar) |
274 | |
458
7e4ea53d8b10
Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents:
454
diff
changeset
|
275 self.add_spacer(5) |
7e4ea53d8b10
Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents:
454
diff
changeset
|
276 |
7e4ea53d8b10
Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents:
454
diff
changeset
|
277 self.add_heading("Buildings") |
447
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
278 |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
279 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
|
280 |
458
7e4ea53d8b10
Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents:
454
diff
changeset
|
281 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
|
282 None, cursors.cursors['sell']) |
447
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
283 |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
284 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
|
285 |
458
7e4ea53d8b10
Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents:
454
diff
changeset
|
286 self.add_spacer(5) |
447
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
287 self.add_heading("Help") |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
288 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
|
289 |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
290 self.add_spacer(5) |
458
7e4ea53d8b10
Reorder toolbar. Fix 'Finished Day' position
Neil Muller <drnlmuller@gmail.com>
parents:
454
diff
changeset
|
291 self.add_heading("Game") |
447
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
292 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
|
293 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
|
294 |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
295 self.add_heading(" ") |
460 | 296 ## Dear pgu, is there a better way to get the current height? |
297 #_cur_width, cur_height = self.resize() | |
298 #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
|
299 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
|
300 |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
301 def add_building_toolbar(self): |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
302 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
|
303 width=self.style.width)) |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
304 |
454
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
305 def add_sell_toolbar(self): |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
306 self.gameboard.change_toolbar(SellToolBar(self.gameboard, |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
307 width=self.style.width)) |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
308 |
460 | 309 def add_wood_toolbar(self): |
310 self.gameboard.change_toolbar(WoodToolBar(self.gameboard, | |
311 width=self.style.width)) | |
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): |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
330 self.gameboard.set_cursor(cursors.cursors['arrow'], None) |
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) |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
344 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
|
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): |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
348 self.gameboard.set_cursor(cursors.cursors['arrow'], None) |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
349 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
|
350 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
|
351 equipment_cls, |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
352 equipment_cls.BUY_PRICE, |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
353 cursors.cursors.get('buy', None)) |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
354 self.add_spacer(15) |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
355 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
|
356 |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
357 def add_default_toolbar(self): |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
358 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
|
359 width=self.style.width)) |
f04a2490c35f
The sub-toolbar rewrite, the finally not crashing version
Neil Muller <drnlmuller@gmail.com>
parents:
446
diff
changeset
|
360 |
454
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
361 class SellToolBar(BaseToolBar): |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
362 def __init__(self, gameboard, **params): |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
363 BaseToolBar.__init__(self, gameboard, **params) |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
364 self.group = gui.Group(name='building_toolbar', value=None) |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
365 self.make_toolbar() |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
366 |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
367 def make_toolbar(self): |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
368 self.gameboard.set_cursor(cursors.cursors['arrow'], None) |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
369 |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
370 self.add_heading("Sell ...") |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
371 self.add_tool_button("Chicken", constants.TOOL_SELL_CHICKEN, |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
372 self.gameboard.level.sell_price_chicken, cursors.cursors['sell']) |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
373 self.add_tool_button("Egg", constants.TOOL_SELL_EGG, |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
374 self.gameboard.level.sell_price_egg, cursors.cursors['sell']) |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
375 self.add_tool_button("Equipment", constants.TOOL_SELL_EQUIPMENT, |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
376 None, cursors.cursors['sell']) |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
377 self.add_spacer(15) |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
378 self.add_tool('Done', self.add_default_toolbar) |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
379 |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
380 def add_default_toolbar(self): |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
381 self.gameboard.change_toolbar(DefaultToolBar(self.gameboard, |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
382 width=self.style.width)) |
30e6d6097b12
Make selling things sub-toolbar
Neil Muller <drnlmuller@gmail.com>
parents:
450
diff
changeset
|
383 |
460 | 384 class WoodToolBar(BaseToolBar): |
385 def __init__(self, gameboard, **params): | |
386 BaseToolBar.__init__(self, gameboard, **params) | |
387 self.group = gui.Group(name='building_toolbar', value=None) | |
388 self.make_toolbar() | |
389 | |
390 def make_toolbar(self): | |
391 self.gameboard.set_cursor(cursors.cursors['arrow'], None) | |
392 | |
393 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
|
394 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
|
395 self.add_tool("Sell 5 planks (%s)" % self.gameboard.wood_sell_price, self.sell_wood) |
460 | 396 |
397 self.add_spacer(15) | |
398 self.add_tool('Done', self.add_default_toolbar) | |
399 | |
400 def add_default_toolbar(self): | |
401 self.gameboard.change_toolbar(DefaultToolBar(self.gameboard, | |
402 width=self.style.width)) | |
403 | |
404 def buy_wood(self): | |
405 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
|
406 self.gameboard.add_wood(5) |
460 | 407 self.gameboard.add_cash(-self.gameboard.wood_buy_price) |
408 | |
409 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
|
410 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
|
411 self.gameboard.add_wood(-5) |
460 | 412 self.gameboard.add_cash(self.gameboard.wood_sell_price) |