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

Jeu de visibilités des plans picturaux d'un niveau, adressé par rang. More...

#include <PlaneVisibility.h>

Public Member Functions

bool visible (std::size_t rank) const
void setVisible (std::size_t rank, bool visible)
 Masque ou réaffiche le plan de rang rank. Sans effet visible tant qu'un plan est isolé.
void isolate (std::size_t rank)
 N'affiche plus que le plan de rang rank. Un second appel change le plan isolé.
void showAll ()
 Réaffiche tout : sort de l'isolement et lève les masquages individuels.
std::optional< std::size_t > isolatedRank () const noexcept

Private Attributes

std::optional< std::size_t > _isolated
 Rang du plan isolé, s'il y en a un — prioritaire sur _hidden.
std::set< std::size_t > _hidden
 Rangs masqués individuellement.

Detailed Description

Jeu de visibilités des plans picturaux d'un niveau, adressé par rang.

Distinct de hmi::LayerVisibility, et pour une raison de fond : celui-ci porte sur les calques de rendu, dont le nombre est fixe et connu à la compilation (EX-REN-014) ; le nombre de plans, lui, est libre et change au fil de l'édition. Un bit par calque ne pourrait donc pas les exprimer.

Non persistée : c'est une aide d'édition, pas une propriété du niveau. Rouvrir un niveau réaffiche tous ses plans.

Deux modes, volontairement exclusifs :

  • masquage : chaque plan peut être caché individuellement (setVisible) ;
  • isolement : un seul plan reste visible (isolate), les autres disparaissent quels que soient leurs masquages individuels — c'est le geste « je veux voir ce que je peins, seul ». showAll() sort de l'isolement et lève tous les masquages.

Les rangs suivent ceux de core::Level::planes : retirer un plan décale les suivants, et un masquage devient alors celui de son voisin. C'est assumé — l'appelant (hmi::PlanesPanel) rétablit l'état après une mutation de la liste, plutôt que d'introduire des identités stables dans le format pour un besoin d'affichage.

Member Function Documentation

◆ isolate()

void hmi::PlaneVisibility::isolate ( std::size_t rank)
inline

N'affiche plus que le plan de rang rank. Un second appel change le plan isolé.

◆ isolatedRank()

std::optional< std::size_t > hmi::PlaneVisibility::isolatedRank ( ) const
inlinenodiscardnoexcept
Returns
Le rang du plan isolé, ou std::nullopt si aucun ne l'est.

◆ setVisible()

void hmi::PlaneVisibility::setVisible ( std::size_t rank,
bool visible )
inline

Masque ou réaffiche le plan de rang rank. Sans effet visible tant qu'un plan est isolé.

◆ showAll()

void hmi::PlaneVisibility::showAll ( )
inline

Réaffiche tout : sort de l'isolement et lève les masquages individuels.

◆ visible()

bool hmi::PlaneVisibility::visible ( std::size_t rank) const
inlinenodiscard
Returns
true si le plan de rang rank doit être composé.

Member Data Documentation

◆ _hidden

std::set<std::size_t> hmi::PlaneVisibility::_hidden
private

Rangs masqués individuellement.

std::set et non un vecteur de bits : le nombre de plans est libre, et l'ensemble est presque toujours vide.

◆ _isolated

std::optional<std::size_t> hmi::PlaneVisibility::_isolated
private

Rang du plan isolé, s'il y en a un — prioritaire sur _hidden.


The documentation for this class was generated from the following file:
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Graphics/PlaneVisibility.h