JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
MechanismController.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 <vector>
8
9#include "Core/Levels/Level.h"
10#include "Core/Levels/TileMap.h"
12#include "Core/Physics/Aabb.h"
13
18
19namespace core {
20
35 float mass = 1.0F;
36};
37
65public:
67 explicit MechanismController(const Level& level);
68
91 void update(const Aabb& playerBox, float playerMass = 1.0f, bool interactPressed = false,
92 const std::vector<TriggerWeight>& weights = {});
93
105 [[nodiscard]] bool crushedPlayer() const noexcept {
106 return _crushedPlayer;
107 }
108
110 [[nodiscard]] const TileMap& collisionMap() const noexcept {
111 return _collision;
112 }
113
115 [[nodiscard]] const std::vector<Mechanism>& mechanisms() const noexcept {
116 return _mechanisms;
117 }
118
120 [[nodiscard]] bool isDoorOpen(std::size_t index) const {
121 return _switchOn[index];
122 }
123
127 [[nodiscard]] bool isContinuous(std::size_t index) const {
128 return _continuous[index];
129 }
130
135 [[nodiscard]] bool isKey(std::size_t index) const {
136 return _isKey[index];
137 }
138
139private:
141 std::vector<Mechanism> _mechanisms;
142 std::vector<bool> _switchOn;
143 std::vector<bool>
145 std::vector<bool> _continuous;
147 std::vector<bool> _isKey;
149 std::vector<TileType>
153 bool _crushedPlayer = false;
154};
155
156} // namespace core
Boîte englobante alignée aux axes (AABB) et fabrique associée.
Niveau chargé : grille de tuiles, entrée/sortie et mécanismes.
Grille de tuiles typées d'un niveau.
Types de tuiles d'une carte et utilitaires associés.
Definition Level.h:125
std::vector< TileType > _openType
Type de tuile « porte ouverte » de chaque mécanisme (Door ou LockedDoor), capturé avant que le constr...
Definition MechanismController.h:150
std::vector< bool > _switchOn
État de chaque déclencheur (porte ouverte ?).
Definition MechanismController.h:142
const TileMap & collisionMap() const noexcept
Definition MechanismController.h:110
bool _crushedPlayer
Une porte s'est refermée sur le personnage au dernier pas.
Definition MechanismController.h:153
std::vector< bool > _playerOnSwitchPrev
Le personnage était-il sur le déclencheur au pas précédent ?
Definition MechanismController.h:144
bool isKey(std::size_t index) const
Definition MechanismController.h:135
std::vector< bool > _isKey
true = déclencheur TileType::Key (ramassage par Interagir, ouverture définitive), figé au chargement ...
Definition MechanismController.h:147
std::vector< Mechanism > _mechanisms
Liaisons déclencheur↔porte (positions).
Definition MechanismController.h:141
std::vector< bool > _continuous
true = plaque de pression (activation continue), figé au chargement ; false = interrupteur à bascule ...
Definition MechanismController.h:145
TileMap _collision
Copie mutable : portes Solid (fermées) / Door (ouvertes).
Definition MechanismController.h:140
bool isContinuous(std::size_t index) const
Definition MechanismController.h:127
const std::vector< Mechanism > & mechanisms() const noexcept
Definition MechanismController.h:115
void update(const Aabb &playerBox, float playerMass=1.0f, bool interactPressed=false, const std::vector< TriggerWeight > &weights={})
Met à jour les mécanismes pour un pas : bascule les interrupteurs touchés (front),...
Definition MechanismController.cpp:69
MechanismController(const Level &level)
Construit le contrôleur depuis level : portes fermées (solides) au départ.
Definition MechanismController.cpp:42
bool crushedPlayer() const noexcept
Une porte s'est-elle refermée sur le personnage au dernier update (EX-GP-021, LOT-65 TACHE-06) ?
Definition MechanismController.h:105
bool isDoorOpen(std::size_t index) const
Definition MechanismController.h:120
Grille dense de tuiles typées (EX-GP-001), origine haut-gauche.
Definition TileMap.h:25
Espace de noms du moteur et de la logique de jeu.
Definition Bootstrap.h:9
Rectangle aligné aux axes, décrit par ses coins min (haut-gauche) et max (bas-droite),...
Definition Aabb.h:23
Poids posé sur un déclencheur par autre chose que le personnage (EX-GP-025, LOT-65 TACHE-06).
Definition MechanismController.h:33
Aabb box
Boîte réelle du poids, en unités monde.
Definition MechanismController.h:34
float mass
Masse, comparée au même seuil que celle du personnage.
Definition MechanismController.h:35