diff gamelib/gameboard.py @ 243:4f86c2616cdf

Variable number of eggs for chickens
author Neil Muller <drnlmuller@gmail.com>
date Sat, 05 Sep 2009 12:05:08 +0000
parents 1a7000c8211c
children 634491bf37e8
line wrap: on
line diff
--- a/gamelib/gameboard.py	Sat Sep 05 11:37:03 2009 +0000
+++ b/gamelib/gameboard.py	Sat Sep 05 12:05:08 2009 +0000
@@ -376,16 +376,21 @@
         if do_sell(chick):
             self.remove_chicken(chick)
 
+    def sell_one_egg(self, chicken):
+        if chicken.eggs:
+            self.add_cash(constants.SELL_PRICE_EGG)
+            chicken.remove_one_egg()
+            self.eggs -= 1
+            self.toolbar.update_egg_counter(self.eggs)
+            return True
+        return False
+
     def sell_egg(self, tile_pos):
         def do_sell(chicken):
-            if chicken.egg:
-                # We sell the egg
-                self.add_cash(constants.SELL_PRICE_EGG)
+            # We try sell and egg
+            if self.sell_one_egg(chicken):
                 sound.play_sound("sell-chicken.ogg")
-                chicken.remove_egg()
-                self.eggs -= 1
-                self.toolbar.update_egg_counter(self.eggs)
-                # Force update
+                # Force toolbar update
                 self.toolbar.chsize()
             return False
 
@@ -433,10 +438,9 @@
             if self.animal_to_place is not None:
                 self.animal_to_place.unequip_by_name("nest")
                 self.relocate_animal(self.animal_to_place, tile_pos=tile_pos)
-                if self.animal_to_place.egg:
-                    self.animal_to_place.remove_egg()
-                    self.eggs -= 1
-                    self.toolbar.update_egg_counter(self.eggs)
+                self.eggs -= self.animal_to_place.get_num_eggs()
+                self.animal_to_place.remove_eggs()
+                self.toolbar.update_egg_counter(self.eggs)
 
     def relocate_animal(self, chicken, tile_pos=None, place=None):
         assert((tile_pos, place) != (None, None))
@@ -718,17 +722,15 @@
             if building.NAME in buildings.HENHOUSES:
                 for chicken in building.occupants():
                     chicken.lay()
-                    if chicken.egg:
-                        self.eggs += 1
+                    self.eggs += chicken.get_num_eggs()
         self.toolbar.update_egg_counter(self.eggs)
 
     def hatch_eggs(self):
         for building in self.buildings:
             if building.NAME in buildings.HENHOUSES:
                 for chicken in building.occupants():
-                    new_chick = chicken.hatch()
+                    new_chick = chicken.hatch(self)
                     if new_chick:
-                        self.eggs -= 1
                         try:
                             building.add_occupant(new_chick)
                             self.add_chicken(new_chick)
@@ -764,9 +766,8 @@
         if chick is self.animal_to_place:
             self.select_animal_to_place(None)
         self.chickens.discard(chick)
-        if chick.egg:
-            self.eggs -= 1
-            self.toolbar.update_egg_counter(self.eggs)
+        self.eggs -= chick.get_num_eggs()
+        self.toolbar.update_egg_counter(self.eggs)
         if chick.abode:
             chick.abode.clear_occupant()
         self.toolbar.update_chicken_counter(len(self.chickens))