|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Vue-modèle de la fiche : ce que le jeu sait dire d'un personnage. More...
#include <CharacterSheetModel.h>
Signals | |
| void | changed () |
| Émis quand la fiche change en bloc. | |
Public Member Functions | |
| CharacterSheetModel (QObject *parent=nullptr) | |
| Q_INVOKABLE void | loadDemonstrationCharacter () |
| Charge le personnage de démonstration livré en donnée. | |
| QString | name () const |
| QString | species () const |
| QString | background () const |
| QString | classAndLevel () const |
| QString | level () const |
| QString | experience () const |
| QString | hitPoints () const |
| QString | hitPointsMax () const |
| QString | hitDice () const |
| QString | armorClass () const |
| QString | initiative () const |
| QString | speed () const |
| QString | proficiencyBonus () const |
| QString | passivePerception () const |
| QAbstractItemModel * | abilities () |
| QAbstractItemModel * | savingThrows () |
| QAbstractItemModel * | skills () |
Properties | |
| QML_ELEMENTQString | name |
| QString | species |
| QString | background |
| QString | classAndLevel |
| QString | level |
| QString | experience |
| QString | hitPoints |
| QString | hitPointsMax |
| QString | hitDice |
| QString | armorClass |
| QString | initiative |
| QString | speed |
| QString | proficiencyBonus |
| QString | passivePerception |
| QAbstractItemModel * | abilities |
| QAbstractItemModel * | savingThrows |
| QAbstractItemModel * | skills |
Private Member Functions | |
| QString | value (const char *key) const |
Private Attributes | |
| std::map< std::string, std::string > | _values |
| SheetRowModel | _abilities |
| SheetRowModel | _savingThrows |
| SheetRowModel | _skills |
Vue-modèle de la fiche : ce que le jeu sait dire d'un personnage.
Cette classe est la frontière entre le développeur et la conception. Elle décide quelles données existent ; le QML décide comment elles se voient. Ajouter un champ ici demande un développeur ; le déplacer, le colorer, l'animer ou le supprimer de l'écran ne demande personne.
Elle ne connaît donc ni QML, ni asset, ni feuille de style : elle ne lie que Qt6::Qml, pour pouvoir être déclarée au moteur — jamais Qt6::Quick ni Qt6::Widgets, et un lint le vérifie (EX-IHM-101).
Le formatage — le signe d'un modificateur, le « 25 / 30 » des points de vie, le point qui marque une maîtrise — reste dans hmi::characterSheetValues, fonction pure et couverte par ses tests. Cette classe la lit et la publie ; elle ne la réécrit pas. Deux endroits qui savent écrire un modificateur finiraient par ne plus l'écrire pareil.
La couche pure produit une table indexée par chaîne (sheet.hit_points), et c'est le bon contrat entre C++ : un champ ajouté n'y touche qu'un endroit. Mais un artiste travaillant dans Qt Design Studio verrait alors des clés de chaîne dans le panneau des propriétés, sans complétion ni vérification. Les propriétés ci-dessous nomment ces clés une fois, ici — elles ne constituent pas une deuxième source, seulement une façade lisible sur la première.
|
explicit |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
signal |
Émis quand la fiche change en bloc.
Un signal unique et non un par propriété : la fiche est recalculée d'un coup à chaque changement de source, et prétendre le contraire obligerait à comparer quatorze champs pour n'en notifier que ceux qui bougent — un coût réel pour une économie que personne ne mesurerait.
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
| void hmi::CharacterSheetModel::loadDemonstrationCharacter | ( | ) |
Charge le personnage de démonstration livré en donnée.
ÉCHAFAUDAGE, et il est écrit comme tel : il n'existe encore ni groupe ni sauvegarde d'où tirer un personnage réel, et un écran de fiche qui n'affiche aucune fiche ne se relit pas. Le jour où une partie en fournira un, c'est la source qui change ici — pas l'écran, qui ne consomme que des valeurs nommées, d'où qu'elles viennent.
Une donnée manquante n'interrompt rien : l'erreur est journalisée en nommant son fichier (EX-CNT-010) et la fiche s'affiche partielle, avec ses tirets. Une fiche partielle vaut mieux qu'un écran vide.
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
nodiscardprivate |
key, ou le tiret cadratin si la fiche ne la porte pas. Jamais une chaîne vide : à l'écran, « pas de valeur » doit se voir comme tel.
|
private |
|
private |
|
private |
|
private |
|
read |
|
read |
|
read |
|
read |
|
read |
|
read |
|
read |
|
read |
|
read |
|
read |
|
read |
|
read |
|
read |
|
read |
|
read |
|
read |
|
read |