JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
IGameMode.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 Valentin Eloy
2// SPDX-License-Identifier: GPL-3.0-or-later
3
4#pragma once
5
6#include <string_view>
7#include <vector>
8
11
16
17namespace hmi {
18
32public:
33 IGameModePasses() = default;
34 virtual ~IGameModePasses() = default;
39
42 virtual void snapshotPreviousPositions() = 0;
44 virtual void advanceParticles(float fixedDelta) = 0;
46 virtual void advanceScreenShake(float fixedDelta) = 0;
48 virtual void moveCharacter(const core::PlayerInput& input, float fixedDelta) = 0;
50 virtual void advanceAnimations(float fixedDelta) = 0;
52 virtual void updateCamera(float fixedDelta) = 0;
54 virtual void updateMechanisms(const core::PlayerInput& input) = 0;
56 virtual void detectEvents() = 0;
58 virtual void updateMechanismVisuals(float fixedDelta) = 0;
60 [[nodiscard]] virtual core::LevelOutcome evaluateOutcome() = 0;
62 virtual void onLevelLost() = 0;
63};
64
78class IGameMode {
79public:
80 IGameMode() = default;
81 virtual ~IGameMode() = default;
82 IGameMode(const IGameMode&) = delete;
83 IGameMode& operator=(const IGameMode&) = delete;
84 IGameMode(IGameMode&&) = delete;
86
88 [[nodiscard]] virtual std::string_view name() const = 0;
89
96 [[nodiscard]] virtual std::vector<std::string_view> passOrder() const = 0;
97
99 virtual void onLoad(IGameModePasses& passes) = 0;
100
109 float fixedDelta) = 0;
110
112 virtual void onUnload(IGameModePasses& passes) = 0;
113};
114
115} // namespace hmi
Issue d'un niveau (en cours / gagné / perdu) évaluée depuis la position du personnage.
Intention de déplacement du personnage, neutre vis-à-vis de l'entrée physique.
Les passes d'un pas fixe, telles que l'orchestrateur les offre à un mode de jeu.
Definition IGameMode.h:31
virtual ~IGameModePasses()=default
IGameModePasses & operator=(const IGameModePasses &)=delete
virtual void onLevelLost()=0
Conséquences d'un échec : éclatement, secousse, puis rechargement du niveau.
virtual void advanceScreenShake(float fixedDelta)=0
Fait décroître la secousse d'écran courante (LOT-53).
virtual void moveCharacter(const core::PlayerInput &input, float fixedDelta)=0
Déplace le personnage selon l'intention de ce pas.
virtual void advanceAnimations(float fixedDelta)=0
Avance les animations d'entités et l'horloge des tuiles animées (EX-REN-012).
virtual void detectEvents()=0
Relève les transitions du pas (personnage, mécanismes) en événements de jeu (LOT-60).
virtual void updateCamera(float fixedDelta)=0
Recadre la caméra selon le mode de cadrage résolu du niveau (EX-LVL-006).
IGameModePasses(const IGameModePasses &)=delete
virtual core::LevelOutcome evaluateOutcome()=0
virtual void updateMechanismVisuals(float fixedDelta)=0
Projette l'état logique des mécanismes sur leur apparence (LOT-47, EX-REN-006).
virtual void advanceParticles(float fixedDelta)=0
Avance les particules déjà émises (LOT-53), avant que ce pas n'en émette de nouvelles.
IGameModePasses(IGameModePasses &&)=delete
virtual void updateMechanisms(const core::PlayerInput &input)=0
Résout les mécanismes à partir de la boîte du personnage et de son intention.
IGameModePasses & operator=(IGameModePasses &&)=delete
IGameModePasses()=default
virtual void snapshotPreviousPositions()=0
Fige la position courante de chaque entité mobile comme sa position « précédente »,...
IGameMode & operator=(IGameMode &&)=delete
virtual void onLoad(IGameModePasses &passes)=0
Appelé quand le mode devient actif, une fois le niveau chargé.
IGameMode()=default
IGameMode & operator=(const IGameMode &)=delete
virtual void onUnload(IGameModePasses &passes)=0
Appelé quand le mode cesse d'être actif (bascule vers un autre mode, ou fin de session).
IGameMode(const IGameMode &)=delete
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 std::vector< std::string_view > passOrder() const =0
L'ordre des passes que step() enchaîne, nommées, pour les diagnostics.
virtual ~IGameMode()=default
virtual std::string_view name() const =0
IGameMode(IGameMode &&)=delete
LevelOutcome
Issue courante d'un niveau, déduite de la position du personnage.
Definition LevelOutcome.h:20
Definition AudioEngine.cpp:15
Intention de déplacement transmise à la physique, dissociée de toute touche.
Definition PlayerInput.h:21