Beispiel #1
0
    def __init__(self, position):
        GameSprite.__init__(self, position)

        self.pieces = ""

        self.stitch_image(self.random_part_image("grip"),
                          self.random_part_image("magazine"),
                          self.random_part_image("barrel"))

        self.rect = pygame.Rect(position, self.image.get_size())

        self.flipped = False

        self.name = self.generate_name()

        self.speed = random.randint(1, 12)

        self.examine = [
            self.name,
            random.choice(TYPES),
            "Fire rate: {}".format(random.randint(120, 600)),
            "Bullet speed: {}m/s".format(self.speed)
        ]

        self.recoil = 0
        self.recoil_step = self.speed

        self.being_used = False

        self.original_image = self.image

        self.rotation = 0
Beispiel #2
0
 def __init__(self, perk, position):
     """
     :param item: base.Item instance perk to show
     :param position: world position to drop the perk
     """
     GameSprite.__init__(self, position)
     self.examine = perk.examine
     self.item = perk
     self.image = perk.original_icon
     self.rect.size = self.image.get_rect().size
     dropped_perks.append(self)
Beispiel #3
0
 def __init__(self, perk, position):
     """
     :param item: base.Item instance perk to show
     :param position: world position to drop the perk
     """
     GameSprite.__init__(self, position)
     self.examine = perk.examine
     self.item = perk
     self.image = perk.original_icon
     self.rect.size = self.image.get_rect().size
     dropped_perks.append(self)
Beispiel #4
0
 def update(self):
     if not self.being_used:
         GameSprite.update(self)
Beispiel #5
0
 def __init__(self, position, texture):
     GameSprite.__init__(self, position)
     self.texture = texture
     self.update()
     self.is_particle = True
Beispiel #6
0
 def add_player_effect(self):
     """Add a player effect sprite.
     """
     self.player_effect = GameSprite((0, 0))
Beispiel #7
0
class BasicPerk(ScreenSprite):
    """Base perk class.

    Contains the amount and basic functions of every perk.
    """
    def __init__(self, name, desc, position=(0, 0)):
        ScreenSprite.__init__(self, position)
        self.examine = [name.title(), desc]
        self.amount = 0
        self.player_effect = None
        self.original_icon = None
        self.max_amount = 16

    def set_max_amount(self, amount):
        """Set the maximum amount of this item the player can own
        """
        self.max_amount = amount

    def add_player_effect(self):
        """Add a player effect sprite.
        """
        self.player_effect = GameSprite((0, 0))

    def set_icon(self, file, rect):
        """Set the inventory icon of the perk.

        :param file: string file to load from
        :param rect: rect location of image
        """
        self.create_image("{}{}.png".format(ITEM_FOLDER, file), rect)
        self.original_icon = self.image

    def acquire(self):
        """Acquire another perk of this type.

        :return: true if successful
        """
        if self.amount >= self.max_amount:
            return False

        self.visible = True
        self.amount += 1
        if self.amount > 1:
            am_image = font.mini_num.create_text(str(self.amount))
            new_icon = self.original_icon.copy()
            pos = (new_icon.get_width() - am_image.get_width(),
                   new_icon.get_height() - am_image.get_height())
            print(am_image.get_size())
            print(pos)
            new_icon.blit(am_image, pos)
            self.image = new_icon

        return True

    def draw_on_player(self, player, screen):
        """Draw an image or animation on the player.

        :param player: player to draw on
        :param screen: screen to blit to
        """
        if self.player_effect is not None:
            self.player_effect.rect.center = player.rect.center
            # TODO: allow for animations and syncing of animations to player
            # self.player_effect.set_animation(player.get_animation())
            self.player_effect.set_image(player.get_animation())
            self.player_effect.draw(screen)

    # Hook methods
    # used to change player behaviour without directly altering
    # the player class

    # All pre_ methods have the option of cancelling the
    # player event by returning True

    def pre_jump(self, player):
        return False

    def post_jump(self, player):
        pass

    def pre_shoot(self, player):
        return False

    def post_shoot(self, player):
        pass

    def pre_update(self, player):
        return False

    def post_update(self, player):
        pass
Beispiel #8
0
 def kill(self):
     # may be killed by other means than being picked up
     # i.e. despawn timer, leaving area
     GameSprite.kill(self)
     dropped_perks.remove(self)
Beispiel #9
0
 def __init__(self, position):
     GameSprite.__init__(self, position)
     self.id = create_net_entity(self)
     self.last_pos = self.rect.topleft
     self.last_vel = self.velocity.tup
Beispiel #10
0
 def __init__(self, position, texture):
     GameSprite.__init__(self, position)
     self.texture = texture
     self.update()
     self.is_particle = True
Beispiel #11
0
 def __init__(self, position):
     GameSprite.__init__(self, position)
     self.id = create_net_entity(self)
     self.last_pos = self.rect.topleft
     self.last_vel = self.velocity.tup
Beispiel #12
0
 def add_player_effect(self):
     """Add a player effect sprite.
     """
     self.player_effect = GameSprite((0, 0))
Beispiel #13
0
class BasicPerk(ScreenSprite):
    """Base perk class.

    Contains the amount and basic functions of every perk.
    """

    def __init__(self, name, desc, position=(0, 0)):
        ScreenSprite.__init__(self, position)
        self.examine = [name.title(), desc]
        self.amount = 0
        self.player_effect = None
        self.original_icon = None
        self.max_amount = 16

    def set_max_amount(self, amount):
        """Set the maximum amount of this item the player can own
        """
        self.max_amount = amount

    def add_player_effect(self):
        """Add a player effect sprite.
        """
        self.player_effect = GameSprite((0, 0))

    def set_icon(self, file, rect):
        """Set the inventory icon of the perk.

        :param file: string file to load from
        :param rect: rect location of image
        """
        self.create_image("{}{}.png".format(ITEM_FOLDER, file), rect)
        self.original_icon = self.image

    def acquire(self):
        """Acquire another perk of this type.

        :return: true if successful
        """
        if self.amount >= self.max_amount:
            return False

        self.visible = True
        self.amount += 1
        if self.amount > 1:
            am_image = font.mini_num.create_text(str(self.amount))
            new_icon = self.original_icon.copy()
            pos = (new_icon.get_width() - am_image.get_width(), new_icon.get_height() - am_image.get_height())
            print(am_image.get_size())
            print(pos)
            new_icon.blit(am_image, pos)
            self.image = new_icon

        return True

    def draw_on_player(self, player, screen):
        """Draw an image or animation on the player.

        :param player: player to draw on
        :param screen: screen to blit to
        """
        if self.player_effect is not None:
            self.player_effect.rect.center = player.rect.center
            # TODO: allow for animations and syncing of animations to player
            # self.player_effect.set_animation(player.get_animation())
            self.player_effect.set_image(player.get_animation())
            self.player_effect.draw(screen)

    # Hook methods
    # used to change player behaviour without directly altering
    # the player class

    # All pre_ methods have the option of cancelling the
    # player event by returning True

    def pre_jump(self, player):
        return False

    def post_jump(self, player):
        pass

    def pre_shoot(self, player):
        return False

    def post_shoot(self, player):
        pass

    def pre_update(self, player):
        return False

    def post_update(self, player):
        pass
Beispiel #14
0
 def kill(self):
     # may be killed by other means than being picked up
     # i.e. despawn timer, leaving area
     GameSprite.kill(self)
     dropped_perks.remove(self)