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

Vue-modèle de la fiche : ce que le jeu sait dire d'un personnage. More...

#include <CharacterSheetModel.h>

Inheritance diagram for hmi::CharacterSheetModel:

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

Detailed Description

Vue-modèle de la fiche : ce que le jeu sait dire d'un personnage.

Où passe la frontière

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).

Ce qu'elle ne refait pas

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.

Pourquoi des propriétés nommées plutôt que la table brute

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.

Constructor & Destructor Documentation

◆ CharacterSheetModel()

hmi::CharacterSheetModel::CharacterSheetModel ( QObject * parent = nullptr)
explicit

Member Function Documentation

◆ abilities()

QAbstractItemModel * hmi::CharacterSheetModel::abilities ( )
inlinenodiscard

◆ armorClass()

QString hmi::CharacterSheetModel::armorClass ( ) const
inlinenodiscard

◆ background()

QString hmi::CharacterSheetModel::background ( ) const
inlinenodiscard

◆ changed

void hmi::CharacterSheetModel::changed ( )
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.

◆ classAndLevel()

QString hmi::CharacterSheetModel::classAndLevel ( ) const
inlinenodiscard

◆ experience()

QString hmi::CharacterSheetModel::experience ( ) const
inlinenodiscard

◆ hitDice()

QString hmi::CharacterSheetModel::hitDice ( ) const
inlinenodiscard

◆ hitPoints()

QString hmi::CharacterSheetModel::hitPoints ( ) const
inlinenodiscard

◆ hitPointsMax()

QString hmi::CharacterSheetModel::hitPointsMax ( ) const
inlinenodiscard

◆ initiative()

QString hmi::CharacterSheetModel::initiative ( ) const
inlinenodiscard

◆ level()

QString hmi::CharacterSheetModel::level ( ) const
inlinenodiscard

◆ loadDemonstrationCharacter()

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.

◆ name()

QString hmi::CharacterSheetModel::name ( ) const
inlinenodiscard

◆ passivePerception()

QString hmi::CharacterSheetModel::passivePerception ( ) const
inlinenodiscard

◆ proficiencyBonus()

QString hmi::CharacterSheetModel::proficiencyBonus ( ) const
inlinenodiscard

◆ savingThrows()

QAbstractItemModel * hmi::CharacterSheetModel::savingThrows ( )
inlinenodiscard

◆ skills()

QAbstractItemModel * hmi::CharacterSheetModel::skills ( )
inlinenodiscard

◆ species()

QString hmi::CharacterSheetModel::species ( ) const
inlinenodiscard

◆ speed()

QString hmi::CharacterSheetModel::speed ( ) const
inlinenodiscard

◆ value()

QString hmi::CharacterSheetModel::value ( const char * key) const
nodiscardprivate
Returns
La valeur formatée de 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.

Member Data Documentation

◆ _abilities

SheetRowModel hmi::CharacterSheetModel::_abilities
private

◆ _savingThrows

SheetRowModel hmi::CharacterSheetModel::_savingThrows
private

◆ _skills

SheetRowModel hmi::CharacterSheetModel::_skills
private

◆ _values

std::map<std::string, std::string> hmi::CharacterSheetModel::_values
private

Property Documentation

◆ abilities

QAbstractItemModel* hmi::CharacterSheetModel::abilities
read

◆ armorClass

QString hmi::CharacterSheetModel::armorClass
read

◆ background

QString hmi::CharacterSheetModel::background
read

◆ classAndLevel

QString hmi::CharacterSheetModel::classAndLevel
read

◆ experience

QString hmi::CharacterSheetModel::experience
read

◆ hitDice

QString hmi::CharacterSheetModel::hitDice
read

◆ hitPoints

QString hmi::CharacterSheetModel::hitPoints
read

◆ hitPointsMax

QString hmi::CharacterSheetModel::hitPointsMax
read

◆ initiative

QString hmi::CharacterSheetModel::initiative
read

◆ level

QString hmi::CharacterSheetModel::level
read

◆ name

QML_ELEMENTQString hmi::CharacterSheetModel::name
read

◆ passivePerception

QString hmi::CharacterSheetModel::passivePerception
read

◆ proficiencyBonus

QString hmi::CharacterSheetModel::proficiencyBonus
read

◆ savingThrows

QAbstractItemModel* hmi::CharacterSheetModel::savingThrows
read

◆ skills

QAbstractItemModel* hmi::CharacterSheetModel::skills
read

◆ species

QString hmi::CharacterSheetModel::species
read

◆ speed

QString hmi::CharacterSheetModel::speed
read

The documentation for this class was generated from the following files: