JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
SpriteRenderer.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
14#include <DirectXMath.h>
15
17#include "Core/Levels/Level.h"
18#include "Core/Levels/Plane.h"
24
29
30namespace core {
31class World;
32} // namespace core
33
34namespace hmi {
35
36class Camera2D;
37class TextureAtlas;
38class TextureCache;
39
52void submitComposedScene(SpriteBatch& batch, const DirectX::XMFLOAT4X4& projection,
53 const ComposedScene& scene);
54
56inline const std::string SKINS_SUBDIRECTORY = "Skins/";
57
77void advanceTileAnimations(const SkinCatalog* skins, const std::string& skinSet,
78 TextureCache& cache, float deltaSeconds,
79 std::unordered_map<std::string, core::Animation>& tileAnimations,
80 std::set<std::string>& warnedExclusions);
81
83inline const std::string BACKGROUNDS_SUBDIRECTORY = "Backgrounds/";
84
86inline const std::string OBJECTS_SUBDIRECTORY = "Objects/";
87
109[[nodiscard]] SceneTextures sceneTextures(
110 const TextureAtlas& atlas, TextureCache& cache, const SkinCatalog* skins = nullptr,
111 const std::string& skinSet = {},
112 const std::vector<core::TileTextureOverride>& textureOverrides = {},
113 const std::unordered_map<std::string, core::Animation>& tileAnimations = {});
114
129 const std::optional<std::string>& background, TextureCache& cache);
130
145public:
153 SpriteRenderer(SpriteBatch& batch, const TextureAtlas& atlas, TextureCache& cache);
154
192 void render(core::World& world, const Camera2D& camera, RenderMode mode,
193 float interpolationAlpha, const std::optional<std::string>& background = {},
194 int levelWidth = 0, int levelHeight = 0,
195 const std::vector<core::TileTextureOverride>& textureOverrides = {},
196 const std::unordered_map<std::string, core::Animation>& tileAnimations = {},
197 const std::vector<core::Plane>& planes = {}, bool planeParallax = false,
198 const core::TileMap* doorCollision = nullptr);
199
207 void setPlanesDirectory(std::filesystem::path directory) {
208 _planesDirectory = std::move(directory);
209 }
210
212 [[nodiscard]] const ComposedScene& lastScene() const noexcept {
213 return _scene;
214 }
215
225 void setSkins(const SkinCatalog* skins, std::string skinSet = {}) {
226 _skins = skins;
227 _skinSet = std::move(skinSet);
228 }
229
230private:
235
237 std::filesystem::path _planesDirectory;
238 SpriteBatch* _batch; // non possédé
239 const TextureAtlas* _atlas; // non possédé
240 TextureCache* _cache; // non possédé
241 const SkinCatalog* _skins = nullptr; // non possédé
242 std::string _skinSet;
245};
246
247} // namespace hmi
Composant d'état d'animation par séquence d'images (données pures).
Composition du fond de niveau sur le calque RenderLayer::Background (LOT-44, EX-REN-044).
Composition du rendu : liste ordonnée des primitives d'une image, sans GPU (EX-NFR-004,...
Niveau chargé : grille de tuiles, entrée/sortie et mécanismes.
Projection profondeur → calque, résolution et composition des plans picturaux (EX-REN-049,...
Plan pictural d'un niveau : image couvrant le niveau entier (EX-DEC-040, LOT-69).
Association type de tuile → asset et mode de rendu, groupée en jeux nommés (EX-EDIT-042,...
Pipeline de rendu 2D sur QRhi : accumule des quads texturés et les dessine par lots (EX-REN-050,...
Grille dense de tuiles typées (EX-GP-001), origine haut-gauche.
Definition TileMap.h:25
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
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
const TextureAtlas * _atlas
Definition SpriteRenderer.h:239
void setPlanesDirectory(std::filesystem::path directory)
Fixe le dossier où résoudre les images de plans (Levels/Plans).
Definition SpriteRenderer.h:207
const SkinCatalog * _skins
Definition SpriteRenderer.h:241
SpriteBatch * _batch
Definition SpriteRenderer.h:238
const ComposedScene & lastScene() const noexcept
Definition SpriteRenderer.h:212
TextureCache * _cache
Definition SpriteRenderer.h:240
void logStatisticsIfChanged()
Journalise les compteurs de l'image seulement s'ils ont changé depuis la précédente : le volume soumi...
Definition SpriteRenderer.cpp:270
void render(core::World &world, const Camera2D &camera, RenderMode mode, float interpolationAlpha, const std::optional< std::string > &background={}, int levelWidth=0, int levelHeight=0, const std::vector< core::TileTextureOverride > &textureOverrides={}, const std::unordered_map< std::string, core::Animation > &tileAnimations={}, const std::vector< core::Plane > &planes={}, bool planeParallax=false, const core::TileMap *doorCollision=nullptr)
Dessine toutes les entités affichables du monde, vues par la caméra.
Definition SpriteRenderer.cpp:237
SpriteRenderer(SpriteBatch &batch, const TextureAtlas &atlas, TextureCache &cache)
Construit le rendu de sprites.
Definition SpriteRenderer.cpp:233
ComposedScene _scene
Definition SpriteRenderer.h:243
SceneStatistics _loggedStatistics
Definition SpriteRenderer.h:244
std::string _skinSet
Definition SpriteRenderer.h:242
void setSkins(const SkinCatalog *skins, std::string skinSet={})
Désigne le catalogue de skins et le jeu à utiliser en mode Texture (LOT-42).
Definition SpriteRenderer.h:225
std::filesystem::path _planesDirectory
Dossier des images de plans (setPlanesDirectory), vide tant qu'aucun n'est fixé.
Definition SpriteRenderer.h:237
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
SceneTextures sceneTextures(const TextureAtlas &atlas, TextureCache &cache, const SkinCatalog *skins, const std::string &skinSet, const std::vector< core::TileTextureOverride > &textureOverrides, const std::unordered_map< std::string, core::Animation > &tileAnimations)
Textures liables par la composition d'une scène : atlas, damier de repli et skins.
Definition SpriteRenderer.cpp:80
void advanceTileAnimations(const SkinCatalog *skins, const std::string &skinSet, TextureCache &cache, float deltaSeconds, std::unordered_map< std::string, core::Animation > &tileAnimations, std::set< std::string > &warnedExclusions)
Avance l'horloge d'animation partagée des tuiles animées d'un jeu de skins courant (LOT-46 TACHE-05).
Definition SpriteRenderer.cpp:188
void submitComposedScene(SpriteBatch &batch, const DirectX::XMFLOAT4X4 &projection, const ComposedScene &scene)
Soumet une scène composée au pipeline de dessin, une passe par groupe de texture.
Definition SpriteRenderer.cpp:22
const std::string SKINS_SUBDIRECTORY
Sous-dossier des skins de tuiles, relatif au dossier d'assets (LOT-42).
Definition SpriteRenderer.h:56
RenderMode
Mode de rendu de la scène : lecture directe des collisions, ou habillage.
Definition RenderMode.h:23
BackgroundTexture resolveBackgroundTexture(const std::optional< std::string > &background, TextureCache &cache)
Résout la texture de fond d'un niveau (accès TextureCache/GPU, LOT-44).
Definition SpriteRenderer.cpp:173
const std::string BACKGROUNDS_SUBDIRECTORY
Sous-dossier des fonds de niveau, relatif au dossier d'assets (LOT-44).
Definition SpriteRenderer.h:83
const std::string OBJECTS_SUBDIRECTORY
Sous-dossier des textures d'objets interactifs, relatif au dossier d'assets (LOT-45).
Definition SpriteRenderer.h:86
Texture de fond déjà résolue, prête à être composée.
Definition BackgroundRenderer.h:51
Compteurs d'une image composée, pour l'observabilité du volume soumis (EX-NFR-005).
Definition ComposedScene.h:92
Textures liables par la composition d'une scène, et de quoi choisir laquelle lier.
Definition TileAppearance.h:85