JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
GameEvents.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 <cstddef>
7#include <optional>
8#include <vector>
9
12
17
18namespace hmi {
19
28enum class GameEvent {
29 // Personnage. **Sans producteur depuis le `LOT-06`** : ces quatre transitions étaient celles
30 // d'un personnage de plateforme, et le déplacement en vue de dessus n'a ni saut, ni
31 // atterrissage, ni glissade murale. Les valeurs restent déclarées — la table de sons
32 // (`hmi::soundForEvent`) s'y accroche, et
33 // c'est le combat (`LOT-21`) puis l'audio (`LOT-28`) qui diront ce que le RPG met à leur place.
38 // Mécanismes (détecté par `detectMechanismEvents`).
45 // Issue du pas (détecté par `detectOutcomeEvent`, depuis `core::LevelOutcome`).
51 // Interface (`LOT-59`) : raisés directement aux points de signal Qt existants, pas par
52 // diffusion d'état — la table de sons ci-dessous les couvre malgré tout, pour l'uniformité.
57};
58
60inline constexpr int GAME_EVENT_COUNT = static_cast<int>(GameEvent::PauseOpened) + 1;
61
65 std::vector<bool> doorOpen;
66
68 [[nodiscard]] static MechanismEventState capture(const core::MechanismController& mechanisms) {
70 state.doorOpen.reserve(mechanisms.mechanisms().size());
71 for (std::size_t index = 0; index < mechanisms.mechanisms().size(); ++index) {
72 state.doorOpen.push_back(mechanisms.isDoorOpen(index));
73 }
74 return state;
75 }
76};
77
91[[nodiscard]] std::vector<GameEvent> detectMechanismEvents(const MechanismEventState& previous,
92 const MechanismEventState& current,
93 const std::vector<bool>& isContinuous);
94
100[[nodiscard]] std::optional<GameEvent> detectOutcomeEvent(core::LevelOutcome outcome);
101
102} // namespace hmi
Issue d'un niveau (en cours / gagné / perdu) évaluée depuis la position du personnage.
Comportement des mécanismes interrupteur↔porte : état + grille de collision.
Fait vivre les mécanismes interrupteur/plaque ↔ porte d'un niveau (EX-GP-020, EX-GP-021,...
Definition MechanismController.h:64
const std::vector< Mechanism > & mechanisms() const noexcept
Definition MechanismController.h:115
bool isDoorOpen(std::size_t index) const
Definition MechanismController.h:120
LevelOutcome
Issue courante d'un niveau, déduite de la position du personnage.
Definition LevelOutcome.h:20
Definition AudioEngine.cpp:15
GameEvent
Événement discret survenu sur un pas de simulation ou une action d'interface.
Definition GameEvents.h:28
@ BlockPushed
Definition GameEvents.h:44
@ PressurePlateReleased
Definition GameEvents.h:43
@ Jumped
Definition GameEvents.h:34
@ MenuBack
Definition GameEvents.h:55
@ SwitchToggled
Definition GameEvents.h:39
@ PauseOpened
Definition GameEvents.h:56
@ Died
Definition GameEvents.h:46
@ ExitReached
La sortie de la carte a été atteinte.
Definition GameEvents.h:50
@ DoorClosed
Definition GameEvents.h:41
@ Landed
Definition GameEvents.h:35
@ DoorOpened
Definition GameEvents.h:40
@ WallContactEnter
Definition GameEvents.h:37
@ MenuConfirm
Definition GameEvents.h:54
@ Dashed
Definition GameEvents.h:36
@ PressurePlatePressed
Definition GameEvents.h:42
@ MenuNavigate
Definition GameEvents.h:53
std::optional< GameEvent > detectOutcomeEvent(core::LevelOutcome outcome)
Traduit l'issue d'un pas de simulation en événement.
Definition GameEvents.cpp:37
constexpr int GAME_EVENT_COUNT
Nombre de valeurs de GameEvent — pour les tests d'exhaustivité (parcours de l'énumération).
Definition GameEvents.h:60
std::vector< GameEvent > detectMechanismEvents(const MechanismEventState &previous, const MechanismEventState &current, const std::vector< bool > &isContinuous)
Détecte les transitions des mécanismes entre deux pas de simulation consécutifs.
Definition GameEvents.cpp:10
État « porte ouverte » de chaque mécanisme, même index que core::MechanismController::mechanisms().
Definition GameEvents.h:64
static MechanismEventState capture(const core::MechanismController &mechanisms)
Definition GameEvents.h:68
std::vector< bool > doorOpen
Definition GameEvents.h:65