JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
Bestiary.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 <map>
15#include <optional>
16#include <string>
17#include <string_view>
18#include <vector>
19
20#include "Core/Rpg/Ability.h"
21#include "Core/Rpg/Dice.h"
22#include "Core/Rpg/RpgEnums.h"
23
24namespace core {
25
28 std::string name;
29 std::string text;
30};
31
41 std::string name;
42 std::string text;
44 std::optional<int> attackBonus;
46 std::optional<float> reach;
48 std::optional<Dice> damage;
50 std::optional<DamageType> damageType;
51};
52
55 float walk = 0.0F;
56 std::optional<float> fly;
57 std::optional<float> swim;
58 std::optional<float> climb;
59 std::optional<float> burrow;
60};
61
69struct Creature {
70 std::string id;
71 std::string name;
72 std::string source;
75 std::string creatureType;
76 std::string alignment;
77 int armorClass = 0;
78 int hitPoints = 0;
80 std::optional<Dice> hitDice;
83 std::array<int, 6> abilities{};
85 float challengeRating = 0.0F;
87 std::map<std::string, int> skills;
89 std::vector<std::string> senses;
91 std::vector<std::string> languages;
92 std::vector<DamageType> damageResistances;
93 std::vector<DamageType> damageImmunities;
94 std::vector<DamageType> damageVulnerabilities;
95 std::vector<Condition> conditionImmunities;
96 std::vector<CreatureTrait> traits;
97 std::vector<CreatureAction> actions;
99 std::string description;
101 std::vector<std::string> requiredMechanisms;
102
104 [[nodiscard]] int ability(Ability which) const {
105 return abilities[static_cast<std::size_t>(which)];
106 }
107
109 [[nodiscard]] const CreatureAction* action(std::string_view actionName) const;
110};
111
119struct Bestiary {
121 std::vector<Creature> creatures;
123 std::vector<std::string> errors;
131 [[nodiscard]] std::vector<std::string> requiredMechanisms() const;
132
134 [[nodiscard]] const Creature* find(std::string_view id) const;
135};
136
155[[nodiscard]] Bestiary loadBestiary(const std::filesystem::path& directory);
156
157} // namespace core
Les six caractéristiques et leur modificateur (EX-DND-010).
Notation de dés NdF+M : analyse, évaluation, bornes (EX-NFR-002).
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
Bestiary loadBestiary(const std::filesystem::path &directory)
Charge toutes les créatures d'un dossier — un fichier JSON par créature.
Definition Bestiary.cpp:283
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
Le catalogue chargé, et ce qui n'a pas pu l'être.
Definition Bestiary.h:119
std::vector< std::string > requiredMechanisms() const
Les mécanismes que les créatures chargées exigent et que personne n'a encore honorés (EX-CNT-031).
Definition Bestiary.cpp:275
const Creature * find(std::string_view id) const
La créature portant cet identifiant, ou nullptr.
Definition Bestiary.cpp:270
std::vector< std::string > errors
Un message par fichier refusé, nommant le fichier et la raison.
Definition Bestiary.h:123
std::vector< Creature > creatures
Les créatures chargées, triées par identifiant.
Definition Bestiary.h:121
Une action de créature, et ce que le moteur sait en jouer.
Definition Bestiary.h:40
std::string name
Definition Bestiary.h:41
std::optional< Dice > damage
Dés de dégâts de la première clause de l'action. Voir la note de loadBestiary.
Definition Bestiary.h:48
std::optional< int > attackBonus
Bonus au jet d'attaque. Absent si l'action n'est pas une attaque.
Definition Bestiary.h:44
std::optional< DamageType > damageType
Type des dégâts ci-dessus.
Definition Bestiary.h:50
std::optional< float > reach
Allonge en mètres. Absente pour une action à distance ou sans portée.
Definition Bestiary.h:46
std::string text
Definition Bestiary.h:42
Vitesses de déplacement d'une créature, en mètres. walk est toujours renseignée.
Definition Bestiary.h:54
std::optional< float > swim
Definition Bestiary.h:57
std::optional< float > burrow
Definition Bestiary.h:59
float walk
Definition Bestiary.h:55
std::optional< float > fly
Definition Bestiary.h:56
std::optional< float > climb
Definition Bestiary.h:58
Un trait de créature : un nom et sa description, tels que le livre les écrit.
Definition Bestiary.h:27
std::string name
Definition Bestiary.h:28
std::string text
Definition Bestiary.h:29
Un bloc de statistiques : ce que creature.schema.json décrit.
Definition Bestiary.h:69
std::string alignment
Definition Bestiary.h:76
std::vector< CreatureAction > actions
Definition Bestiary.h:97
std::array< int, 6 > abilities
Les six caractéristiques, indexées par core::Ability, dans l'ordre de la fiche.
Definition Bestiary.h:83
int armorClass
Definition Bestiary.h:77
std::vector< DamageType > damageResistances
Definition Bestiary.h:92
std::optional< Dice > hitDice
Dés de vie — 4d10+4. Absents si la donnée ne les porte pas.
Definition Bestiary.h:80
std::vector< std::string > languages
Langues, par identifiant du catalogue des seize langues.
Definition Bestiary.h:91
CreatureSize size
Definition Bestiary.h:73
const CreatureAction * action(std::string_view actionName) const
L'action portant ce nom, ou nullptr.
Definition Bestiary.cpp:265
std::map< std::string, int > skills
Bonus de compétence, par identifiant du catalogue (stealth, perception).
Definition Bestiary.h:87
std::vector< std::string > senses
Sens, en français : « vision dans le noir 18 m », « Perception passive 13 ».
Definition Bestiary.h:89
std::vector< Condition > conditionImmunities
Definition Bestiary.h:95
int ability(Ability which) const
La valeur d'une caractéristique.
Definition Bestiary.h:104
int hitPoints
Definition Bestiary.h:78
float challengeRating
Facteur de puissance. Fractionnaire sous 1 — 1/8, 1/4, 1/2 — d'où le nombre flottant.
Definition Bestiary.h:85
std::string id
Definition Bestiary.h:70
std::vector< DamageType > damageVulnerabilities
Definition Bestiary.h:94
std::vector< std::string > requiredMechanisms
Mécanismes que cette créature exige du moteur (EX-CNT-030).
Definition Bestiary.h:101
std::string description
Le paragraphe d'ambiance du livre. Vide pour les créatures qui n'en ont pas.
Definition Bestiary.h:99
std::string source
Definition Bestiary.h:72
std::vector< DamageType > damageImmunities
Definition Bestiary.h:93
std::string name
Definition Bestiary.h:71
std::vector< CreatureTrait > traits
Definition Bestiary.h:96
CreatureSpeed speed
Definition Bestiary.h:81
std::string creatureType
Type de créature, en français et ouvert : le Sourcebook en introduira que le SRD ignore.
Definition Bestiary.h:75