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

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

Detailed Description

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).

Constructor & Destructor Documentation

◆ TextureAtlas()

hmi::TextureAtlas::TextureAtlas ( const RhiContext & context)
explicit

Charge l'atlas (fichier, avec repli procédural) et crée la texture GPU associée.

Parameters
contextInterface de rendu et lot de mises à jour de l'image courante.

Member Function Documentation

◆ generateProcedural()

void hmi::TextureAtlas::generateProcedural ( const RhiContext & context)
private

Génère l'atlas procédural (hmi::buildProceduralAtlasImage) et crée la texture associée.

◆ height()

int hmi::TextureAtlas::height ( ) const
inlinenodiscard
Returns
Hauteur de l'atlas, en pixels.

◆ loadFromFile()

bool hmi::TextureAtlas::loadFromFile ( const RhiContext & context)
private

Essaie de charger Assets/atlas.png.

Returns
true si la texture a été créée avec succès.

◆ playerFrameRegion()

core::AtlasRegion hmi::TextureAtlas::playerFrameRegion ( PlayerClipKind clip,
int frameIndex )
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).

Parameters
clipClip d'animation du personnage (hmi::PlayerClipKind, EX-REN-012).
frameIndexIndex de l'image dans le clip (0-based).
Returns
La région d'atlas (16×16, carrée) de cette image (EX-REN-011).

◆ textureHandle()

TextureHandle hmi::TextureAtlas::textureHandle ( ) const
inlinenodiscard
Returns
L'identité opaque de la texture d'atlas (non possédée par l'appelant).

◆ tile()

core::AtlasRegion hmi::TextureAtlas::tile ( int column,
int row )
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.

Parameters
columnColonne de la tuile (0 à TILES_PER_SIDE-1).
rowLigne de la tuile (0 à TILES_PER_SIDE-1).
Returns
La région d'atlas correspondante, en pixels.

◆ width()

int hmi::TextureAtlas::width ( ) const
inlinenodiscard
Returns
Largeur de l'atlas, en pixels.

Member Data Documentation

◆ _height

int hmi::TextureAtlas::_height = 0
private

◆ _texture

std::shared_ptr<QRhiTexture> hmi::TextureAtlas::_texture
private

◆ _width

int hmi::TextureAtlas::_width = 0
private

◆ ATLAS_FILE_NAME

const char* hmi::TextureAtlas::ATLAS_FILE_NAME = "atlas.png"
staticconstexpr

Nom du fichier d'atlas attendu dans le dossier d'assets (Assets/atlas.png).

◆ PLAYER_FRAME_COLUMNS

int hmi::TextureAtlas::PLAYER_FRAME_COLUMNS = TILES_PER_SIDE
staticconstexpr

Nombre de colonnes de la grille d'images du personnage (largeur de la grille de tuiles, réutilisée telle quelle).

◆ PLAYER_FRAME_SIZE

int hmi::TextureAtlas::PLAYER_FRAME_SIZE = TILE_SIZE
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.

◆ TILE_SIZE

int hmi::TextureAtlas::TILE_SIZE = 16
staticconstexpr

Côté d'une tuile, en pixels (EX-ARCH-021).

◆ TILES_PER_SIDE

int hmi::TextureAtlas::TILES_PER_SIDE = 6
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.


The documentation for this class was generated from the following files:
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Graphics/TextureAtlas.h
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Graphics/TextureAtlas.cpp
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Graphics/TextureAtlasRegions.cpp