# Copyright (c) 2011-2019 Eric Froemling """Powerup related functionality.""" from __future__ import annotations from typing import TYPE_CHECKING from dataclasses import dataclass if TYPE_CHECKING: from typing import Sequence, Tuple, Optional import ba @dataclass class PowerupMessage: # noinspection PyUnresolvedReferences """A message telling an object to accept a powerup. Category: Message Classes This message is normally received by touching a ba.PowerupBox. Attributes: poweruptype The type of powerup to be granted (a string). See ba.Powerup.poweruptype for available type values. source_node The node the powerup game from, or None otherwise. If a powerup is accepted, a ba.PowerupAcceptMessage should be sent back to the source_node to inform it of the fact. This will generally cause the powerup box to make a sound and disappear or whatnot. """ poweruptype: str source_node: Optional[ba.Node] = None @dataclass class PowerupAcceptMessage: """A message informing a ba.Powerup that it was accepted. Category: Message Classes This is generally sent in response to a ba.PowerupMessage to inform the box (or whoever granted it) that it can go away. """ def get_default_powerup_distribution() -> Sequence[Tuple[str, int]]: """Standard set of powerups.""" return (('triple_bombs', 3), ('ice_bombs', 3), ('punch', 3), ('impact_bombs', 3), ('land_mines', 2), ('sticky_bombs', 3), ('shield', 2), ('health', 1), ('curse', 1))