|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Texture d'atlas et table de régions, chargée depuis un fichier image avec repli procédural (EX-REN-041/EX-REN-042). More...
#include <TextureAtlas.h>
Public Member Functions | |
| TextureAtlas (const RhiContext &context) | |
| Charge l'atlas (fichier, avec repli procédural) et crée la texture GPU associée. | |
| TextureHandle | textureHandle () const |
| int | width () const |
| int | height () const |
Static Public Member Functions | |
| static core::AtlasRegion | tile (int column, int row) |
| Région (en pixels) de la tuile à une position de la grille. | |
| static core::AtlasRegion | playerFrameRegion (PlayerClipKind clip, int frameIndex) |
| Région (en pixels) d'une image d'animation du personnage, sous la grille de tuiles. | |
Static Public Attributes | |
| static constexpr const char * | ATLAS_FILE_NAME = "atlas.png" |
| Nom du fichier d'atlas attendu dans le dossier d'assets (Assets/atlas.png). | |
| static constexpr int | TILE_SIZE = 16 |
| Côté d'une tuile, en pixels (EX-ARCH-021). | |
| static constexpr int | TILES_PER_SIDE = 6 |
| Nombre de tuiles par ligne et par colonne dans la grille de tuiles générée. | |
| static constexpr int | PLAYER_FRAME_SIZE = TILE_SIZE |
| Côté d'une image d'animation du personnage, en pixels. | |
| static constexpr int | PLAYER_FRAME_COLUMNS = TILES_PER_SIDE |
| Nombre de colonnes de la grille d'images du personnage (largeur de la grille de tuiles, réutilisée telle quelle). | |
Private Member Functions | |
| bool | loadFromFile (const RhiContext &context) |
| Essaie de charger Assets/atlas.png. | |
| void | generateProcedural (const RhiContext &context) |
| Génère l'atlas procédural (hmi::buildProceduralAtlasImage) et crée la texture associée. | |
Private Attributes | |
| int | _width = 0 |
| int | _height = 0 |
| std::shared_ptr< QRhiTexture > | _texture |
Texture d'atlas et table de régions, chargée depuis un fichier image avec repli procédural (EX-REN-041/EX-REN-042).
À la construction, l'atlas essaie de charger Assets/atlas.png (à côté de l'exécutable, hmi::AssetPaths/hmi::TextureLoader) : une grille de tuiles 16×16, complétée d'une grille d'images du personnage (silhouette animée — repos, course, saut, EX-REN-011/EX-REN-012) sous la grille. Si l'asset est absent ou illisible, l'atlas retombe sans plantage (EX-NFR-040) sur une génération procédurale équivalente (hmi::buildProceduralAtlasImage, couleurs distinctes par tuile, dont une avec des zones transparentes pour valider le rendu alpha). Chaque image de personnage reste carrée (16×16, comme une tuile) : le rendu (SpriteRenderer) la multiplie par Transform::scale, déjà non uniforme (core::playerSize()), qui donne à elle seule la silhouette sa proportion finale deux fois plus haute que large — une région déjà non carrée doublerait cet effet. L'interface (vue de texture, dimensions, régions) est stable, indépendante du chemin (fichier ou procédural) qui l'a produite. Ressources Direct3D en RAII (ComPtr).
|
explicit |
Charge l'atlas (fichier, avec repli procédural) et crée la texture GPU associée.
| context | Interface de rendu et lot de mises à jour de l'image courante. |
|
private |
Génère l'atlas procédural (hmi::buildProceduralAtlasImage) et crée la texture associée.
|
inlinenodiscard |
|
private |
Essaie de charger Assets/atlas.png.
|
staticnodiscard |
Région (en pixels) d'une image d'animation du personnage, sous la grille de tuiles.
Pure arithmétique de grille (aucun état d'instance) : static, testable sans GPU (EX-NFR-010).
| clip | Clip d'animation du personnage (hmi::PlayerClipKind, EX-REN-012). |
| frameIndex | Index de l'image dans le clip (0-based). |
|
inlinenodiscard |
|
staticnodiscard |
Région (en pixels) de la tuile à une position de la grille.
Pure arithmétique de grille (aucun état d'instance) : static, testable sans GPU (EX-NFR-010) et sans dépendre de l'origine (fichier ou procédurale) de l'atlas.
| column | Colonne de la tuile (0 à TILES_PER_SIDE-1). |
| row | Ligne de la tuile (0 à TILES_PER_SIDE-1). |
|
inlinenodiscard |
|
private |
|
private |
|
private |
|
staticconstexpr |
Nom du fichier d'atlas attendu dans le dossier d'assets (Assets/atlas.png).
|
staticconstexpr |
Nombre de colonnes de la grille d'images du personnage (largeur de la grille de tuiles, réutilisée telle quelle).
|
staticconstexpr |
Côté d'une image d'animation du personnage, en pixels.
Carrée (= TILE_SIZE) : le ratio 1:2 final vient de Transform::scale (core::playerSize), pas de la région.
|
staticconstexpr |
Côté d'une tuile, en pixels (EX-ARCH-021).
|
staticconstexpr |
Nombre de tuiles par ligne et par colonne dans la grille de tuiles générée.
6 depuis l'ajout de la clé/porte verrouillée/plateforme mobile (EX-GP-023/EX-GP-026, LOT-63) : 5 (25 cases, depuis l'ajout des pentes/arrondis de plafond, EX-GP-006) ne laissait plus qu'une case libre après la clé et la porte verrouillée, insuffisant pour la plateforme.