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

Opérations sur les fichiers d'un dossier d'assets, sans dépendance Qt/GPU. More...

#include <AssetFileOperations.h>

Public Member Functions

 AssetFileOperations (std::filesystem::path assetsDirectory)
std::vector< std::filesystem::path > list () const
FileOperationResult import (const std::filesystem::path &sourceFile, AssetFamily family, int decodedWidth, int decodedHeight) const
 Copie un fichier externe dans le dossier géré, après validation de son contrat.
FileOperationResult rename (const std::filesystem::path &source, const std::string &newStem) const
 Renomme le fichier source en newStem, en conservant son extension d'origine.
FileOperationResult duplicate (const std::filesystem::path &source) const
 Duplique source sous un nom unique (« … (copie) », « … (copie 2) », …).

Static Public Member Functions

static FileOperationResult remove (const std::filesystem::path &source)
 Supprime le fichier source.

Private Member Functions

std::filesystem::path pathForStem (const std::string &stem, const std::filesystem::path &extension) const
 Chemin d'un nom de fichier (sans extension) dans le dossier géré, avec l'extension donnée.

Private Attributes

std::filesystem::path _directory

Detailed Description

Opérations sur les fichiers d'un dossier d'assets, sans dépendance Qt/GPU.

Pendant exact de hmi::LevelFileOperations, dont elle réutilise le type de résultat (hmi::FileOperationResult) : même contrat, jamais d'exception vers l'appelant (EX-NFR-040), chaque opération renvoie un résultat exploitable (EX-NFR-010).

Deux différences avec les niveaux justifient une classe séparée plutôt qu'une réutilisation directe :

  • un import copie un fichier externe (hors du dossier géré), après validation de ses dimensions contre le contrat de sa famille (EX-REN-007) — un niveau n'a pas d'équivalent ;
  • un renommage conserve l'extension d'origine (.png), alors qu'un niveau n'en a pas côté utilisateur (LevelFileOperations l'ajoute elle-même).

Constructor & Destructor Documentation

◆ AssetFileOperations()

hmi::AssetFileOperations::AssetFileOperations ( std::filesystem::path assetsDirectory)
explicit

Member Function Documentation

◆ duplicate()

FileOperationResult hmi::AssetFileOperations::duplicate ( const std::filesystem::path & source) const
nodiscard

Duplique source sous un nom unique (« … (copie) », « … (copie 2) », …).

◆ import()

FileOperationResult hmi::AssetFileOperations::import ( const std::filesystem::path & sourceFile,
AssetFamily family,
int decodedWidth,
int decodedHeight ) const
nodiscard

Copie un fichier externe dans le dossier géré, après validation de son contrat.

Copie, jamais déplacement : le fichier source appartient à l'utilisateur (point d'attention LOT-43 TACHE-02). Les dimensions sont vérifiées avant la copie : importer un asset invalide pour le découvrir en jeu serait une régression par rapport à la validation au chargement (hmi::TextureCache).

Le décodage de l'image (hmi::decodeImageFile, dépendance Qt) reste à la charge de l'appelant, qui fournit les dimensions déjà lues : cette classe reste ainsi pure (std::filesystem seul), comme hmi::LevelFileOperations, et testable sans Qt (EX-NFR-010).

Parameters
sourceFileFichier externe à copier.
familyFamille de l'asset, qui fixe les dimensions attendues.
decodedWidthLargeur de l'image déjà décodée, en pixels.
decodedHeightHauteur de l'image déjà décodée, en pixels.
Returns
Le résultat, avec le chemin copié en cas de succès.

◆ list()

std::vector< std::filesystem::path > hmi::AssetFileOperations::list ( ) const
nodiscard
Returns
Les fichiers du dossier, triés par nom (vide si le dossier n'existe pas).

◆ pathForStem()

std::filesystem::path hmi::AssetFileOperations::pathForStem ( const std::string & stem,
const std::filesystem::path & extension ) const
nodiscardprivate

Chemin d'un nom de fichier (sans extension) dans le dossier géré, avec l'extension donnée.

◆ remove()

FileOperationResult hmi::AssetFileOperations::remove ( const std::filesystem::path & source)
staticnodiscard

Supprime le fichier source.

◆ rename()

FileOperationResult hmi::AssetFileOperations::rename ( const std::filesystem::path & source,
const std::string & newStem ) const
nodiscard

Renomme le fichier source en newStem, en conservant son extension d'origine.

Member Data Documentation

◆ _directory

std::filesystem::path hmi::AssetFileOperations::_directory
private

The documentation for this class was generated from the following files: