JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
hmi::IGameMode Class Referenceabstract

Un mode de jeu : l'ordre dans lequel les passes d'un pas fixe s'enchaînent. More...

#include <IGameMode.h>

Inheritance diagram for hmi::IGameMode:
hmi::CombatMode hmi::ExplorationMode

Public Member Functions

 IGameMode ()=default
virtual ~IGameMode ()=default
 IGameMode (const IGameMode &)=delete
IGameModeoperator= (const IGameMode &)=delete
 IGameMode (IGameMode &&)=delete
IGameModeoperator= (IGameMode &&)=delete
virtual std::string_view name () const =0
virtual std::vector< std::string_view > passOrder () const =0
 L'ordre des passes que step() enchaîne, nommées, pour les diagnostics.
virtual void onLoad (IGameModePasses &passes)=0
 Appelé quand le mode devient actif, une fois le niveau chargé.
virtual core::LevelOutcome step (IGameModePasses &passes, const core::PlayerInput &input, float fixedDelta)=0
 Avance d'un pas fixe, en enchaînant les passes dans l'ordre propre au mode.
virtual void onUnload (IGameModePasses &passes)=0
 Appelé quand le mode cesse d'être actif (bascule vers un autre mode, ou fin de session).

Detailed Description

Un mode de jeu : l'ordre dans lequel les passes d'un pas fixe s'enchaînent.

hmi::GameSession mêlait deux rôles — orchestrateur (monde ECS, caméra, événements, HUD, pas fixe, interpolation) et mode de jeu (l'ordre des passes lui-même). Tant qu'il n'y avait qu'un genre, la confusion ne coûtait rien. Le RPG a besoin d'au moins trois ordres différents : exploration (déplacement, animation, caméra, mécanismes, issue), dialogue (monde gelé, seul le runner de dialogue avance, LOT-15) et combat (initiative, tour actif, résolution d'action — l'exploration ne tourne plus du tout, LOT-18). Sans cette séparation, les trois s'entasseraient en if dans une fonction déjà longue.

La sélection se fait par polymorphisme, jamais par un if (mode == …) dans l'orchestrateur.

Constructor & Destructor Documentation

◆ IGameMode() [1/3]

hmi::IGameMode::IGameMode ( )
default

◆ ~IGameMode()

virtual hmi::IGameMode::~IGameMode ( )
virtualdefault

◆ IGameMode() [2/3]

hmi::IGameMode::IGameMode ( const IGameMode & )
delete

◆ IGameMode() [3/3]

hmi::IGameMode::IGameMode ( IGameMode && )
delete

Member Function Documentation

◆ name()

virtual std::string_view hmi::IGameMode::name ( ) const
nodiscardpure virtual
Returns
Le nom du mode, pour les diagnostics et les journaux.

Implemented in hmi::CombatMode, and hmi::ExplorationMode.

◆ onLoad()

virtual void hmi::IGameMode::onLoad ( IGameModePasses & passes)
pure virtual

Appelé quand le mode devient actif, une fois le niveau chargé.

Implemented in hmi::CombatMode, and hmi::ExplorationMode.

◆ onUnload()

virtual void hmi::IGameMode::onUnload ( IGameModePasses & passes)
pure virtual

Appelé quand le mode cesse d'être actif (bascule vers un autre mode, ou fin de session).

Implemented in hmi::CombatMode, and hmi::ExplorationMode.

◆ operator=() [1/2]

IGameMode & hmi::IGameMode::operator= ( const IGameMode & )
delete

◆ operator=() [2/2]

IGameMode & hmi::IGameMode::operator= ( IGameMode && )
delete

◆ passOrder()

virtual std::vector< std::string_view > hmi::IGameMode::passOrder ( ) const
nodiscardpure virtual

L'ordre des passes que step() enchaîne, nommées, pour les diagnostics.

Documentation exécutable : un test compare cette liste à la séquence réellement appelée, de sorte qu'un ordre modifié sans mettre la liste à jour échoue au lieu de mentir.

Implemented in hmi::CombatMode, and hmi::ExplorationMode.

◆ step()

virtual core::LevelOutcome hmi::IGameMode::step ( IGameModePasses & passes,
const core::PlayerInput & input,
float fixedDelta )
pure virtual

Avance d'un pas fixe, en enchaînant les passes dans l'ordre propre au mode.

Parameters
passesLes passes offertes par l'orchestrateur.
inputIntention de jeu déjà résolue pour ce pas.
fixedDeltaDurée du pas fixe, en secondes.
Returns
L'issue du niveau à l'issue du pas.

Implemented in hmi::CombatMode, and hmi::ExplorationMode.


The documentation for this class was generated from the following file:
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Game/IGameMode.h