JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
AssetKey.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 Valentin Eloy
2// SPDX-License-Identifier: GPL-3.0-or-later
3
4#pragma once
5
11
12#include <filesystem>
13#include <optional>
14#include <string>
15#include <string_view>
16#include <vector>
17
18namespace core {
19
30 std::string name;
32 int width = 0;
33 int height = 0;
35 std::vector<std::string> catalogues;
36};
37
40 std::vector<AssetFamilyDefinition> families;
41 std::vector<std::string> errors;
42
43 [[nodiscard]] const AssetFamilyDefinition* find(std::string_view name) const;
44 [[nodiscard]] bool ok() const {
45 return errors.empty() && !families.empty();
46 }
47};
48
50[[nodiscard]] AssetFamilyTable loadAssetFamilies(const std::filesystem::path& familiesFile);
51
55struct AssetKey {
56 std::string family;
57 std::string id;
58
59 [[nodiscard]] friend bool operator==(const AssetKey&, const AssetKey&) noexcept = default;
60};
61
73[[nodiscard]] bool isValidAssetKey(std::string_view key);
74
76[[nodiscard]] std::optional<AssetKey> parseAssetKey(std::string_view key);
77
88[[nodiscard]] std::string defaultAssetKeyFor(std::string_view family, std::string_view id);
89
92 std::string key;
93 std::string family;
95 std::string sourceFile;
97 bool explicitKey = false;
98};
99
113[[nodiscard]] std::vector<ExpectedAssetKey> expectedAssetKeys(const std::filesystem::path& rpgDir,
114 const AssetFamilyTable& families,
115 std::vector<std::string>& errors);
116
117} // namespace core
Espace de noms du moteur et de la logique de jeu.
Definition Bootstrap.h:9
std::string defaultAssetKeyFor(std::string_view family, std::string_view id)
La clé par défaut d'une entrée : famille/identifiant.
Definition AssetKey.cpp:72
AssetFamilyTable loadAssetFamilies(const std::filesystem::path &familiesFile)
Charge la table des familles depuis Assets/Entities/families.json.
Definition AssetKey.cpp:79
std::optional< AssetKey > parseAssetKey(std::string_view key)
Décompose key. std::nullopt si elle est malformée — jamais devinée.
Definition AssetKey.cpp:63
std::vector< ExpectedAssetKey > expectedAssetKeys(const std::filesystem::path &rpgDir, const AssetFamilyTable &families, std::vector< std::string > &errors)
Énumère les clés qu'attendent les catalogues de rpgDir, selon families.
Definition AssetKey.cpp:136
bool isValidAssetKey(std::string_view key)
Vrai si key respecte la syntaxe d'une clé d'asset.
Definition AssetKey.cpp:50
Une famille d'assets d'entité : ce qu'elle illustre, et le contrat de dimensions.
Definition AssetKey.h:28
int height
Definition AssetKey.h:33
std::string name
Premier segment de la clé : beast, item, species…
Definition AssetKey.h:30
std::vector< std::string > catalogues
Les dossiers de catalogue dont chaque entrée attend une illustration de cette famille.
Definition AssetKey.h:35
int width
Dimensions attendues du fichier image, en pixels.
Definition AssetKey.h:32
La table des familles, et ce qui n'a pas pu être lu.
Definition AssetKey.h:39
bool ok() const
Definition AssetKey.h:44
std::vector< std::string > errors
Definition AssetKey.h:41
std::vector< AssetFamilyDefinition > families
Definition AssetKey.h:40
const AssetFamilyDefinition * find(std::string_view name) const
Definition AssetKey.cpp:45
Une clé d'asset décomposée : sa famille, et ce qu'elle désigne dedans.
Definition AssetKey.h:55
std::string id
Definition AssetKey.h:57
friend bool operator==(const AssetKey &, const AssetKey &) noexcept=default
std::string family
Definition AssetKey.h:56
Une clé attendue par le manifeste : ce qu'elle illustre, et d'où elle vient.
Definition AssetKey.h:91
std::string sourceFile
Le fichier de catalogue qui l'attend — de quoi remonter à la donnée sans la chercher.
Definition AssetKey.h:95
std::string key
Definition AssetKey.h:92
std::string family
Definition AssetKey.h:93
bool explicitKey
Vrai si la donnée a dérogé en écrivant son propre asset.
Definition AssetKey.h:97