|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Correspondance entre les énumérations RPG et leurs noms textuels (EX-CNT-011). More...
#include <optional>#include <span>#include <string>#include <string_view>#include "Core/Rpg/RpgEnums.h"Go to the source code of this file.
Namespaces | |
| namespace | core |
| Espace de noms du moteur et de la logique de jeu. | |
Functions | |
Noms textuels | |
Point unique de vérité de la correspondance valeur ↔ nom, partagé par les catalogues de données (Source/Elements/Rpg/), leurs schémas JSON et le moteur. Deux tables distinctes divergeraient au premier type ajouté — et le scénario qu'EX-CNT-011 décrit se produirait : la donnée déclare un type que le moteur ne connaît pas, la valeur tombe dans un cas par défaut, et le sort cesse de faire des dégâts sans que rien ne l'annonce. Chaque switch est exhaustif et sans default : ajouter une valeur à une énumération sans lui donner de nom devient une erreur de compilation (/W4 /WX), jamais un nom faux. Les noms sont ceux du lexique de traduction (LOT-30) : ce sont les termes anglais que la table d'autorité porte sous les catégories type de dégâts, état et école de magie. | |
| std::string | core::damageTypeName (DamageType type) |
| std::string | core::conditionName (Condition condition) |
| std::string | core::magicSchoolName (MagicSchool school) |
| std::string | core::creatureSizeName (CreatureSize size) |
Analyse d'un nom | |
Inverses exacts des fonctions ci-dessus : tout nom qu'elles produisent est accepté ici, et réciproquement. Un nom inconnu renvoie std::nullopt — c'est une donnée invalide à signaler, jamais une valeur devinée. | |
| std::optional< DamageType > | core::parseDamageType (std::string_view name) |
| std::optional< Condition > | core::parseCondition (std::string_view name) |
| std::optional< MagicSchool > | core::parseMagicSchool (std::string_view name) |
| std::optional< CreatureSize > | core::parseCreatureSize (std::string_view name) |
Énumération complète | |
Les valeurs de chaque énumération, dans l'ordre de déclaration. Ce sont ces vues qui permettent à un test de balayer une énumération sans coder en dur sa dernière valeur : la borne d'un parcours écrite à la main est la première chose qui vieillit, et un type ajouté après elle échapperait en silence à tous les contrôles. | |
| std::span< const DamageType > | core::allDamageTypes () |
| std::span< const Condition > | core::allConditions () |
| std::span< const MagicSchool > | core::allMagicSchools () |
| std::span< const CreatureSize > | core::allCreatureSizes () |
Correspondance entre les énumérations RPG et leurs noms textuels (EX-CNT-011).