Changeset 310:49c58dda8ac2


Ignore:
Timestamp:
Sep 5, 2009, 6:05:58 PM (11 years ago)
Author:
Neil Muller <drnlmuller@…>
Branch:
default
Convert:
svn:b4e93282-eac8-4b8b-b765-0f5d36de2b68@311
Message:

Refactor sell_callback, so sell_equipment work

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gamelib/gameboard.py

    r307 r310  
    443443    def sell_chicken(self, tile_pos):
    444444
    445         def do_sell(chicken):
     445        def do_sell(chicken, update_button=None):
    446446            if not chicken:
    447447                return False # sanity check
     
    454454            self.add_cash(constants.SELL_PRICE_CHICKEN)
    455455            sound.play_sound("sell-chicken.ogg")
     456            if update_button:
     457                update_button(chicken, empty=True)
     458            self.remove_chicken(chicken)
    456459            return True
    457460
     
    462465                self.open_building_dialog(building, do_sell)
    463466            return
    464 
    465         if do_sell(chick):
    466             self.remove_chicken(chick)
     467        do_sell(chick)
    467468
    468469    def sell_one_egg(self, chicken):
     
    476477
    477478    def sell_egg(self, tile_pos):
    478         def do_sell(chicken):
     479        def do_sell(chicken, update_button=None):
    479480            # We try sell and egg
    480481            if self.sell_one_egg(chicken):
     
    482483                # Force toolbar update
    483484                self.toolbar.chsize()
     485                if update_button:
     486                    update_button(chicken)
    484487            return False
    485488
     
    595598        def nest_clicked(place, button):
    596599            """Handle a nest being clicked."""
    597             # sell_callback should return true if we need to remove the
    598             # occupant
    599600            if place.occupant:
    600601                # there is an occupant, select or sell it
     
    608609                else:
    609610                    # Attempt to sell the occupant
    610                     if sell_callback(place.occupant):
    611                         # empty the nest (on button)
    612                         update_button(place.occupant, empty=True)
    613                         self.remove_chicken(place.occupant)
    614                     else:
    615                         # Update for equipment changes, etc.
    616                         update_button(place.occupant)
     611                    sell_callback(place.occupant, update_button)
    617612            else:
    618613                # there is no occupant, attempt to fill the space
     
    714709        equipment = equipment_cls()
    715710
    716         def do_equip(chicken):
     711        def do_equip(chicken, update_button=None):
    717712            # Try to equip the chicken
    718713            if equipment.place(chicken):
    719714                self.add_cash(-equipment.buy_price())
    720715                chicken.equip(equipment)
     716                if update_button:
     717                    update_button(chicken)
    721718            return False
    722719
     
    749746    def sell_equipment(self, tile_pos):
    750747        x, y = 0, 0
    751         def do_sell(chicken):
     748        def do_sell(chicken, update_button=None):
    752749            if not chicken.equipment:
    753750                return
     
    756753                self.add_cash(item.sell_price())
    757754                chicken.unequip(item)
     755                if update_button:
     756                    update_button(chicken)
    758757            else:
    759                 self.open_equipment_dialog(chicken, x, y)
     758                self.open_equipment_dialog(chicken, x, y, update_button)
    760759            return False
    761760
     
    770769            self.open_building_dialog(building, do_sell)
    771770
    772     def open_equipment_dialog(self, chicken, x, y):
     771    def open_equipment_dialog(self, chicken, x, y, update_button=None):
    773772        tbl = gui.Table()
    774773
     
    777776            self.add_cash(item.sell_price())
    778777            chicken.unequip(item)
     778            if update_button:
     779                update_button(chicken)
    779780            self.disp.close(dialog)
    780781
Note: See TracChangeset for help on using the changeset viewer.