Changeset 243:4f86c2616cdf


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

Variable number of eggs for chickens

Location:
gamelib
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • gamelib/animal.py

    r241 r243  
    134134                ("right_facing",))
    135135        Animal.__init__(self, image_left, image_right, pos)
    136         self.egg = None
    137         self.egg_counter = 0
     136        self.eggs = []
    138137
    139138    def move(self, gameboard):
     
    143142    def lay(self):
    144143        """See if the chicken lays an egg"""
    145         if not self.egg:
    146             self.egg = Egg(self.pos)
     144        if not self.eggs:
     145            for x in range(random.randint(1, 4)):
     146                self.eggs.append(Egg(self.pos))
    147147            self.equip(equipment.NestEgg())
    148148
    149     def remove_egg(self):
     149    def remove_eggs(self):
    150150        """Clean up the egg state"""
    151         self.egg = None
     151        self.eggs = []
    152152        self.unequip_by_name("nestegg")
    153153
    154     def hatch(self):
     154    def remove_one_egg(self):
     155        """Clean up the egg state"""
     156        self.eggs.pop()
     157        if not self.eggs:
     158            self.unequip_by_name("nestegg")
     159
     160    def get_num_eggs(self):
     161        return len(self.eggs)
     162
     163    def hatch(self, gameboard):
    155164        """See if we have an egg to hatch"""
    156         if self.egg:
    157             chick = self.egg.hatch()
     165        if self.eggs:
     166            chick = self.eggs[0].hatch()
    158167            if chick:
    159                 self.remove_egg()
     168                # sell the remaining eggs
     169                # Remove hatched egg
     170                self.eggs.pop()
     171                gameboard.eggs -= 1
     172                # Sell other eggs
     173                for egg in self.eggs[:]:
     174                    gameboard.sell_one_egg(self)
     175                self.remove_eggs() # clean up stale images, etc.
    160176            return chick
    161177        return None
     
    194210        image = imagecache.load_image('sprites/egg.png')
    195211        Animal.__init__(self, image, image, pos)
    196         self.counter = 2
     212        self.timer = 2
    197213
    198214    # Eggs don't move
    199215
    200216    def hatch(self):
    201         self.counter -= 1
    202         if self.counter == 0:
     217        self.timer -= 1
     218        if self.timer == 0:
    203219            return Chicken(self.pos)
    204220        return None
  • gamelib/gameboard.py

    r241 r243  
    377377            self.remove_chicken(chick)
    378378
     379    def sell_one_egg(self, chicken):
     380        if chicken.eggs:
     381            self.add_cash(constants.SELL_PRICE_EGG)
     382            chicken.remove_one_egg()
     383            self.eggs -= 1
     384            self.toolbar.update_egg_counter(self.eggs)
     385            return True
     386        return False
     387
    379388    def sell_egg(self, tile_pos):
    380389        def do_sell(chicken):
    381             if chicken.egg:
    382                 # We sell the egg
    383                 self.add_cash(constants.SELL_PRICE_EGG)
     390            # We try sell and egg
     391            if self.sell_one_egg(chicken):
    384392                sound.play_sound("sell-chicken.ogg")
    385                 chicken.remove_egg()
    386                 self.eggs -= 1
    387                 self.toolbar.update_egg_counter(self.eggs)
    388                 # Force update
     393                # Force toolbar update
    389394                self.toolbar.chsize()
    390395            return False
     
    434439                self.animal_to_place.unequip_by_name("nest")
    435440                self.relocate_animal(self.animal_to_place, tile_pos=tile_pos)
    436                 if self.animal_to_place.egg:
    437                     self.animal_to_place.remove_egg()
    438                     self.eggs -= 1
    439                     self.toolbar.update_egg_counter(self.eggs)
     441                self.eggs -= self.animal_to_place.get_num_eggs()
     442                self.animal_to_place.remove_eggs()
     443                self.toolbar.update_egg_counter(self.eggs)
    440444
    441445    def relocate_animal(self, chicken, tile_pos=None, place=None):
     
    719723                for chicken in building.occupants():
    720724                    chicken.lay()
    721                     if chicken.egg:
    722                         self.eggs += 1
     725                    self.eggs += chicken.get_num_eggs()
    723726        self.toolbar.update_egg_counter(self.eggs)
    724727
     
    727730            if building.NAME in buildings.HENHOUSES:
    728731                for chicken in building.occupants():
    729                     new_chick = chicken.hatch()
     732                    new_chick = chicken.hatch(self)
    730733                    if new_chick:
    731                         self.eggs -= 1
    732734                        try:
    733735                            building.add_occupant(new_chick)
     
    765767            self.select_animal_to_place(None)
    766768        self.chickens.discard(chick)
    767         if chick.egg:
    768             self.eggs -= 1
    769             self.toolbar.update_egg_counter(self.eggs)
     769        self.eggs -= chick.get_num_eggs()
     770        self.toolbar.update_egg_counter(self.eggs)
    770771        if chick.abode:
    771772            chick.abode.clear_occupant()
Note: See TracChangeset for help on using the changeset viewer.