Mercurial > rinkhals
diff 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 |
line wrap: on
line diff
--- a/gamelib/gameboard.py Sat Nov 28 19:37:08 2009 +0000 +++ b/gamelib/gameboard.py Sat Nov 28 19:59:46 2009 +0000 @@ -279,8 +279,9 @@ elif tool == constants.TOOL_SELL_EGG: self.sell_egg(None) return True - elif tool == constants.TOOL_SELL_EQUIPMENT: - self.sell_equipment(None) + elif toolbar.SellToolBar.is_equip_tool(tool): + equipment_cls = toolbar.SellToolBar.get_equip_cls(tool) + self.sell_equipment(None, equipment_cls) return True elif equipment.is_equipment(tool): self.buy_equipment(None, tool) @@ -386,12 +387,13 @@ self.select_chicken(self.tv.screen_to_tile(e.pos)) elif self.selected_tool == constants.TOOL_SELL_BUILDING: self.sell_building(self.tv.screen_to_tile(e.pos)) - elif self.selected_tool == constants.TOOL_SELL_EQUIPMENT: - self.sell_equipment(self.tv.screen_to_tile(e.pos)) elif self.selected_tool == constants.TOOL_REPAIR_BUILDING: self.repair_building(self.tv.screen_to_tile(e.pos)) elif buildings.is_building(self.selected_tool): self.buy_building(self.tv.screen_to_tile(e.pos), self.selected_tool) + elif toolbar.SellToolBar.is_equip_tool(self.selected_tool): + equipment_cls = toolbar.SellToolBar.get_equip_cls(self.selected_tool) + self.sell_equipment(self.tv.screen_to_tile(e.pos), equipment_cls) elif equipment.is_equipment(self.selected_tool): if not self.selected_chickens: # old selection behaviour @@ -836,19 +838,16 @@ self.add_wood(-building.repair_price()) building.repair() - def sell_equipment(self, tile_pos): + def sell_equipment(self, tile_pos, equipment_cls): x, y = 0, 0 def do_sell(chicken, update_button=None): - if not chicken.equipment: - return - elif len(chicken.equipment) == 1: - item = chicken.equipment[0] + items = [item for item in chicken.equipment + if isinstance(item, equipment_cls)] + for item in items: self.add_cash(item.sell_price()) chicken.unequip(item) if update_button: update_button(chicken) - else: - self.open_equipment_dialog(chicken, x, y, update_button) return False if tile_pos: chicken = self.get_outside_chicken(tile_pos)