|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Marque une entité comme cible d'interaction et porte de quoi la désigner. More...
#include <Interactable.h>
Public Member Functions | |
| bool | isConsumable () const |
| Vrai si l'interaction ne peut avoir lieu qu'une fois. | |
Public Attributes | |
| std::string | type |
| Type de l'entité, libre : "chest", "sign", "npc", "portal"… | |
| GridPosition | position |
| Case occupée par l'entité. | |
| std::string | consumedFlag |
| Clé du drapeau de monde qui dit si cette interaction a déjà eu lieu. | |
| std::string | promptKey |
| Clé de localisation de l'invite affichée quand la cible est à portée. | |
Marque une entité comme cible d'interaction et porte de quoi la désigner.
Donnée pure sans logique (EX-ARCH-011). Le composant ne dit pas ce que l'interaction fait : un coffre, un panneau et un PNJ portent le même composant et se distinguent par leur type, que le gameplay interprète. Core ne connaît aucune sémantique de type — c'est la règle que core::MapEntity pose déjà, et la reprendre ici évite qu'une énumération fermée oblige chaque lot suivant à modifier ce fichier pour ajouter une famille.
La case est portée en plus du Transform parce que l'interaction raisonne en cases, pas en unités monde : la cible est « la case devant le personnage », et la retrouver depuis une position flottante demanderait une division dont l'arrondi déciderait du résultat aux frontières.
|
inlinenodiscard |
Vrai si l'interaction ne peut avoir lieu qu'une fois.
| std::string core::Interactable::consumedFlag |
Clé du drapeau de monde qui dit si cette interaction a déjà eu lieu.
Vide pour une entité qu'on peut solliciter indéfiniment — un panneau se relit, un PNJ se reparle. Renseignée pour ce qui ne se prend qu'une fois : le coffre. Voir core::keyForEntity(), qui la fabrique.
| GridPosition core::Interactable::position |
Case occupée par l'entité.
| std::string core::Interactable::promptKey |
Clé de localisation de l'invite affichée quand la cible est à portée.
Une clé, jamais un texte : l'invite est de l'interface, et le Core n'écrit pas de français. Vide pour une entité qui n'annonce rien.
| std::string core::Interactable::type |
Type de l'entité, libre : "chest", "sign", "npc", "portal"…