Source code for mini_arcade_core.engine.render.effects.registry

"""
Screen-space post effects registry.
"""

from __future__ import annotations

from dataclasses import dataclass, field

from mini_arcade_core.engine.render.effects.base import Effect


[docs] @dataclass class EffectRegistry: """ Registry of available screen-space post effects. :ivar _effects: dict[str, Effect]: Internal mapping of effect IDs to effects. """ _effects: dict[str, Effect] = field(default_factory=dict)
[docs] def register(self, effect: Effect): """ Register a new effect in the registry. :param effect: Effect to register. :type effect: Effect """ self._effects[effect.effect_id] = effect
[docs] def get(self, effect_id: str) -> Effect | None: """ Get an effect by its ID. :param effect_id: ID of the effect to retrieve. :type effect_id: str :return: Effect instance or None if not found. :rtype: Effect | None """ return self._effects.get(effect_id)
[docs] def all_ids(self) -> list[str]: """ Get a list of all registered effect IDs. :return: List of effect IDs. :rtype: list[str] """ return list(self._effects.keys())