|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Traduit une fiche de personnage en valeurs affichables, indexées par l'identifiant que l'ossature de l'écran déclare (hmi::RpgField::valueId). More...
#include <CharacterSheetValues.h>
Public Attributes | |
| const core::CharacterSheet * | sheet = nullptr |
| const core::CharacterOptions * | options = nullptr |
| const core::ExperienceTable * | experience = nullptr |
| const core::SkillCatalog * | skills = nullptr |
| const core::DerivedStats * | derived = nullptr |
| Ce que l'équipement porté produit (core::derivedStatsFor, LOT-14). | |
| std::string | emptyMark = "—" |
| Texte affiché lorsqu'une valeur existe mais est vide (nom d'espèce inconnu du catalogue, par exemple). | |
Traduit une fiche de personnage en valeurs affichables, indexées par l'identifiant que l'ossature de l'écran déclare (hmi::RpgField::valueId).
Logique pure : aucune dépendance Qt, aucun accès disque (EX-NFR-010). C'est ce qui permet de vérifier par test qu'un modificateur s'affiche +3 et non 3, qu'une compétence maîtrisée compte son bonus de maîtrise, et que la Perception passive vaut bien 10 + le modificateur — sans ouvrir de fenêtre.
L'écran est décrit par une table (hmi::rpgScreens), et un neuvième champ doit y coûter une ligne. Une structure à quarante membres obligerait à toucher trois fichiers pour chaque champ ajouté — la table, la structure, et le code qui les relie — c'est-à-dire exactement ce qu'EX-IHM-090 écarte. Ici, l'identifiant est le seul contrat, et un test vérifie qu'aucun des deux côtés n'en invente un que l'autre ignore.
Les nombres sont mis en forme ici (signe d'un modificateur, 12 / 18 de points de vie) parce que c'est une règle d'affichage, pas une question de langue. Les noms — espèce, classe, historique — viennent des catalogues, qui les portent déjà dans la langue du corpus ; les traduire est le sujet du lexique du LOT-30, pas de ce fichier.
| const core::DerivedStats* hmi::CharacterSheetContext::derived = nullptr |
Ce que l'équipement porté produit (core::derivedStatsFor, LOT-14).
Présent, il remplace la classe d'armure et la vitesse de la fiche : celles-ci sont calculées à la construction, sans rien savoir de l'armure endossée depuis. Absent, la fiche donne les siennes — un personnage sans inventaire n'est pas un personnage sans armure, c'est un personnage dont on ne sait pas ce qu'il porte.
| std::string hmi::CharacterSheetContext::emptyMark = "—" |
Texte affiché lorsqu'une valeur existe mais est vide (nom d'espèce inconnu du catalogue, par exemple).
Le même tiret cadratin que le châssis pose sur un champ sans source : à l'écran, « inconnu » et « pas encore alimenté » se ressemblent, et rien ne gagne à les distinguer par deux signes différents.
| const core::ExperienceTable* hmi::CharacterSheetContext::experience = nullptr |
| const core::CharacterOptions* hmi::CharacterSheetContext::options = nullptr |
| const core::CharacterSheet* hmi::CharacterSheetContext::sheet = nullptr |
| const core::SkillCatalog* hmi::CharacterSheetContext::skills = nullptr |