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)