Exemple #1
0
    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
Exemple #2
0
    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