comparison 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
comparison
equal deleted inserted replaced
242:23533f3ccd8a 243:4f86c2616cdf
374 return 374 return
375 375
376 if do_sell(chick): 376 if do_sell(chick):
377 self.remove_chicken(chick) 377 self.remove_chicken(chick)
378 378
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
379 def sell_egg(self, tile_pos): 388 def sell_egg(self, tile_pos):
380 def do_sell(chicken): 389 def do_sell(chicken):
381 if chicken.egg: 390 # We try sell and egg
382 # We sell the egg 391 if self.sell_one_egg(chicken):
383 self.add_cash(constants.SELL_PRICE_EGG)
384 sound.play_sound("sell-chicken.ogg") 392 sound.play_sound("sell-chicken.ogg")
385 chicken.remove_egg() 393 # Force toolbar update
386 self.eggs -= 1
387 self.toolbar.update_egg_counter(self.eggs)
388 # Force update
389 self.toolbar.chsize() 394 self.toolbar.chsize()
390 return False 395 return False
391 396
392 building = self.get_building(tile_pos) 397 building = self.get_building(tile_pos)
393 if building and building.NAME in buildings.HENHOUSES: 398 if building and building.NAME in buildings.HENHOUSES:
431 return 436 return
432 if self.tv.get(tile_pos) == self.GRASSLAND: 437 if self.tv.get(tile_pos) == self.GRASSLAND:
433 if self.animal_to_place is not None: 438 if self.animal_to_place is not None:
434 self.animal_to_place.unequip_by_name("nest") 439 self.animal_to_place.unequip_by_name("nest")
435 self.relocate_animal(self.animal_to_place, tile_pos=tile_pos) 440 self.relocate_animal(self.animal_to_place, tile_pos=tile_pos)
436 if self.animal_to_place.egg: 441 self.eggs -= self.animal_to_place.get_num_eggs()
437 self.animal_to_place.remove_egg() 442 self.animal_to_place.remove_eggs()
438 self.eggs -= 1 443 self.toolbar.update_egg_counter(self.eggs)
439 self.toolbar.update_egg_counter(self.eggs)
440 444
441 def relocate_animal(self, chicken, tile_pos=None, place=None): 445 def relocate_animal(self, chicken, tile_pos=None, place=None):
442 assert((tile_pos, place) != (None, None)) 446 assert((tile_pos, place) != (None, None))
443 if chicken.abode is not None: 447 if chicken.abode is not None:
444 chicken.abode.clear_occupant() 448 chicken.abode.clear_occupant()
716 self.eggs = 0 720 self.eggs = 0
717 for building in self.buildings: 721 for building in self.buildings:
718 if building.NAME in buildings.HENHOUSES: 722 if building.NAME in buildings.HENHOUSES:
719 for chicken in building.occupants(): 723 for chicken in building.occupants():
720 chicken.lay() 724 chicken.lay()
721 if chicken.egg: 725 self.eggs += chicken.get_num_eggs()
722 self.eggs += 1
723 self.toolbar.update_egg_counter(self.eggs) 726 self.toolbar.update_egg_counter(self.eggs)
724 727
725 def hatch_eggs(self): 728 def hatch_eggs(self):
726 for building in self.buildings: 729 for building in self.buildings:
727 if building.NAME in buildings.HENHOUSES: 730 if building.NAME in buildings.HENHOUSES:
728 for chicken in building.occupants(): 731 for chicken in building.occupants():
729 new_chick = chicken.hatch() 732 new_chick = chicken.hatch(self)
730 if new_chick: 733 if new_chick:
731 self.eggs -= 1
732 try: 734 try:
733 building.add_occupant(new_chick) 735 building.add_occupant(new_chick)
734 self.add_chicken(new_chick) 736 self.add_chicken(new_chick)
735 new_chick.equip(equipment.Nest()) 737 new_chick.equip(equipment.Nest())
736 except buildings.BuildingFullError: 738 except buildings.BuildingFullError:
762 764
763 def remove_chicken(self, chick): 765 def remove_chicken(self, chick):
764 if chick is self.animal_to_place: 766 if chick is self.animal_to_place:
765 self.select_animal_to_place(None) 767 self.select_animal_to_place(None)
766 self.chickens.discard(chick) 768 self.chickens.discard(chick)
767 if chick.egg: 769 self.eggs -= chick.get_num_eggs()
768 self.eggs -= 1 770 self.toolbar.update_egg_counter(self.eggs)
769 self.toolbar.update_egg_counter(self.eggs)
770 if chick.abode: 771 if chick.abode:
771 chick.abode.clear_occupant() 772 chick.abode.clear_occupant()
772 self.toolbar.update_chicken_counter(len(self.chickens)) 773 self.toolbar.update_chicken_counter(len(self.chickens))
773 if chick in self.tv.sprites and chick.outside(): 774 if chick in self.tv.sprites and chick.outside():
774 self.tv.sprites.remove(chick) 775 self.tv.sprites.remove(chick)