JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
hmi::CharacterSheetContext Struct Reference

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::CharacterSheetsheet = nullptr
const core::CharacterOptionsoptions = nullptr
const core::ExperienceTableexperience = nullptr
const core::SkillCatalogskills = nullptr
const core::DerivedStatsderived = 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).

Detailed Description

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.

Pourquoi une table de chaînes, et non une structure de champs

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.

Le formatage est ici, la traduction reste dehors

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.

Member Data Documentation

◆ derived

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.

◆ emptyMark

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.

◆ experience

const core::ExperienceTable* hmi::CharacterSheetContext::experience = nullptr

◆ options

const core::CharacterOptions* hmi::CharacterSheetContext::options = nullptr

◆ sheet

const core::CharacterSheet* hmi::CharacterSheetContext::sheet = nullptr

◆ skills

const core::SkillCatalog* hmi::CharacterSheetContext::skills = nullptr

The documentation for this struct was generated from the following file: