|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
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< TileLayer > | layers |
| Couches de tuiles de la carte (LOT-04), dans leur ordre de superposition. | |
| std::vector< MapEntity > | entities |
| 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< Mechanism > | mechanisms |
| 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< TileTextureOverride > | textureOverrides |
| 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< Plane > | planes |
| 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. | |
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 :
| 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.
| 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.
| std::vector<MapEntity> core::LevelData::entities |
Entités placées sur la carte (LOT-04) : PNJ, coffres, panneaux, portails, déclencheurs.
| GridPosition core::LevelData::entry {} |
Position d'apparition (case Entry).
| GridPosition core::LevelData::exit {} |
Position de sortie (case Exit).
| 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.
| std::vector<Mechanism> core::LevelData::mechanisms |
Liaisons interrupteur↔porte résolues.
| std::string core::LevelData::name |
Nom du niveau.
| 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.
| std::vector<Plane> core::LevelData::planes |
Plans picturaux (EX-DEC-040), dans leur ordre de superposition.
| std::optional<std::string> core::LevelData::skinSet |
Nom du jeu de skins (EX-EDIT-024), absent pour le jeu par défaut.
| std::vector<TileTextureOverride> core::LevelData::textureOverrides |
Textures assignées par instance (EX-EDIT-043), prioritaires sur le skin de leur type.
| 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).