JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
Level.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 <optional>
7#include <string>
8#include <utility>
9#include <vector>
10
14#include "Core/Levels/Plane.h"
16#include "Core/Levels/TileMap.h"
17
22
23namespace core {
24
36
50
80struct LevelData {
82 std::string name;
98 std::vector<TileLayer> layers;
100 std::vector<MapEntity> entities;
106 std::vector<Mechanism> mechanisms;
109 std::optional<std::string> background;
111 std::optional<std::string> skinSet;
113 std::vector<TileTextureOverride> textureOverrides;
119 std::vector<Plane> planes;
122 bool parallaxEnabled = true;
123};
124
125class Level {
126public:
131 explicit Level(LevelData data)
132 : _name(std::move(data.name)),
133 _tileMap(std::move(data.tileMap)),
134 _layers(std::move(data.layers)),
135 _entities(std::move(data.entities)),
136 _entry(data.entry),
137 _exit(data.exit),
138 _mechanisms(std::move(data.mechanisms)),
139 _background(std::move(data.background)),
140 _skinSet(std::move(data.skinSet)),
141 _textureOverrides(std::move(data.textureOverrides)),
142 _cameraFraming(std::move(data.cameraFraming)),
143 _planes(std::move(data.planes)),
145
147 [[nodiscard]] const std::string& name() const noexcept {
148 return _name;
149 }
150
152 [[nodiscard]] const TileMap& tileMap() const noexcept {
153 return _tileMap;
154 }
155
158 [[nodiscard]] const std::vector<TileLayer>& layers() const noexcept {
159 return _layers;
160 }
161
163 [[nodiscard]] const std::vector<MapEntity>& entities() const noexcept {
164 return _entities;
165 }
166
168 [[nodiscard]] GridPosition entry() const noexcept {
169 return _entry;
170 }
171
173 [[nodiscard]] GridPosition exit() const noexcept {
174 return _exit;
175 }
176
178 [[nodiscard]] const std::vector<Mechanism>& mechanisms() const noexcept {
179 return _mechanisms;
180 }
181
184 [[nodiscard]] const std::optional<std::string>& background() const noexcept {
185 return _background;
186 }
187
190 [[nodiscard]] const std::optional<std::string>& skinSet() const noexcept {
191 return _skinSet;
192 }
193
195 [[nodiscard]] const std::vector<TileTextureOverride>& textureOverrides() const noexcept {
196 return _textureOverrides;
197 }
198
200 [[nodiscard]] const std::vector<Plane>& planes() const noexcept {
201 return _planes;
202 }
203
207 [[nodiscard]] bool parallaxEnabled() const noexcept {
208 return _parallaxEnabled;
209 }
210
214 [[nodiscard]] const CameraFramingConfig& cameraFraming() const noexcept {
215 return _cameraFraming;
216 }
217
218private:
219 std::string _name;
221 std::vector<TileLayer> _layers;
222 std::vector<MapEntity> _entities;
225 std::vector<Mechanism> _mechanisms;
226 std::optional<std::string> _background;
227 std::optional<std::string> _skinSet;
228 std::vector<TileTextureOverride> _textureOverrides;
230 std::vector<Plane> _planes;
231 bool _parallaxEnabled = true;
232};
233
234} // namespace core
Mode de cadrage de caméra porté par le niveau (EX-LVL-006, EX-REN-016, LOT-64).
Position entière dans la grille d'un niveau (colonne, ligne).
Entité placée sur une carte : PNJ, coffre, panneau, portail, déclencheur (LOT-04).
Plan pictural d'un niveau : image couvrant le niveau entier (EX-DEC-040, LOT-69).
Couche de tuiles typée d'une carte (LOT-04).
Grille de tuiles typées d'un niveau.
const std::vector< TileLayer > & layers() const noexcept
Definition Level.h:158
GridPosition entry() const noexcept
Definition Level.h:168
std::vector< Mechanism > _mechanisms
Definition Level.h:225
const std::vector< Mechanism > & mechanisms() const noexcept
Definition Level.h:178
TileMap _tileMap
Definition Level.h:220
GridPosition _exit
Definition Level.h:224
GridPosition exit() const noexcept
Definition Level.h:173
const std::string & name() const noexcept
Definition Level.h:147
GridPosition _entry
Definition Level.h:223
std::vector< MapEntity > _entities
Definition Level.h:222
std::string _name
Definition Level.h:219
bool _parallaxEnabled
Definition Level.h:231
const std::optional< std::string > & skinSet() const noexcept
Definition Level.h:190
const CameraFramingConfig & cameraFraming() const noexcept
Definition Level.h:214
const std::optional< std::string > & background() const noexcept
Definition Level.h:184
CameraFramingConfig _cameraFraming
Definition Level.h:229
const std::vector< TileTextureOverride > & textureOverrides() const noexcept
Definition Level.h:195
std::optional< std::string > _skinSet
Definition Level.h:227
bool parallaxEnabled() const noexcept
Definition Level.h:207
std::optional< std::string > _background
Definition Level.h:226
std::vector< Plane > _planes
Definition Level.h:230
const std::vector< Plane > & planes() const noexcept
Definition Level.h:200
std::vector< TileLayer > _layers
Definition Level.h:221
const std::vector< MapEntity > & entities() const noexcept
Definition Level.h:163
Level(LevelData data)
Construit un niveau à partir de ses composantes nommées.
Definition Level.h:131
std::vector< TileTextureOverride > _textureOverrides
Definition Level.h:228
const TileMap & tileMap() const noexcept
Definition Level.h:152
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
Cadrage de caméra résolu d'un niveau : le mode retenu et ses paramètres.
Definition CameraFraming.h:71
Position d'une case dans la grille d'un niveau, en coordonnées entières.
Definition GridPosition.h:20
Niveau complet en mémoire : nom, grille de tuiles, entrée/sortie et mécanismes.
Definition Level.h:80
std::vector< TileTextureOverride > textureOverrides
Textures assignées par instance (EX-EDIT-043), prioritaires sur le skin de leur type.
Definition Level.h:113
bool parallaxEnabled
true si la parallaxe des plans s'applique (EX-DEC-043) ; le mode de cadrage peut la neutraliser par-d...
Definition Level.h:122
std::optional< std::string > skinSet
Nom du jeu de skins (EX-EDIT-024), absent pour le jeu par défaut.
Definition Level.h:111
std::vector< Mechanism > mechanisms
Liaisons interrupteur↔porte résolues.
Definition Level.h:106
std::vector< TileLayer > layers
Couches de tuiles de la carte (LOT-04), dans leur ordre de superposition.
Definition Level.h:98
std::optional< std::string > background
Nom de l'asset de fond (EX-REN-044), absent si aucun.
Definition Level.h:109
GridPosition exit
Position de sortie (case Exit).
Definition Level.h:104
std::vector< MapEntity > entities
Entités placées sur la carte (LOT-04) : PNJ, coffres, panneaux, portails, déclencheurs.
Definition Level.h:100
std::string name
Nom du niveau.
Definition Level.h:82
GridPosition entry
Position d'apparition (case Entry).
Definition Level.h:102
CameraFramingConfig cameraFraming
Cadrage de caméra résolu (EX-LVL-006) : déjà passé par resolveCameraFraming côté chargeur,...
Definition Level.h:117
TileMap tileMap
Grille de tuiles typées.
Definition Level.h:90
std::vector< Plane > planes
Plans picturaux (EX-DEC-040), dans leur ordre de superposition.
Definition Level.h:119
Liaison d'un interrupteur à une porte, par positions résolues.
Definition Level.h:32
GridPosition switchPosition
Definition Level.h:33
GridPosition doorPosition
Definition Level.h:34
Texture assignée explicitement à une case précise, prioritaire sur le skin de son type (EX-EDIT-043,...
Definition Level.h:46
GridPosition position
Definition Level.h:47
std::string assetName
Definition Level.h:48