Mercurial > rinkhals
changeset 197:d74693555b86
Put chickens into first empty space in buildings to make it easier to add lots of chickens.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Fri, 04 Sep 2009 19:32:30 +0000 |
parents | edcb5edfa0ff |
children | 355eaae40b1f |
files | gamelib/gameboard.py |
diffstat | 1 files changed, 23 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/gamelib/gameboard.py Fri Sep 04 19:27:26 2009 +0000 +++ b/gamelib/gameboard.py Fri Sep 04 19:32:30 2009 +0000 @@ -338,15 +338,31 @@ return building = self.get_building(tile_pos) if building: - self.open_building_dialog(building) + if self.animal_to_place: + try: + place = building.first_empty_place() + self.relocate_animal(self.animal_to_place, place=place) + self.animal_to_place = None + pygame.mouse.set_cursor(*cursors.cursors['select']) + except buildings.BuildingFullError: + pass + else: + self.open_building_dialog(building) return if self.tv.get(tile_pos) == self.GRASSLAND: if self.animal_to_place is not None: - occupant = self.animal_to_place - if occupant.abode is not None: - occupant.abode.clear_occupant() - occupant.set_pos(tile_pos) - self.set_visibility(occupant) + self.relocate_animal(self.animal_to_place, tile_pos=tile_pos) + + def relocate_animal(self, chicken, tile_pos=None, place=None): + assert((tile_pos, place) != (None, None)) + if chicken.abode is not None: + chicken.abode.clear_occupant() + if tile_pos: + chicken.set_pos(tile_pos) + else: + place.set_occupant(chicken) + chicken.set_pos(place.get_pos()) + self.set_visibility(chicken) def set_visibility(self, chicken): if chicken.outside(): @@ -405,8 +421,6 @@ sell_callback) old_abode = self.animal_to_place.abode - if old_abode is not None: - old_abode.clear_occupant() if id(old_abode) in place_button_map: old_button = place_button_map[id(old_abode)] old_button.value = icons.EMPTY_NEST_ICON @@ -414,10 +428,7 @@ old_button.connect(gui.CLICK, set_occupant, place, button, sell_callback) - chicken = self.animal_to_place - place.set_occupant(chicken) - chicken.set_pos(place.get_pos()) - self.set_visibility(self.animal_to_place) + self.relocate_animal(self.animal_to_place, place=place) place_button_map = {}