JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
DraftRenderer.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 <filesystem>
7#include <optional>
8#include <set>
9#include <string>
10#include <unordered_map>
11#include <utility>
12#include <vector>
13
15#include "Core/Ecs/Entity.h"
16#include "Core/Ecs/World.h"
21
26
27namespace core {
28class LevelDraft;
29}
30
31namespace hmi {
32
33class SpriteBatch;
34class TextureAtlas;
35class TextureCache;
36class Camera2D;
37
47 std::optional<core::GridPosition> hoveredCell;
49 std::optional<core::GridPosition> pendingLink;
51 std::optional<std::pair<core::GridPosition, core::GridPosition>> selectedLink;
52};
53
71public:
72 DraftRenderer(SpriteBatch& batch, const TextureAtlas& atlas, TextureCache& cache);
73
93 void render(const core::LevelDraft& draft, const Camera2D& camera, bool showGrid,
94 const std::optional<std::pair<core::GridPosition, core::GridPosition>>& highlight,
95 const LinkOverlayState& linkOverlay, RenderMode mode,
96 bool showTextureOverrides = false, float deltaSeconds = 0.0f,
97 const LayerVisibility& visibility = {},
98 const PlaneVisibility& planeVisibility = {});
99
105 void setPlanesDirectory(std::filesystem::path directory) {
106 _planesDirectory = std::move(directory);
107 }
108
111 void invalidate() noexcept {
112 _dirty = true;
113 }
114
116 [[nodiscard]] const ComposedScene& lastScene() const noexcept {
117 return _scene;
118 }
119
128 void setSkins(const SkinCatalog* skins, std::string skinSet = {}) {
129 _skins = skins;
130 _skinSet = std::move(skinSet);
131 }
132
133private:
134 void rebuild(const core::LevelDraft& draft);
139 void composeGrid(const core::LevelDraft& draft);
146 void composeCameraFraming(const core::LevelDraft& draft);
148 void composeLinks(const core::LevelDraft& draft, const LinkOverlayState& overlay);
153 [[nodiscard]] SpriteQuad solidOverlayQuad(const core::Rect& rect, float r, float g, float b,
154 float a) const;
156 void composeHighlight(const core::GridPosition& minimum, const core::GridPosition& maximum);
161 std::filesystem::path _planesDirectory;
165 const SkinCatalog* _skins = nullptr; // non possédé
166 std::string _skinSet;
169 bool _dirty = true;
173 std::unordered_map<std::string, core::Animation> _tileAnimations;
176 std::set<std::string> _warnedExcludedAnimations;
177};
178
179} // namespace hmi
Composant d'état d'animation par séquence d'images (données pures).
Identifiant d'entité de l'ECS : handle générationnel (index + génération).
Position entière dans la grille d'un niveau (colonne, ligne).
Jeu de visibilités par calque du mode d'inspection de l'éditeur (LOT-51, EX-EDIT-044).
Visibilité par rang de plan dans l'éditeur (EX-DEC-045, LOT-69 TACHE-05).
Rend les entités de l'ECS possédant un Transform et un Sprite.
Façade de l'ECS : entités, composants, vues et orchestration des systèmes.
Niveau mutable en cours d'édition, distinct de Level (immuable, LOT-07).
Definition LevelDraft.h:43
Point d'entrée unique de la simulation : possède les entités, les composants et les systèmes.
Definition World.h:35
Caméra 2D orthographique : projette le monde vers l'écran pour le rendu.
Definition Camera2D.h:79
Liste ordonnée des primitives d'une image, indépendante de Direct3D.
Definition ComposedScene.h:134
SpriteBatch & _batch
Definition DraftRenderer.h:162
std::string _skinSet
Definition DraftRenderer.h:166
void composeGrid(const core::LevelDraft &draft)
Compose la grille de repère (frontières de cases + de salles) sur le calque d'édition.
Definition DraftRenderer.cpp:169
void setSkins(const SkinCatalog *skins, std::string skinSet={})
Désigne le catalogue de skins et le jeu à utiliser en mode Texture (LOT-42).
Definition DraftRenderer.h:128
std::unordered_map< std::string, core::Animation > _tileAnimations
Horloge d'animation partagee par asset (LOT-46 TACHE-05), avancee en temps reel a chaque render() – d...
Definition DraftRenderer.h:173
void composeHighlight(const core::GridPosition &minimum, const core::GridPosition &maximum)
Compose le voile d'aperçu d'une zone (outil Rectangle/Sélection) sur le calque d'édition.
Definition DraftRenderer.cpp:119
SpriteQuad solidOverlayQuad(const core::Rect &rect, float r, float g, float b, float a) const
Compose la course aller-retour de chaque danger mobile (EX-GP-051) sur le calque Compose les poignées...
void composeTextureOverrideMarkers(const core::LevelDraft &draft)
Signale les cases portant une surcharge de texture par instance sur le calque d'édition (EX-EDIT-043,...
Definition DraftRenderer.cpp:144
void rebuild(const core::LevelDraft &draft)
Definition DraftRenderer.cpp:469
void render(const core::LevelDraft &draft, const Camera2D &camera, bool showGrid, const std::optional< std::pair< core::GridPosition, core::GridPosition > > &highlight, const LinkOverlayState &linkOverlay, RenderMode mode, bool showTextureOverrides=false, float deltaSeconds=0.0f, const LayerVisibility &visibility={}, const PlaneVisibility &planeVisibility={})
Rend le brouillon avec la caméra donnée (reconstruit la scène si invalidée).
Definition DraftRenderer.cpp:63
std::set< std::string > _warnedExcludedAnimations
Assets deja signales pour une combinaison exclue (bitmask16/silhouette + animation) : memorise pour n...
Definition DraftRenderer.h:176
void composeLinks(const core::LevelDraft &draft, const LinkOverlayState &overlay)
Compose les liens de mécanismes (flèches déclencheur → cible) sur le calque d'édition.
Definition DraftRenderer.cpp:355
const TextureAtlas & _atlas
Definition DraftRenderer.h:163
void invalidate() noexcept
Marque la scène comme périmée : elle sera reconstruite au prochain render (à appeler après toute muta...
Definition DraftRenderer.h:111
bool _dirty
Definition DraftRenderer.h:169
void setPlanesDirectory(std::filesystem::path directory)
Fixe le dossier où résoudre les images de plans (Levels/Plans), comme hmi::SpriteRenderer::setPlanesD...
Definition DraftRenderer.h:105
core::World _world
Definition DraftRenderer.h:168
std::filesystem::path _planesDirectory
Dossier des images de plans (setPlanesDirectory), vide tant qu'aucun n'est fixé.
Definition DraftRenderer.h:161
ComposedScene _scene
Definition DraftRenderer.h:167
DraftRenderer(SpriteBatch &batch, const TextureAtlas &atlas, TextureCache &cache)
Definition DraftRenderer.cpp:60
const SkinCatalog * _skins
Definition DraftRenderer.h:165
void composeCameraFraming(const core::LevelDraft &draft)
Compose la prévisualisation du cadrage de caméra du niveau (EX-EDIT-028, LOT-64) sur le calque d'édit...
Definition DraftRenderer.cpp:236
const ComposedScene & lastScene() const noexcept
Definition DraftRenderer.h:116
TextureCache & _cache
Definition DraftRenderer.h:164
Jeu de visibilités par calque, pour le mode d'inspection « définition des textures » (LOT-51).
Definition LayerVisibility.h:48
Jeu de visibilités des plans picturaux d'un niveau, adressé par rang.
Definition PlaneVisibility.h:39
Catalogue des jeux de skins : (jeu, type de tuile) → { asset, mode }.
Definition SkinCatalog.h:100
Dessine des quads texturés au travers de QRhi, avec transparence et échantillonnage nearest (pixel ar...
Definition SpriteBatch.h:59
Texture d'atlas et table de régions, chargée depuis un fichier image avec repli procédural (EX-REN-04...
Definition TextureAtlas.h:40
Charge, valide et met en cache des textures GPU désignées par leur nom de fichier logique.
Definition TextureCache.h:60
Espace de noms du moteur et de la logique de jeu.
Definition Bootstrap.h:9
Definition AudioEngine.cpp:15
RenderMode
Mode de rendu de la scène : lecture directe des collisions, ou habillage.
Definition RenderMode.h:23
Position d'une case dans la grille d'un niveau, en coordonnées entières.
Definition GridPosition.h:20
Rectangle aligné sur les axes (AABB) en unités monde.
Definition Rect.h:23
État d'affichage des liens de mécanismes (LOT-37), fourni par le viewport à chaque rendu.
Definition DraftRenderer.h:44
std::optional< std::pair< core::GridPosition, core::GridPosition > > selectedLink
Liaison sélectionnée dans le panneau « Liens » (déclencheur, cible) : mise en surbrillance.
Definition DraftRenderer.h:51
std::optional< core::GridPosition > pendingLink
Case du déclencheur/de la cible en attente d'appariement (outil « Lien », premier clic).
Definition DraftRenderer.h:49
std::optional< core::GridPosition > hoveredCell
Case survolée par la souris (surbrillance des liens incidents ; extrémité du trait provisoire si pend...
Definition DraftRenderer.h:47
Un quad texturé à dessiner : rectangle en unités monde, région de texture (coordonnées normalisées) e...
Definition Quad.h:29