Mercurial > rinkhals
comparison gamelib/gameboard.py @ 40:678421bd58ee
Money counter with very ugly display hack.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Mon, 31 Aug 2009 16:33:51 +0000 |
parents | ec79aabe2bf1 |
children | 0d4799866bcf |
comparison
equal
deleted
inserted
replaced
39:ec79aabe2bf1 | 40:678421bd58ee |
---|---|
2 from pygame.locals import MOUSEBUTTONDOWN, KEYDOWN, K_UP, K_DOWN, K_LEFT, K_RIGHT | 2 from pygame.locals import MOUSEBUTTONDOWN, KEYDOWN, K_UP, K_DOWN, K_LEFT, K_RIGHT |
3 from pgu import gui | 3 from pgu import gui |
4 | 4 |
5 import data | 5 import data |
6 import tiles | 6 import tiles |
7 import constants | |
7 | 8 |
8 # FIXME: These should probably be proper events of some kind. | 9 # FIXME: These should probably be proper events of some kind. |
9 SELL_CHICKEN = None | 10 SELL_CHICKEN = None |
10 SELL_EGG = None | 11 SELL_EGG = None |
11 BUY_FENCE = 2 | 12 BUY_FENCE = 2 |
12 BUY_HENHOUSE = 3 | 13 BUY_HENHOUSE = 3 |
13 | 14 |
14 | 15 |
16 class OpaqueLabel(gui.Label): | |
17 def paint(self, s): | |
18 s.fill(self.style.background) | |
19 gui.Label.paint(self, s) | |
20 | |
21 def update_value(self, value): | |
22 self.value = value | |
23 self.style.width, self.style.height = self.font.size(self.value) | |
24 self.repaint() | |
25 | |
26 | |
15 class ToolBar(gui.Table): | 27 class ToolBar(gui.Table): |
16 def __init__(self, gameboard, **params): | 28 def __init__(self, gameboard, **params): |
17 gui.Table.__init__(self, **params) | 29 gui.Table.__init__(self, **params) |
18 self.gameboard = gameboard | 30 self.gameboard = gameboard |
31 self.cash_counter = OpaqueLabel("Groats: ", color=constants.FG_COLOR) | |
32 self.tr() | |
33 self.add(self.cash_counter) | |
19 self.add_tool_button("Sell chicken", SELL_CHICKEN) | 34 self.add_tool_button("Sell chicken", SELL_CHICKEN) |
20 self.add_tool_button("Sell egg", SELL_EGG) | 35 self.add_tool_button("Sell egg", SELL_EGG) |
21 self.add_tool_button("Buy fence", BUY_FENCE) | 36 self.add_tool_button("Buy fence", BUY_FENCE) |
22 self.add_tool_button("Buy henhouse", BUY_HENHOUSE) | 37 self.add_tool_button("Buy henhouse", BUY_HENHOUSE) |
38 | |
39 def update_cash_counter(self, amount): | |
40 self.cash_counter.update_value("Groats: %s" % amount) | |
41 self.repaint() | |
23 | 42 |
24 def add_tool_button(self, text, tool): | 43 def add_tool_button(self, text, tool): |
25 button = gui.Button(text) | 44 button = gui.Button(text) |
26 button.connect(gui.CLICK, lambda: self.gameboard.set_selected_tool(tool)) | 45 button.connect(gui.CLICK, lambda: self.gameboard.set_selected_tool(tool)) |
27 self.tr() | 46 self.tr() |
65 def __init__(self): | 84 def __init__(self): |
66 self.tv = tiles.FarmVid() | 85 self.tv = tiles.FarmVid() |
67 self.tv.tga_load_tiles(data.filepath('tiles.tga'), self.TILE_DIMENSIONS) | 86 self.tv.tga_load_tiles(data.filepath('tiles.tga'), self.TILE_DIMENSIONS) |
68 self.tv.png_folder_load_tiles(data.filepath('tiles')) | 87 self.tv.png_folder_load_tiles(data.filepath('tiles')) |
69 self.tv.tga_load_level(data.filepath('level1.tga')) | 88 self.tv.tga_load_level(data.filepath('level1.tga')) |
89 self.create_disp() | |
90 | |
70 self.selected_tool = None | 91 self.selected_tool = None |
71 self.chickens = [] | 92 self.chickens = [] |
72 self.foxes = [] | 93 self.foxes = [] |
73 self.create_disp() | 94 self.cash = 0 |
74 | 95 |
75 def create_disp(self): | 96 def create_disp(self): |
76 width, height = pygame.display.get_surface().get_size() | 97 width, height = pygame.display.get_surface().get_size() |
77 tbl = gui.Table() | 98 tbl = gui.Table() |
78 tbl.tr() | 99 tbl.tr() |
79 tbl.td(ToolBar(self), width=self.TOOLBAR_WIDTH) | 100 self.toolbar = ToolBar(self) |
101 tbl.td(self.toolbar, width=self.TOOLBAR_WIDTH) | |
80 self.tvw = VidWidget(self, self.tv, width=width-self.TOOLBAR_WIDTH, height=height) | 102 self.tvw = VidWidget(self, self.tv, width=width-self.TOOLBAR_WIDTH, height=height) |
81 tbl.td(self.tvw) | 103 tbl.td(self.tvw) |
82 self.disp = gui.App() | 104 self.disp = gui.App() |
83 self.disp.init(tbl) | 105 self.disp.init(tbl) |
84 | 106 |
91 | 113 |
92 def loop(self): | 114 def loop(self): |
93 self.tv.loop() | 115 self.tv.loop() |
94 | 116 |
95 def set_selected_tool(self, tool): | 117 def set_selected_tool(self, tool): |
118 if tool is None: | |
119 self.add_cash(10) | |
96 self.selected_tool = tool | 120 self.selected_tool = tool |
97 | 121 |
98 def use_tool(self, e): | 122 def use_tool(self, e): |
99 if self.selected_tool is None: | 123 if self.selected_tool is None: |
100 return | 124 return |
138 | 162 |
139 def remove_chicken(self, chick): | 163 def remove_chicken(self, chick): |
140 if chick in self.chickens: | 164 if chick in self.chickens: |
141 self.chickens.remove(chick) | 165 self.chickens.remove(chick) |
142 self.tv.sprites.remove(chick) | 166 self.tv.sprites.remove(chick) |
167 | |
168 def add_cash(self, amount): | |
169 self.cash += amount | |
170 self.toolbar.update_cash_counter(self.cash) |