Mercurial > rinkhals
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) |