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

Partitionne une grille de niveau en un tableau de salles de taille fixe, façon Celeste (LOT-32). More...

#include <RoomGrid.h>

Public Member Functions

 RoomGrid (int levelWidth, int levelHeight, int roomWidthTiles=ROOM_WIDTH_TILES, int roomHeightTiles=ROOM_HEIGHT_TILES)
 Construit la partition pour un niveau de levelWidth × levelHeight cases.
int roomWidthTiles () const noexcept
int roomHeightTiles () const noexcept
int columns () const noexcept
int rows () const noexcept
core::GridPosition roomIndexAt (core::GridPosition tile) const noexcept
 Indice (colonne, ligne) de la salle contenant tile.
RoomBounds roomBounds (core::GridPosition roomIndex) const noexcept
 Rectangle (en cases) de la salle d'indice roomIndex.

Static Public Attributes

static constexpr int ROOM_WIDTH_TILES = 24
 Largeur de salle par défaut, en cases (EX-REN-015) — mêmes valeurs que core::DEFAULT_ROOM_WIDTH_TILES (Core, LOT-64) : deux constantes distinctes plutôt qu'une dépendance de HMI vers Core pour une seule valeur (RoomGrid précède Core::Levels historiquement) ; Source/Test/Unit/Core/Levels/test_camera_framing.cpp vérifie qu'elles restent égales.
static constexpr int ROOM_HEIGHT_TILES = 14
 Hauteur de salle par défaut, en cases (EX-REN-015).

Private Attributes

int _levelWidth
int _levelHeight
int _roomWidthTiles
int _roomHeightTiles
int _columns
int _rows

Detailed Description

Partitionne une grille de niveau en un tableau de salles de taille fixe, façon Celeste (LOT-32).

Le niveau reste une grille de tuiles unique (core::TileMap, LOT-07/16, sans limite de taille) ; RoomGrid n'en est qu'une projection géométrique dérivée, utilisée par la caméra du jeu (cadrage sur la salle courante) et le repère visuel de l'éditeur — aucune donnée de niveau n'est dupliquée ni modifiée.

La taille de salle est réglable par niveau depuis le LOT-64 (core::CameraFramingConfig, mode par salle) ; ROOM_WIDTH_TILES/ROOM_HEIGHT_TILES n'en restent que la valeur par défaut, plus la seule vérité. Si les dimensions du niveau ne sont pas un multiple exact de la taille de salle retenue, la dernière colonne/ligne de salles est rognée à la taille réelle restante — jamais agrandie au-delà des bornes du niveau.

Logique pure, sans dépendance rendu — testable sans GPU (EX-NFR-010).

Constructor & Destructor Documentation

◆ RoomGrid()

hmi::RoomGrid::RoomGrid ( int levelWidth,
int levelHeight,
int roomWidthTiles = ROOM_WIDTH_TILES,
int roomHeightTiles = ROOM_HEIGHT_TILES )

Construit la partition pour un niveau de levelWidth × levelHeight cases.

Parameters
levelWidthLargeur du niveau, en cases (> 0).
levelHeightHauteur du niveau, en cases (> 0).
roomWidthTilesLargeur de salle à utiliser, en cases (> 0) ; ROOM_WIDTH_TILES par défaut (LOT-64 : taille personnalisable par niveau).
roomHeightTilesHauteur de salle à utiliser, en cases (> 0) ; ROOM_HEIGHT_TILES par défaut.

Member Function Documentation

◆ columns()

int hmi::RoomGrid::columns ( ) const
inlinenodiscardnoexcept
Returns
Le nombre de salles sur l'axe horizontal (au moins 1).

◆ roomBounds()

RoomBounds hmi::RoomGrid::roomBounds ( core::GridPosition roomIndex) const
nodiscardnoexcept

Rectangle (en cases) de la salle d'indice roomIndex.

Precondition
roomIndex est dans [0, columns()) × [0, rows()).
Parameters
roomIndexIndice de salle (colonne, ligne), tel que renvoyé par roomIndexAt.
Returns
Le rectangle de la salle, rogné aux bornes du niveau sur la dernière colonne/ligne.

◆ roomHeightTiles()

int hmi::RoomGrid::roomHeightTiles ( ) const
inlinenodiscardnoexcept
Returns
La hauteur de salle utilisée par cette partition, en cases.

◆ roomIndexAt()

core::GridPosition hmi::RoomGrid::roomIndexAt ( core::GridPosition tile) const
nodiscardnoexcept

Indice (colonne, ligne) de la salle contenant tile.

Une position hors des bornes du niveau est bornée à la salle la plus proche (jamais de comportement indéfini) : colonnes/lignes négatives ramenées à 0, au-delà de la dernière salle ramenées à columns() - 1/rows() - 1.

Parameters
tilePosition de case (colonne, ligne).
Returns
L'indice de la salle contenant (ou la plus proche de) tile.

◆ roomWidthTiles()

int hmi::RoomGrid::roomWidthTiles ( ) const
inlinenodiscardnoexcept
Returns
La largeur de salle utilisée par cette partition, en cases.

◆ rows()

int hmi::RoomGrid::rows ( ) const
inlinenodiscardnoexcept
Returns
Le nombre de salles sur l'axe vertical (au moins 1).

Member Data Documentation

◆ _columns

int hmi::RoomGrid::_columns
private

◆ _levelHeight

int hmi::RoomGrid::_levelHeight
private

◆ _levelWidth

int hmi::RoomGrid::_levelWidth
private

◆ _roomHeightTiles

int hmi::RoomGrid::_roomHeightTiles
private

◆ _roomWidthTiles

int hmi::RoomGrid::_roomWidthTiles
private

◆ _rows

int hmi::RoomGrid::_rows
private

◆ ROOM_HEIGHT_TILES

int hmi::RoomGrid::ROOM_HEIGHT_TILES = 14
staticconstexpr

Hauteur de salle par défaut, en cases (EX-REN-015).

◆ ROOM_WIDTH_TILES

int hmi::RoomGrid::ROOM_WIDTH_TILES = 24
staticconstexpr

Largeur de salle par défaut, en cases (EX-REN-015) — mêmes valeurs que core::DEFAULT_ROOM_WIDTH_TILES (Core, LOT-64) : deux constantes distinctes plutôt qu'une dépendance de HMI vers Core pour une seule valeur (RoomGrid précède Core::Levels historiquement) ; Source/Test/Unit/Core/Levels/test_camera_framing.cpp vérifie qu'elles restent égales.


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