JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
CharacterOptions.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
10
11#include <array>
12#include <cstddef>
13#include <filesystem>
14#include <optional>
15#include <string>
16#include <string_view>
17#include <vector>
18
19#include "Core/Rpg/Ability.h"
20#include "Core/Rpg/RpgEnums.h"
21
22namespace core {
23
25struct NamedTrait {
26 std::string name;
27 std::string text;
28};
29
38 bool provisional = false;
39 std::string reason;
40 std::string removalCriterion;
41};
42
52struct Species {
53 std::string id;
54 std::string name;
55 std::string source;
59 float speed = 0.0F;
60 std::array<int, 6> abilityScoreIncrease{};
62 std::string parentSpecies;
63 std::vector<std::string> languages;
64 std::vector<NamedTrait> traits;
65 std::vector<std::string> requiredMechanisms;
66
68 [[nodiscard]] int increase(Ability which) const {
69 return abilityScoreIncrease[static_cast<std::size_t>(which)];
70 }
71};
72
74struct Background {
75 std::string id;
76 std::string name;
77 std::string source;
79 std::vector<std::string> skillProficiencies;
82 std::optional<NamedTrait> feature;
83 std::string text;
84};
85
87struct ClassLevel {
88 int level = 0;
90 std::vector<std::string> features;
91};
92
102 std::string id;
103 std::string name;
104 std::string source;
105 int hitDie = 0;
106 std::vector<Ability> primaryAbility;
107 std::vector<Ability> savingThrowProficiencies;
108 std::vector<ClassLevel> progression;
110
112 [[nodiscard]] const ClassLevel* atLevel(int level) const;
113};
114
123 std::vector<Species> species;
124 std::vector<Background> backgrounds;
125 std::vector<PlayableClass> classes;
126 std::vector<std::string> errors;
127
128 [[nodiscard]] const Species* findSpecies(std::string_view id) const;
129 [[nodiscard]] const Background* findBackground(std::string_view id) const;
130 [[nodiscard]] const PlayableClass* findClass(std::string_view id) const;
131
140 [[nodiscard]] std::vector<std::string> requiredMechanisms() const;
141
143 [[nodiscard]] std::vector<std::string> provisionalClassIds() const;
144};
145
157[[nodiscard]] int abilityScoreWith(const Species& species, Ability which, int baseScore,
158 int maximumScore);
159
174[[nodiscard]] CharacterOptions loadCharacterOptions(const std::filesystem::path& speciesDir,
175 const std::filesystem::path& backgroundsDir,
176 const std::filesystem::path& classesDir);
177
178} // namespace core
Les six caractéristiques et leur modificateur (EX-DND-010).
Les quatre énumérations fermées du RPG : dégâts, conditions, écoles, tailles.
Espace de noms du moteur et de la logique de jeu.
Definition Bootstrap.h:9
CharacterOptions loadCharacterOptions(const std::filesystem::path &speciesDir, const std::filesystem::path &backgroundsDir, const std::filesystem::path &classesDir)
Charge les trois catalogues depuis leurs dossiers.
Definition CharacterOptions.cpp:160
int abilityScoreWith(const Species &species, Ability which, int baseScore, int maximumScore)
Applique les augmentations d'une espèce à une valeur de caractéristique.
Definition CharacterOptions.cpp:156
Ability
Une des six caractéristiques d'un personnage ou d'une créature (EX-DND-010).
Definition Ability.h:24
CreatureSize
Catégorie de taille d'une créature (EX-CNT-011).
Definition RpgEnums.h:101
@ Medium
Definition RpgEnums.h:104
Un historique : maîtrises, langues accordées et capacité.
Definition CharacterOptions.h:74
std::optional< NamedTrait > feature
Definition CharacterOptions.h:82
std::string id
Definition CharacterOptions.h:75
std::string text
Definition CharacterOptions.h:83
std::string source
Definition CharacterOptions.h:77
int languageCount
Nombre de langues au choix du joueur. 0 si l'historique n'en accorde aucune.
Definition CharacterOptions.h:81
std::vector< std::string > skillProficiencies
Compétences maîtrisées, par identifiant du catalogue du LOT-43.
Definition CharacterOptions.h:79
std::string name
Definition CharacterOptions.h:76
Les trois catalogues chargés, et ce qui n'a pas pu l'être.
Definition CharacterOptions.h:122
std::vector< std::string > errors
Definition CharacterOptions.h:126
std::vector< std::string > requiredMechanisms() const
Les mécanismes que ces données exigent et que personne n'a encore honorés (EX-CNT-031).
Definition CharacterOptions.cpp:138
std::vector< Background > backgrounds
Definition CharacterOptions.h:124
const Background * findBackground(std::string_view id) const
Definition CharacterOptions.cpp:128
const PlayableClass * findClass(std::string_view id) const
Definition CharacterOptions.cpp:133
std::vector< std::string > provisionalClassIds() const
Les identifiants des classes marquées provisoires (EX-CNT-032).
Definition CharacterOptions.cpp:146
std::vector< PlayableClass > classes
Definition CharacterOptions.h:125
const Species * findSpecies(std::string_view id) const
Definition CharacterOptions.cpp:123
std::vector< Species > species
Definition CharacterOptions.h:123
Une ligne de table de progression : ce qu'un niveau apporte.
Definition CharacterOptions.h:87
int proficiencyBonus
Definition CharacterOptions.h:89
std::vector< std::string > features
Definition CharacterOptions.h:90
int level
Definition CharacterOptions.h:88
Un trait nommé, tel que le livre l'écrit — d'espèce ou d'historique.
Definition CharacterOptions.h:25
std::string text
Definition CharacterOptions.h:27
std::string name
Definition CharacterOptions.h:26
Une classe jouable et sa table de progression.
Definition CharacterOptions.h:101
std::vector< ClassLevel > progression
Definition CharacterOptions.h:108
const ClassLevel * atLevel(int level) const
La ligne de progression d'un niveau, ou nullptr si la table ne le porte pas.
Definition CharacterOptions.cpp:118
ProvisionalStatus status
Definition CharacterOptions.h:109
std::string name
Definition CharacterOptions.h:103
std::vector< Ability > primaryAbility
Definition CharacterOptions.h:106
std::vector< Ability > savingThrowProficiencies
Definition CharacterOptions.h:107
int hitDie
Definition CharacterOptions.h:105
std::string id
Definition CharacterOptions.h:102
std::string source
Definition CharacterOptions.h:104
Le statut provisoire d'une donnée (EX-CNT-032).
Definition CharacterOptions.h:37
bool provisional
Definition CharacterOptions.h:38
std::string reason
Definition CharacterOptions.h:39
std::string removalCriterion
Definition CharacterOptions.h:40
Une espèce jouable : ce que species.schema.json décrit.
Definition CharacterOptions.h:52
float speed
Vitesse de base, en mètres.
Definition CharacterOptions.h:59
std::vector< std::string > requiredMechanisms
Definition CharacterOptions.h:65
std::string name
Definition CharacterOptions.h:54
std::vector< std::string > languages
Definition CharacterOptions.h:63
int increase(Ability which) const
L'augmentation qu'accorde cette espèce pour une caractéristique.
Definition CharacterOptions.h:68
std::string id
Definition CharacterOptions.h:53
std::array< int, 6 > abilityScoreIncrease
Definition CharacterOptions.h:60
std::string source
Definition CharacterOptions.h:55
CreatureSize size
Definition CharacterOptions.h:56
std::vector< NamedTrait > traits
Definition CharacterOptions.h:64
std::string parentSpecies
Sous-espèce : l'identifiant de l'espèce dont celle-ci dérive. Vide sinon.
Definition CharacterOptions.h:62