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)