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)