Mercurial > rinkhals
comparison gamelib/gameboard.py @ 569:3ec614e6fd4a
Replace monolithic sell equipment tool with a tool for each type of equipment.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sat, 28 Nov 2009 19:59:46 +0000 |
parents | 37f7454518d5 |
children | be47830a56b1 |
comparison
equal
deleted
inserted
replaced
568:e813365af567 | 569:3ec614e6fd4a |
---|---|
277 self.sell_chicken(None) | 277 self.sell_chicken(None) |
278 return True | 278 return True |
279 elif tool == constants.TOOL_SELL_EGG: | 279 elif tool == constants.TOOL_SELL_EGG: |
280 self.sell_egg(None) | 280 self.sell_egg(None) |
281 return True | 281 return True |
282 elif tool == constants.TOOL_SELL_EQUIPMENT: | 282 elif toolbar.SellToolBar.is_equip_tool(tool): |
283 self.sell_equipment(None) | 283 equipment_cls = toolbar.SellToolBar.get_equip_cls(tool) |
284 self.sell_equipment(None, equipment_cls) | |
284 return True | 285 return True |
285 elif equipment.is_equipment(tool): | 286 elif equipment.is_equipment(tool): |
286 self.buy_equipment(None, tool) | 287 self.buy_equipment(None, tool) |
287 return True | 288 return True |
288 return False | 289 return False |
384 if not (mods & KMOD_SHIFT): | 385 if not (mods & KMOD_SHIFT): |
385 self.unselect_all() | 386 self.unselect_all() |
386 self.select_chicken(self.tv.screen_to_tile(e.pos)) | 387 self.select_chicken(self.tv.screen_to_tile(e.pos)) |
387 elif self.selected_tool == constants.TOOL_SELL_BUILDING: | 388 elif self.selected_tool == constants.TOOL_SELL_BUILDING: |
388 self.sell_building(self.tv.screen_to_tile(e.pos)) | 389 self.sell_building(self.tv.screen_to_tile(e.pos)) |
389 elif self.selected_tool == constants.TOOL_SELL_EQUIPMENT: | |
390 self.sell_equipment(self.tv.screen_to_tile(e.pos)) | |
391 elif self.selected_tool == constants.TOOL_REPAIR_BUILDING: | 390 elif self.selected_tool == constants.TOOL_REPAIR_BUILDING: |
392 self.repair_building(self.tv.screen_to_tile(e.pos)) | 391 self.repair_building(self.tv.screen_to_tile(e.pos)) |
393 elif buildings.is_building(self.selected_tool): | 392 elif buildings.is_building(self.selected_tool): |
394 self.buy_building(self.tv.screen_to_tile(e.pos), self.selected_tool) | 393 self.buy_building(self.tv.screen_to_tile(e.pos), self.selected_tool) |
394 elif toolbar.SellToolBar.is_equip_tool(self.selected_tool): | |
395 equipment_cls = toolbar.SellToolBar.get_equip_cls(self.selected_tool) | |
396 self.sell_equipment(self.tv.screen_to_tile(e.pos), equipment_cls) | |
395 elif equipment.is_equipment(self.selected_tool): | 397 elif equipment.is_equipment(self.selected_tool): |
396 if not self.selected_chickens: | 398 if not self.selected_chickens: |
397 # old selection behaviour | 399 # old selection behaviour |
398 self.buy_equipment(self.tv.screen_to_tile(e.pos), | 400 self.buy_equipment(self.tv.screen_to_tile(e.pos), |
399 self.selected_tool) | 401 self.selected_tool) |
834 if self.wood < building.repair_price(): | 836 if self.wood < building.repair_price(): |
835 return | 837 return |
836 self.add_wood(-building.repair_price()) | 838 self.add_wood(-building.repair_price()) |
837 building.repair() | 839 building.repair() |
838 | 840 |
839 def sell_equipment(self, tile_pos): | 841 def sell_equipment(self, tile_pos, equipment_cls): |
840 x, y = 0, 0 | 842 x, y = 0, 0 |
841 def do_sell(chicken, update_button=None): | 843 def do_sell(chicken, update_button=None): |
842 if not chicken.equipment: | 844 items = [item for item in chicken.equipment |
843 return | 845 if isinstance(item, equipment_cls)] |
844 elif len(chicken.equipment) == 1: | 846 for item in items: |
845 item = chicken.equipment[0] | |
846 self.add_cash(item.sell_price()) | 847 self.add_cash(item.sell_price()) |
847 chicken.unequip(item) | 848 chicken.unequip(item) |
848 if update_button: | 849 if update_button: |
849 update_button(chicken) | 850 update_button(chicken) |
850 else: | |
851 self.open_equipment_dialog(chicken, x, y, update_button) | |
852 return False | 851 return False |
853 if tile_pos: | 852 if tile_pos: |
854 chicken = self.get_outside_chicken(tile_pos) | 853 chicken = self.get_outside_chicken(tile_pos) |
855 if chicken is not None: | 854 if chicken is not None: |
856 do_sell(chicken) | 855 do_sell(chicken) |