|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Catalogue des jeux de skins : (jeu, type de tuile) → { asset, mode }. More...
#include <SkinCatalog.h>
Public Member Functions | |
| std::string | toJsonString () const |
| bool | saveToFile (const std::filesystem::path &path) const |
| Écrit le catalogue dans un fichier, en créant les dossiers parents au besoin. | |
| std::optional< SkinEntry > | resolve (std::string_view setName, core::TileType type) const |
| Résout l'apparence d'un type de tuile dans un jeu donné. | |
| const std::string & | defaultSetName () const noexcept |
| bool | setDefaultSetName (const std::string &setName) |
| Désigne le jeu par défaut. | |
| std::vector< std::string > | setNames () const |
| void | addSet (const std::string &setName) |
| Crée un jeu vide s'il n'existe pas. | |
| void | assign (const std::string &setName, core::TileType type, SkinEntry entry) |
| Assigne une apparence à un type de tuile dans un jeu, en créant le jeu au besoin. | |
| void | clearAssignment (const std::string &setName, core::TileType type) |
| Retire l'assignation d'un type de tuile dans un jeu (le type redevient non skinné). | |
| std::map< core::TileType, SkinEntry > | assignments (std::string_view setName) const |
| Assignations d'un jeu, sans repli sur le jeu par défaut. | |
Static Public Member Functions | |
| static SkinCatalogResult | loadFromString (std::string_view json) |
| Lit un catalogue depuis une chaîne JSON. | |
| static SkinCatalogResult | loadFromFile (const std::filesystem::path &path) |
| Lit un catalogue depuis un fichier. | |
Static Public Attributes | |
| static constexpr int | FORMAT_VERSION = 1 |
| Version du format écrite dans le fichier, et plus élevée qui soit lue. | |
Static Private Member Functions | |
| static SkinCatalogResult | fromDocument (const core::JsonDocument &document) |
| Construit le résultat depuis l'enveloppe déjà lue par core::readJsonObject. | |
Private Attributes | |
| std::map< std::string, std::map< core::TileType, SkinEntry >, std::less<> > | _sets |
| std::string | _defaultSet |
Catalogue des jeux de skins : (jeu, type de tuile) → { asset, mode }.
Configuration de présentation, jamais donnée de simulation. Ce catalogue ne transite ni par core::Level, ni par core::LevelDraft ni son undo/redo : un changement d'habillage n'est pas une modification du niveau. Seule la désignation du jeu par un niveau relève du format de niveau, et c'est l'objet du LOT-44.
Logique pure (aucune dépendance GPU ni Qt), testable en isolation (EX-NFR-010). Aucune lecture ne lève d'exception vers l'appelant (EX-NFR-040) : toute erreur est décrite dans un hmi::SkinCatalogResult.
| void hmi::SkinCatalog::addSet | ( | const std::string & | setName | ) |
Crée un jeu vide s'il n'existe pas.
| setName | Nom du jeu. |
| void hmi::SkinCatalog::assign | ( | const std::string & | setName, |
| core::TileType | type, | ||
| SkinEntry | entry ) |
Assigne une apparence à un type de tuile dans un jeu, en créant le jeu au besoin.
| setName | Nom du jeu. |
| type | Type de tuile. |
| entry | Apparence à assigner. |
|
nodiscard |
Assignations d'un jeu, sans repli sur le jeu par défaut.
| setName | Nom du jeu. |
| void hmi::SkinCatalog::clearAssignment | ( | const std::string & | setName, |
| core::TileType | type ) |
Retire l'assignation d'un type de tuile dans un jeu (le type redevient non skinné).
| setName | Nom du jeu. |
| type | Type de tuile. |
|
inlinenodiscardnoexcept |
|
staticnodiscardprivate |
Construit le résultat depuis l'enveloppe déjà lue par core::readJsonObject.
JSON bien formé, racine objet et garde de version sont vérifiés avant d'arriver ici : c'est la brique partagée du LOT-79 (EX-CNT-012), et ce catalogue n'a plus à les réimplémenter pour son compte.
|
staticnodiscard |
Lit un catalogue depuis un fichier.
Un fichier absent produit un échec de code FileNotFound : c'est à l'appelant de décider qu'un catalogue vide est un état de départ légitime (ce qu'il est), car lui seul sait s'il attendait un fichier livré ou une configuration utilisateur pas encore écrite.
| path | Chemin du fichier. |
|
staticnodiscard |
Lit un catalogue depuis une chaîne JSON.
| json | Contenu JSON. |
|
nodiscard |
Résout l'apparence d'un type de tuile dans un jeu donné.
Repli sur le jeu par défaut si setName ne désigne aucun jeu : un niveau qui référence un jeu supprimé doit rester affichable, dégradé plutôt qu'illisible (EX-NFR-040).
| setName | Nom du jeu voulu. Vide pour demander explicitement le jeu par défaut. |
| type | Type de tuile. |
|
nodiscard |
Écrit le catalogue dans un fichier, en créant les dossiers parents au besoin.
| path | Chemin de destination (typiquement executableDirectory()/Assets/skins.json). |
|
nodiscard |
Désigne le jeu par défaut.
| setName | Nom du jeu. Sans effet si aucun jeu ne porte ce nom. |
|
nodiscard |
|
nodiscard |
|
private |
|
private |
|
staticconstexpr |
Version du format écrite dans le fichier, et plus élevée qui soit lue.
Le champ est présent dès la création du format : l'ajouter coûte une ligne aujourd'hui, une migration une fois des fichiers dans la nature. Un fichier de version supérieure est refusé plutôt que lu au mieux — c'est précisément ce que le champ sert à éviter.