JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
core::LevelData Struct Reference

Niveau complet en mémoire : nom, grille de tuiles, entrée/sortie et mécanismes. More...

#include <Level.h>

Public Attributes

std::string name
 Nom du niveau.
TileMap tileMap
 Grille de tuiles typées.
std::vector< TileLayerlayers
 Couches de tuiles de la carte (LOT-04), dans leur ordre de superposition.
std::vector< MapEntityentities
 Entités placées sur la carte (LOT-04) : PNJ, coffres, panneaux, portails, déclencheurs.
GridPosition entry {}
 Position d'apparition (case Entry).
GridPosition exit {}
 Position de sortie (case Exit).
std::vector< Mechanismmechanisms
 Liaisons interrupteur↔porte résolues.
std::optional< std::string > background
 Nom de l'asset de fond (EX-REN-044), absent si aucun.
std::optional< std::string > skinSet
 Nom du jeu de skins (EX-EDIT-024), absent pour le jeu par défaut.
std::vector< TileTextureOverridetextureOverrides
 Textures assignées par instance (EX-EDIT-043), prioritaires sur le skin de leur type.
CameraFramingConfig cameraFraming
 Cadrage de caméra résolu (EX-LVL-006) : déjà passé par resolveCameraFraming côté chargeur, jamais un champ brut « peut-être absent ».
std::vector< Planeplanes
 Plans picturaux (EX-DEC-040), dans leur ordre de superposition.
bool parallaxEnabled = true
 true si la parallaxe des plans s'applique (EX-DEC-043) ; le mode de cadrage peut la neutraliser par-dessus ce drapeau.

Detailed Description

Niveau complet en mémoire : nom, grille de tuiles, entrée/sortie et mécanismes.

Assemblé par le chargeur (après parsing et validation) puis lu par le rendu et, à terme, le gameplay. Donnée pure (EX-ARCH-011, EX-LVL-002) : aucune dépendance rendu ni fichier.

Composantes d'un niveau, nommées — agrégat de construction de core::Level (LOT-03).

Le constructeur de Level a compté jusqu'à 19 paramètres positionnels. Le LOT-01 en a retiré huit avec le gameplay de plateforme, mais la dette de fond restait : deux std::optional<std::string> voisins (background, skinSet) s'intervertissent sans que le compilateur bronche, et le RPG s'apprête à rajouter des champs (couches de tuiles, entités, connexions de carte, zones de rencontre, points d'apparition). Solder maintenant, alors que la liste est au plus court, coûte le minimum.

S'écrit avec les designated initializers de C++20, qui rendent chaque site de construction lisible sans commentaire :

core::Level level(core::LevelData{.name = "village",
.tileMap = std::move(map),
.entry = entryPosition,
.exit = exitPosition});
Definition Level.h:125
Niveau complet en mémoire : nom, grille de tuiles, entrée/sortie et mécanismes.
Definition Level.h:80
Note
tileMap n'a volontairement pas de valeur par défaut : core::TileMap n'est pas constructible par défaut, si bien que l'omettre est une erreur de compilation et non une grille vide silencieuse. Tous les autres champs ont un défaut utile.

Member Data Documentation

◆ background

std::optional<std::string> core::LevelData::background

Nom de l'asset de fond (EX-REN-044), absent si aucun.

Une chaîne, jamais un handle de texture : Core ignore tout du rendu.

◆ cameraFraming

CameraFramingConfig core::LevelData::cameraFraming

Cadrage de caméra résolu (EX-LVL-006) : déjà passé par resolveCameraFraming côté chargeur, jamais un champ brut « peut-être absent ».

Le défaut (WholeLevel) est légitime pour un niveau construit directement, cohérent avec un petit niveau tenant dans une salle.

◆ entities

std::vector<MapEntity> core::LevelData::entities

Entités placées sur la carte (LOT-04) : PNJ, coffres, panneaux, portails, déclencheurs.

◆ entry

GridPosition core::LevelData::entry {}

Position d'apparition (case Entry).

◆ exit

GridPosition core::LevelData::exit {}

Position de sortie (case Exit).

◆ layers

std::vector<TileLayer> core::LevelData::layers

Couches de tuiles de la carte (LOT-04), dans leur ordre de superposition.

La première est tileMap ci-dessus, promue par le chargeur : de rôle Collision quand la carte déclare des couches visibles, Legacy quand elle n'en déclare aucune (une grille plate version: 2, qui vaut alors décor et collision). Un consommateur boucle donc sur layers sans cas particulier. Vide seulement pour un Level construit directement, sans passer par le chargeur — le rendu retombe alors sur tileMap.

◆ mechanisms

std::vector<Mechanism> core::LevelData::mechanisms

Liaisons interrupteur↔porte résolues.

◆ name

std::string core::LevelData::name

Nom du niveau.

◆ parallaxEnabled

bool core::LevelData::parallaxEnabled = true

true si la parallaxe des plans s'applique (EX-DEC-043) ; le mode de cadrage peut la neutraliser par-dessus ce drapeau.

◆ planes

std::vector<Plane> core::LevelData::planes

Plans picturaux (EX-DEC-040), dans leur ordre de superposition.

◆ skinSet

std::optional<std::string> core::LevelData::skinSet

Nom du jeu de skins (EX-EDIT-024), absent pour le jeu par défaut.

◆ textureOverrides

std::vector<TileTextureOverride> core::LevelData::textureOverrides

Textures assignées par instance (EX-EDIT-043), prioritaires sur le skin de leur type.

◆ tileMap

TileMap core::LevelData::tileMap

Grille de tuiles typées.

Sans défaut : voir la note ci-dessus.

C'est la grille de collision de la carte — celle que consomment le balayage AABB et, au LOT-19, la grille de combat tactique — et elle porte aussi l'entrée, la sortie et les cases de mécanismes. Le format ne connaît qu'elle sur ce point : une couche collision déclarée à côté est refusée au chargement, précisément pour qu'il n'existe jamais deux grilles à tenir d'accord (EX-LVL-016).


The documentation for this struct was generated from the following file:
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/Core/Levels/Level.h