|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
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 |
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).
| 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.
| levelWidth | Largeur du niveau, en cases (> 0). |
| levelHeight | Hauteur du niveau, en cases (> 0). |
| roomWidthTiles | Largeur de salle à utiliser, en cases (> 0) ; ROOM_WIDTH_TILES par défaut (LOT-64 : taille personnalisable par niveau). |
| roomHeightTiles | Hauteur de salle à utiliser, en cases (> 0) ; ROOM_HEIGHT_TILES par défaut. |
|
inlinenodiscardnoexcept |
|
nodiscardnoexcept |
Rectangle (en cases) de la salle d'indice roomIndex.
| roomIndex | Indice de salle (colonne, ligne), tel que renvoyé par roomIndexAt. |
|
inlinenodiscardnoexcept |
|
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.
| tile | Position de case (colonne, ligne). |
tile.
|
inlinenodiscardnoexcept |
|
inlinenodiscardnoexcept |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
staticconstexpr |
Hauteur de salle par défaut, en cases (EX-REN-015).
|
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.