mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-25 16:33:20 +08:00
54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
# 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))
|