54[[nodiscard]] std::optional<SkinMode>
skinModeFromName(std::string_view name)
noexcept;
86struct SkinCatalogResult;
148 [[nodiscard]]
bool saveToFile(
const std::filesystem::path& path)
const;
160 [[nodiscard]] std::optional<SkinEntry>
resolve(std::string_view setName,
176 [[nodiscard]] std::vector<std::string>
setNames()
const;
179 void addSet(
const std::string& setName);
201 [[nodiscard]] std::map<core::TileType, SkinEntry>
assignments(std::string_view setName)
const;
207 std::map<std::string, std::map<core::TileType, SkinEntry>, std::less<>>
_sets;
224 [[nodiscard]]
bool ok() const noexcept {
Brique de lecture JSON partagée par tous les catalogues (EX-CNT-012).
Types de tuiles d'une carte et utilitaires associés.
Catalogue des jeux de skins : (jeu, type de tuile) → { asset, mode }.
Definition SkinCatalog.h:100
static SkinCatalogResult fromDocument(const core::JsonDocument &document)
Construit le résultat depuis l'enveloppe déjà lue par core::readJsonObject.
Definition SkinCatalog.cpp:83
std::string toJsonString() const
Definition SkinCatalog.cpp:160
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é.
Definition SkinCatalog.cpp:199
void addSet(const std::string &setName)
Crée un jeu vide s'il n'existe pas.
Definition SkinCatalog.cpp:234
std::map< std::string, std::map< core::TileType, SkinEntry >, std::less<> > _sets
Definition SkinCatalog.h:207
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.
Definition SkinCatalog.cpp:243
std::map< core::TileType, SkinEntry > assignments(std::string_view setName) const
Assignations d'un jeu, sans repli sur le jeu par défaut.
Definition SkinCatalog.cpp:255
std::vector< std::string > setNames() const
Definition SkinCatalog.cpp:224
bool setDefaultSetName(const std::string &setName)
Désigne le jeu par défaut.
Definition SkinCatalog.cpp:216
bool saveToFile(const std::filesystem::path &path) const
Écrit le catalogue dans un fichier, en créant les dossiers parents au besoin.
Definition SkinCatalog.cpp:183
static SkinCatalogResult loadFromFile(const std::filesystem::path &path)
Lit un catalogue depuis un fichier.
Definition SkinCatalog.cpp:156
static SkinCatalogResult loadFromString(std::string_view json)
Lit un catalogue depuis une chaîne JSON.
Definition SkinCatalog.cpp:79
std::string _defaultSet
Definition SkinCatalog.h:208
static constexpr int FORMAT_VERSION
Version du format écrite dans le fichier, et plus élevée qui soit lue.
Definition SkinCatalog.h:109
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é).
Definition SkinCatalog.cpp:248
const std::string & defaultSetName() const noexcept
Definition SkinCatalog.h:164
TileType
Type d'une tuile de la grille d'une carte (EX-GP-001).
Definition TileType.h:32
Definition AudioEngine.cpp:15
@ UnsupportedVersion
Numéro de version supérieur à SoundCatalog::FORMAT_VERSION.
Definition SoundCatalog.h:30
@ FileNotFound
Fichier absent. Cas légitime (catalogue vide), pas une anomalie.
Definition SoundCatalog.h:28
@ None
Pas d'erreur.
Definition SoundCatalog.h:27
@ MalformedStructure
Structure inattendue (« sons » absent, entrée invalide…).
Definition SoundCatalog.h:31
@ ParseError
JSON malformé, ou racine qui n'est pas un objet.
Definition SoundCatalog.h:29
const char * skinModeName(SkinMode mode) noexcept
Nom persisté d'un mode de skin (valeur écrite dans skins.json).
Definition SkinCatalog.cpp:58
std::optional< SkinMode > skinModeFromName(std::string_view name) noexcept
Mode de skin correspondant à un nom lu dans un fichier.
Definition SkinCatalog.cpp:69
SkinMode
Manière dont l'asset d'un type de tuile est découpé à l'affichage (EX-EDIT-025).
Definition SkinCatalog.h:32
@ Bitmask16
Planche de 4×4 cases, dont celle affichée est choisie selon les quatre voisins solides (hmi::autotile...
Definition SkinCatalog.h:38
@ Single
Image unique, utilisée telle quelle.
Definition SkinCatalog.h:35
SkinCatalogError
Catégorie d'échec de lecture d'un skins.json (même esprit que core::LevelValidationError).
Definition SkinCatalog.h:76
@ None
Pas d'erreur.
Definition SkinCatalog.h:77
Résultat de la lecture de l'enveloppe commune d'un document JSON.
Definition JsonDocument.h:53
Résultat d'une lecture de catalogue : soit un SkinCatalog, soit une erreur décrite.
Definition SkinCatalog.h:218
std::string error
Definition SkinCatalog.h:220
bool ok() const noexcept
Definition SkinCatalog.h:224
SkinCatalogError errorCode
Definition SkinCatalog.h:221
std::optional< SkinCatalog > catalog
Definition SkinCatalog.h:219
Apparence assignée à un type de tuile : le fichier à utiliser et son découpage.
Definition SkinCatalog.h:57
SkinMode mode
Definition SkinCatalog.h:61
friend bool operator==(const SkinEntry &lhs, const SkinEntry &rhs)
Definition SkinCatalog.h:63
std::string asset
Nom de fichier, relatif au dossier Assets/Skins/.
Definition SkinCatalog.h:60