comparison gamelib/gameboard.py @ 65:7e9c8ad06d32

Implement building selling.
author Simon Cross <hodgestar@gmail.com>
date Mon, 31 Aug 2009 20:44:00 +0000
parents 99fbb652ce8d
children edc15ce8fa30
comparison
equal deleted inserted replaced
64:99fbb652ce8d 65:7e9c8ad06d32
121 self.sell_chicken(e.pos) 121 self.sell_chicken(e.pos)
122 elif self.selected_tool == constants.TOOL_SELL_EGG: 122 elif self.selected_tool == constants.TOOL_SELL_EGG:
123 pass 123 pass
124 elif self.selected_tool == constants.TOOL_BUY_FENCE: 124 elif self.selected_tool == constants.TOOL_BUY_FENCE:
125 self.buy_fence(self.tv.screen_to_tile(e.pos)) 125 self.buy_fence(self.tv.screen_to_tile(e.pos))
126 elif self.selected_tool == constants.TOOL_SELL_BUILDING:
127 self.sell_building(self.tv.screen_to_tile(e.pos))
126 elif buildings.is_building(self.selected_tool): 128 elif buildings.is_building(self.selected_tool):
127 building_cls = self.selected_tool 129 self.buy_building(self.tv.screen_to_tile(e.pos), self.selected_tool)
128 tile_pos = self.tv.screen_to_tile(e.pos)
129 building = building_cls(tile_pos)
130 self.buy_building(building)
131 130
132 def get_chicken(self, pos): 131 def get_chicken(self, pos):
133 for chick in self.chickens: 132 for chick in self.chickens:
134 if chick.rect.collidepoint(pos): 133 if chick.rect.collidepoint(pos):
135 return chick 134 return chick
152 print "You can't afford a fence." 151 print "You can't afford a fence."
153 return 152 return
154 self.add_cash(-constants.BUY_PRICE_FENCE) 153 self.add_cash(-constants.BUY_PRICE_FENCE)
155 self.tv.set(tile_pos, tiles.REVERSE_TILE_MAP['fence']) 154 self.tv.set(tile_pos, tiles.REVERSE_TILE_MAP['fence'])
156 155
157 def buy_building(self, building): 156 def buy_building(self, tile_pos, building_cls):
157 building = building_cls(tile_pos)
158 if self.cash < building.buy_price(): 158 if self.cash < building.buy_price():
159 return 159 return
160 if building.place(self.tv): 160 if building.place(self.tv):
161 self.add_cash(-building.buy_price()) 161 self.add_cash(-building.buy_price())
162 self.add_building(building) 162 self.add_building(building)
163
164 def sell_building(self, tile_pos):
165 for building in self.buildings:
166 if building.covers(tile_pos):
167 self.add_cash(building.sell_price())
168 building.remove(self.tv)
169 self.remove_building(building)
163 170
164 def event(self, e): 171 def event(self, e):
165 if e.type == KEYDOWN: 172 if e.type == KEYDOWN:
166 if e.key == K_UP: 173 if e.key == K_UP:
167 self.tvw.move_view(0, -self.TILE_DIMENSIONS[1]) 174 self.tvw.move_view(0, -self.TILE_DIMENSIONS[1])
203 def remove_chicken(self, chick): 210 def remove_chicken(self, chick):
204 if chick in self.chickens: 211 if chick in self.chickens:
205 self.chickens.remove(chick) 212 self.chickens.remove(chick)
206 self.tv.sprites.remove(chick) 213 self.tv.sprites.remove(chick)
207 214
215 def remove_building(self, building):
216 if building in self.buildings:
217 self.buildings.remove(building)
218 self.tv.sprites.remove(building)
219
208 def add_cash(self, amount): 220 def add_cash(self, amount):
209 self.cash += amount 221 self.cash += amount
210 self.toolbar.update_cash_counter(self.cash) 222 self.toolbar.update_cash_counter(self.cash)