# HG changeset patch # User Neil Muller # Date 1259186868 0 # Node ID 3c9c664ccb85527bbd6fbf89dde586a7c99c2e86 # Parent a9f6c32c8ea99a709fb69d5f9579dde7e9c0abab selection groups diff -r a9f6c32c8ea9 -r 3c9c664ccb85 gamelib/gameboard.py --- a/gamelib/gameboard.py Wed Nov 25 22:06:04 2009 +0000 +++ b/gamelib/gameboard.py Wed Nov 25 22:07:48 2009 +0000 @@ -2,7 +2,8 @@ import pygame from pygame.locals import MOUSEBUTTONDOWN, MOUSEMOTION, KEYDOWN, K_UP, K_DOWN, \ - K_LEFT, K_RIGHT, KMOD_SHIFT + K_LEFT, K_RIGHT, KMOD_SHIFT, K_0, K_1, K_2, K_3, K_4, K_5, K_6, K_7, \ + K_8, K_9, KMOD_CTRL from pgu import gui import tiles @@ -104,6 +105,7 @@ self.selected_tool = None self.sprite_cursor = None self.selected_chickens = [] + self.stored_selections = {} self.chickens = set() self.foxes = set() self.buildings = set() @@ -375,14 +377,9 @@ for chicken in self.selected_chickens: do_sell(chicken) - def select_animal(self, animal, extend=True): - if extend: - self.selected_chickens.append(animal) - animal.equip(equipment.Spotlight()) - else: - self.unselect_all() - self.selected_chickens.append(animal) - animal.equip(equipment.Spotlight()) + def select_animal(self, animal): + self.selected_chickens.append(animal) + animal.equip(equipment.Spotlight()) def unselect_all(self): # Clear any highlights @@ -709,8 +706,25 @@ if e.key == K_RIGHT: self.tvw.move_view(constants.TILE_DIMENSIONS[0], 0) return True + elif e.type == KEYDOWN and e.key in \ + [K_0, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9]: + mods = pygame.key.get_mods() + if mods & KMOD_CTRL: + # store current selection + self.stored_selections[e.key] = self.selected_chickens[:] + else: + self.restore_selection(self.stored_selections.get(e.key, [])) return False + def restore_selection(self, selection): + self.unselect_all() + for chick in selection[:]: + if chick in self.chickens: + self.select_animal(chick) + else: + # Update stored selection + selection.remove(chick) + def advance_day(self): self.days += 1