def _load_sprites(self, path): sprite_def = self.sprite_definitions() loaded_sprites = {} for player_id, mask in self.mask.items(): loaded_sprites[player_id] = {} for unit_type, directions in sprite_def.items(): file_name = directions["file_name"] sheet = pygame.image.load( open(os.path.join(path, file_name), "r")) unit = self.units[unit_type] loaded_sprites[player_id][unit_type] = {} for direction, defs in directions.items(): if direction == "file_name": continue loaded_sprites[player_id][unit_type][direction] = {} for state, values in defs.items(): loaded_sprites[player_id][unit_type][direction][ state] = [] for (x, y, flip) in values: sprite = util.get_sprite( sheet, x, y, self.tile_size * unit.height, flip) # Tinting self._color_surface(sprite, (170, 170, 170), mask) # Border if self.config.unit_outline: pygame.draw.rect( sprite, mask, (0, 0, sprite.get_width() / self.scale_factor, sprite.get_height() / self.scale_factor), 2) new_width = int(sprite.get_width() / self.scale_factor) new_height = int(sprite.get_height() / self.scale_factor) sprite = pygame.transform.scale( sprite, (new_width, new_height)) loaded_sprites[player_id][unit_type][direction][ state].append(sprite) return loaded_sprites
def sprites(self): sprites = { Unit.Peasant: { Direction.Left: [ util.get_sprite(self.peasant, 85, 4, 32, 32, 1, 1, True), util.get_sprite(self.peasant, 85, 42, 32, 32, 1, 1, True), util.get_sprite(self.peasant, 85, 82, 32, 32, 1, 1, True), util.get_sprite(self.peasant, 85, 118, 32, 32, 1, 1, True), util.get_sprite(self.peasant, 85, 155, 32, 32, 1, 1, True) ], Direction.Up: [ util.get_sprite(self.peasant, 15, 4, 32, 32, 1, 1), util.get_sprite(self.peasant, 15, 42, 32, 32, 1, 1), util.get_sprite(self.peasant, 15, 82, 32, 32, 1, 1), util.get_sprite(self.peasant, 15, 118, 32, 32, 1, 1), util.get_sprite(self.peasant, 15, 155, 32, 32, 1, 1) ], Direction.Right: [ util.get_sprite(self.peasant, 85, 4, 32, 32, 1, 1), util.get_sprite(self.peasant, 85, 42, 32, 32, 1, 1), util.get_sprite(self.peasant, 85, 82, 32, 32, 1, 1), util.get_sprite(self.peasant, 85, 118, 32, 32, 1, 1), util.get_sprite(self.peasant, 85, 155, 32, 32, 1, 1) ], Direction.Down: [ util.get_sprite(self.peasant, 164, 4, 32, 32, 1, 1), util.get_sprite(self.peasant, 164, 42, 32, 32, 1, 1), util.get_sprite(self.peasant, 164, 82, 32, 32, 1, 1), util.get_sprite(self.peasant, 164, 118, 32, 32, 1, 1), util.get_sprite(self.peasant, 164, 155, 32, 32, 1, 1) ], Direction.UpLeft: [ util.get_sprite(self.peasant, 50, 4, 32, 32, 1, 1, True), util.get_sprite(self.peasant, 50, 42, 32, 32, 1, 1, True), util.get_sprite(self.peasant, 50, 82, 32, 32, 1, 1, True), util.get_sprite(self.peasant, 50, 118, 32, 32, 1, 1, True), util.get_sprite(self.peasant, 50, 155, 32, 32, 1, 1, True) ], Direction.UpRight: [ util.get_sprite(self.peasant, 50, 4, 32, 32, 1, 1), util.get_sprite(self.peasant, 50, 42, 32, 32, 1, 1), util.get_sprite(self.peasant, 50, 82, 32, 32, 1, 1), util.get_sprite(self.peasant, 50, 118, 32, 32, 1, 1), util.get_sprite(self.peasant, 50, 155, 32, 32, 1, 1) ], Direction.DownLeft: [ util.get_sprite(self.peasant, 120, 4, 32, 32, 1, 1, True), util.get_sprite(self.peasant, 120, 42, 32, 32, 1, 1, True), util.get_sprite(self.peasant, 120, 82, 32, 32, 1, 1, True), util.get_sprite(self.peasant, 120, 118, 32, 32, 1, 1, True), util.get_sprite(self.peasant, 120, 155, 32, 32, 1, 1, True) ], Direction.DownRight: [ util.get_sprite(self.peasant, 120, 4, 32, 32, 1, 1), util.get_sprite(self.peasant, 120, 42, 32, 32, 1, 1), util.get_sprite(self.peasant, 120, 82, 32, 32, 1, 1), util.get_sprite(self.peasant, 120, 118, 32, 32, 1, 1), util.get_sprite(self.peasant, 120, 155, 32, 32, 1, 1) ] }, Unit.Footman: { Direction.Left: [ util.get_sprite(self.footman, 170, 7, 32, 32, 1, 1, True), util.get_sprite(self.footman, 170, 56, 32, 32, 1, 1, True), util.get_sprite(self.footman, 170, 99, 32, 32, 1, 1, True), util.get_sprite(self.footman, 170, 138, 32, 32, 1, 1, True), util.get_sprite(self.footman, 170, 176, 32, 32, 1, 1, True) ], Direction.Up: [ util.get_sprite(self.footman, 21, 7, 32, 32, 1, 1), util.get_sprite(self.footman, 21, 56, 32, 32, 1, 1), util.get_sprite(self.footman, 21, 99, 32, 32, 1, 1), util.get_sprite(self.footman, 21, 138, 32, 32, 1, 1), util.get_sprite(self.footman, 21, 176, 32, 32, 1, 1) ], Direction.Right: [ util.get_sprite(self.footman, 170, 7, 32, 32, 1, 1), util.get_sprite(self.footman, 170, 56, 32, 32, 1, 1), util.get_sprite(self.footman, 170, 99, 32, 32, 1, 1), util.get_sprite(self.footman, 170, 138, 32, 32, 1, 1), util.get_sprite(self.footman, 170, 176, 32, 32, 1, 1) ], Direction.Down: [ util.get_sprite(self.footman, 315, 7, 32, 32, 1, 1), util.get_sprite(self.footman, 315, 56, 32, 36, 1, 1), util.get_sprite(self.footman, 315, 99, 32, 32, 1, 1), util.get_sprite(self.footman, 315, 138, 32, 36, 1, 1), util.get_sprite(self.footman, 315, 176, 32, 32, 1, 1) ], Direction.UpLeft: [ util.get_sprite(self.footman, 96, 7, 32, 32, 1, 1, True), util.get_sprite(self.footman, 96, 56, 32, 32, 1, 1, True), util.get_sprite(self.footman, 96, 99, 32, 32, 1, 1, True), util.get_sprite(self.footman, 96, 138, 32, 32, 1, 1, True), util.get_sprite(self.footman, 96, 176, 32, 32, 1, 1, True) ], Direction.UpRight: [ util.get_sprite(self.footman, 96, 7, 32, 32, 1, 1), util.get_sprite(self.footman, 96, 56, 32, 32, 1, 1), util.get_sprite(self.footman, 96, 99, 32, 32, 1, 1), util.get_sprite(self.footman, 96, 138, 32, 32, 1, 1), util.get_sprite(self.footman, 96, 176, 32, 32, 1, 1) ], Direction.DownLeft: [ util.get_sprite(self.footman, 241, 7, 32, 32, 1, 1, True), util.get_sprite(self.footman, 241, 56, 32, 32, 1, 1, True), util.get_sprite(self.footman, 241, 99, 32, 32, 1, 1, True), util.get_sprite(self.footman, 241, 138, 32, 32, 1, 1, True), util.get_sprite(self.footman, 241, 176, 32, 32, 1, 1, True) ], Direction.DownRight: [ util.get_sprite(self.footman, 241, 7, 32, 32, 1, 1), util.get_sprite(self.footman, 241, 56, 32, 32, 1, 1), util.get_sprite(self.footman, 241, 99, 32, 32, 1, 1), util.get_sprite(self.footman, 241, 138, 32, 32, 1, 1), util.get_sprite(self.footman, 241, 176, 32, 32, 1, 1) ], }, Unit.TownHall: { Direction.UpLeft: [ util.get_sprite(self.town_hall, 270, 156, 111, 93, 3, 3), ], Direction.UpRight: [ util.get_sprite(self.town_hall, 270, 156, 111, 93, 3, 3), ], Direction.Up: [ util.get_sprite(self.town_hall, 270, 20, 111, 93, 3, 3) ] }, Unit.Farm: { Direction.UpLeft: [ util.get_sprite(self.farm, 398, 70, 66, 66, 2, 2) ], Direction.UpRight: [ util.get_sprite(self.farm, 398, 70, 66, 66, 2, 2) ], Direction.Up: [ util.get_sprite(self.farm, 398, 1, 66, 66, 2, 2), ] }, Unit.Barracks: { Direction.UpLeft: [ util.get_sprite(self.barracks, 304, 560, 102, 102, 3, 3) ], Direction.UpRight: [ util.get_sprite(self.barracks, 304, 560, 102, 102, 3, 3) ], Direction.Up: [ util.get_sprite(self.barracks, 304, 457, 102, 102, 3, 3), ] } } p_sprites = {} for player_id, mask in self.mask.items(): p_sprites[player_id] = {} for unit_type, directions in sprites.items(): p_sprites[player_id][unit_type] = {} for direction, surfaces in directions.items(): p_sprites[player_id][unit_type][direction] = [] for surface in surfaces: c_surface = surface.copy() self.color_surface(c_surface, (170, 170, 170), mask) # Draw outline pygame.draw.rect(c_surface, mask, (0, 0, c_surface.get_width(), c_surface.get_height()), 5) p_sprites[player_id][unit_type][direction].append(c_surface) return p_sprites