# HG changeset patch # User Simon Cross # Date 1252092750 0 # Node ID d74693555b86bd3b39c519fe2dbffc2a1eca7910 # Parent edcb5edfa0ff3821ca821f3ae97a334911f8ccac Put chickens into first empty space in buildings to make it easier to add lots of chickens. diff -r edcb5edfa0ff -r d74693555b86 gamelib/gameboard.py --- 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 = {}