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

Catalogue des sons : nom d'événement → fichier (relatif à Source/Elements/Audio/). More...

#include <SoundCatalog.h>

Public Member Functions

std::optional< std::string > resolve (std::string_view eventId) const
 Résout le fichier assigné à un événement.
std::vector< std::string > eventIds () const
void assign (const std::string &eventId, std::string file)
 Assigne un fichier à un événement, en écrasant une assignation existante.

Static Public Member Functions

static SoundCatalogResult loadFromString (std::string_view json)
 Lit un catalogue depuis une chaîne JSON.
static SoundCatalogResult 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 SoundCatalogResult fromDocument (const core::JsonDocument &document)
 Construit le catalogue depuis l'enveloppe déjà lue par core::readJsonObject.

Private Attributes

std::map< std::string, std::string, std::less<> > _sounds

Detailed Description

Catalogue des sons : nom d'événement → fichier (relatif à Source/Elements/Audio/).

Logique pure (aucune dépendance Qt/périphérique), testable en isolation (EX-NFR-010) — la résolution de chemin est séparée de la lecture, qui appartient à hmi::AudioEngine. Aucune lecture ne lève d'exception vers l'appelant (EX-NFR-040) : toute erreur est décrite dans un hmi::SoundCatalogResult.

Même patron que hmi::SkinCatalog (LOT-42) : un fichier absent produit un catalogue vide (cas légitime), une entrée malformée fait échouer le chargement entier plutôt que d'être devinée ou silencieusement ignorée.

Member Function Documentation

◆ assign()

void hmi::SoundCatalog::assign ( const std::string & eventId,
std::string file )

Assigne un fichier à un événement, en écrasant une assignation existante.

◆ eventIds()

std::vector< std::string > hmi::SoundCatalog::eventIds ( ) const
nodiscard
Returns
Les identifiants d'événement connus, par ordre alphabétique (ordre stable).

◆ fromDocument()

SoundCatalogResult hmi::SoundCatalog::fromDocument ( const core::JsonDocument & document)
staticnodiscardprivate

Construit le catalogue depuis l'enveloppe déjà lue par core::readJsonObject.

Le JSON bien formé, la racine objet et la garde de version sont vérifiés avant d'arriver ici : c'est la brique partagée du LOT-79 qui s'en charge (EX-CNT-012), et ce catalogue n'a plus à les réimplémenter pour son compte.

◆ loadFromFile()

SoundCatalogResult hmi::SoundCatalog::loadFromFile ( const std::filesystem::path & path)
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.

Parameters
pathChemin du fichier.
Returns
Le catalogue, ou une erreur décrite. Ne lève jamais.

◆ loadFromString()

SoundCatalogResult hmi::SoundCatalog::loadFromString ( std::string_view json)
staticnodiscard

Lit un catalogue depuis une chaîne JSON.

Parameters
jsonContenu JSON.
Returns
Le catalogue, ou une erreur décrite. Ne lève jamais.

◆ resolve()

std::optional< std::string > hmi::SoundCatalog::resolve ( std::string_view eventId) const
nodiscard

Résout le fichier assigné à un événement.

Parameters
eventIdIdentifiant logique de l'événement (ex. "saut").
Returns
Le nom de fichier (relatif à Source/Elements/Audio/), ou std::nullopt si l'événement n'est pas dans le catalogue — l'appelant reste silencieux (EX-NFR-040), il n'affiche ni ne journalise rien à chaque déclenchement.

Member Data Documentation

◆ _sounds

std::map<std::string, std::string, std::less<> > hmi::SoundCatalog::_sounds
private

◆ FORMAT_VERSION

int hmi::SoundCatalog::FORMAT_VERSION = 1
staticconstexpr

Version du format écrite dans le fichier, et plus élevée qui soit lue.


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