Source code for mini_arcade_core.runtime.context
"""
Runtime context module.
Defines the RuntimeContext dataclass for game runtime context.
"""
from __future__ import annotations
from dataclasses import dataclass
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from mini_arcade_core.engine.cheats import CheatManager
from mini_arcade_core.engine.commands import CommandQueue
from mini_arcade_core.engine.engine_config import EngineConfig
from mini_arcade_core.engine.game import Engine
from mini_arcade_core.engine.gameplay_settings import GamePlaySettings
from mini_arcade_core.runtime.services import RuntimeServices
# TODO: Remove cheats and command_queue from here later if unused.
[docs]
@dataclass(frozen=True)
class RuntimeContext:
"""
Context for the game runtime.
:ivar services (RuntimeServices): Runtime services.
:ivar config (EngineConfig): Engine configuration.
:ivar settings (GamePlaySettings): Game settings.
:ivar command_queue (CommandQueue | None): Optional command queue.
:ivar cheats (CheatManager | None): Optional cheat manager.
"""
services: RuntimeServices
config: EngineConfig
settings: GamePlaySettings
command_queue: CommandQueue | None = None
cheats: CheatManager | None = None
[docs]
@staticmethod
def from_game(game_entity: Engine) -> "RuntimeContext":
"""
Create a RuntimeContext from an Engine entity.
:param game_entity: Engine entity to extract context from.
:type game_entity: Engine
:return: RuntimeContext instance.
:rtype: RuntimeContext
"""
return RuntimeContext(
services=game_entity.services,
config=game_entity.config,
settings=game_entity.settings,
command_queue=game_entity.managers.command_queue,
cheats=game_entity.managers.cheats,
)