Skip to main content

gamestate Folder

Folders Index

folderrules
foldersystems
foldertypes

Files Index

filehelios/engine/mechanics/gamestate/_module.ixx

Game state management module for the helios engine. More...

fileGameStateManager.ixx

Type alias for game state manager. More...

Description

helios::engine::mechanics::gamestate

Game state management for the helios engine.

This module provides domain-specific types and bindings for managing game states (Booted, Title, MatchReady, Running, Paused). It uses the generic helios::engine::state framework.

Components

ComponentDescription
GameStateManagerType alias for StateManager<GameState>
GameStateEnum defining application-level states
GameStateTransitionIdEnum defining valid transition triggers

Submodules

SubmodulePurpose
rules/Default transition rules and guards
systems/Systems for input-driven state changes
types/Core types, enums, and type trait specializations

Architecture

GameStateManager is a type alias for StateManager<GameState>:

The generic StateManager provides:

  • Rule-based transitions with optional guards
  • Listener notifications on state changes
  • Command-driven state changes via StateCommand<GameState>

State Flow

 ┌──────────┐ BootRequest ┌──────────┐ TitleRequest ┌──────────┐
 │Undefined │ ────────────► │ Booted │ ─────────────► │ Title │
 └──────────┘ └──────────┘ └──────────┘
 
  ReadyMatchRequest
 
 
  ┌────────────┐
  ┌─── TogglePause ────────── │ Running │
  │ └────────────┘
  ▼ ▲
  ┌──────────┐ │
  │ Paused │ ─── TogglePause ───────────┘
  └──────────┘

Usage

 using namespace helios::engine::state;
 
 // Create manager with rules
 auto manager = std::make_unique<GameStateManager>(gameStateRules);
 
 // Add listeners
 manager->addStateListener(std::make_unique<LambdaStateListener<types::GameState>>(
  /* onExit, onTransition, onEnter callbacks */
 ));
 
 // Submit transition via command
 commandBuffer.add<StateCommand<types::GameState>>(
  StateTransitionRequest<types::GameState>{
  }
 );


Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.15.0.