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

Liste ordonnée des plans d'un niveau, avec leurs réglages. More...

#include <PlanesPanel.h>

Inheritance diagram for hmi::PlanesPanel:

Signals

void planeSelected (std::optional< std::size_t > index)
 Un plan a été sélectionné dans la liste (ou désélectionné).
void addRequested ()
 Créer un plan : l'appelant crée le PNG et ajoute l'entrée au brouillon.
void removeRequested (std::size_t index)
 Retirer l'entrée du plan index.
void paintRequested (std::size_t index)
 Ouvrir le plan index dans le mode création.
void reorderRequested (std::size_t index, bool forward)
 Réordonner : forward rapproche le plan du dessus de la liste.
void depthChangeRequested (std::size_t index, core::PlaneDepth depth)
 Changer la profondeur du plan index.
void densityChangeRequested (std::size_t index, int pixelsPerUnit)
 Changer la densité du plan index : l'appelant rééchantillonne l'image et la réécrit.
void parallaxChangeRequested (std::size_t index, float parallaxX, float parallaxY)
 Changer les facteurs de parallaxe du plan index.
void opacityChangeRequested (std::size_t index, float opacity)
 Changer l'opacité du plan index.
void levelParallaxToggled (bool enabled)
 Changer le drapeau de parallaxe du niveau.
void visibilityToggled (std::size_t index, bool visible)
 Masquer/réafficher le plan index (aide d'édition, jamais persistée).
void isolateToggled (std::size_t index, bool isolate)
 Isoler le plan index, ou tout réafficher si isolate est faux.

Public Member Functions

 PlanesPanel (QWidget *parent=nullptr)
 ~PlanesPanel () override
void refresh (const core::LevelDraft &draft, std::optional< std::size_t > selected, const PlaneVisibility &visibility)
 Repeuple le panneau depuis draft.
std::optional< std::size_t > selectedIndex () const
void retranslateUi (const Localization &loc)
 Applique la langue active (titres, libellés, entrées de listes déroulantes).

Private Member Functions

void rebuildTree (const core::LevelDraft &draft, std::optional< std::size_t > selected, const PlaneVisibility &visibility)
 Repeuple la liste sans réémettre planeSelected (repeuplement, pas geste utilisateur).
void refreshSettings (const core::LevelDraft &draft, std::optional< std::size_t > selected)
 Repeuple les champs du plan sélectionné, ou les désactive si aucun ne l'est.
void connectControls ()
 Branche les signaux des contrôles (une seule fois, à la construction).

Private Attributes

Ui::PlanesPanel * _ui
bool _refreshing = false
 Vrai pendant un repeuplement : les signaux des contrôles sont alors ignorés, sinon repeupler la vue émettrait des mutations que personne n'a demandées.
core::CameraFramingMode _framingMode = core::CameraFramingMode::WholeLevel
 Mode de cadrage du niveau, pour griser la case de parallaxe là où le moteur la neutralise.

Detailed Description

Liste ordonnée des plans d'un niveau, avec leurs réglages.

Vue du modèle, pas un état : refresh repeuple les champs depuis un core::LevelDraft, aucune copie n'est conservée entre deux appels. Le panneau n'écrit rien — il émet un signal typé, et l'appelant (hmi::MainWindowhmi::GameViewport) applique la mutation au brouillon, seul propriétaire. Même patron que les autres panneaux de l'éditeur.

L'ordre de la liste est significatif : il décide de la superposition à l'intérieur d'une profondeur. D'où des boutons Monter/Descendre plutôt qu'un tri de colonne, qui laisserait croire que l'ordre n'est qu'un confort d'affichage.

Les champs numériques émettent sur editingFinished, jamais sur valueChanged : taper « 0.75 » dans un facteur de parallaxe produirait sinon quatre mutations, donc quatre pas d'annulation pour un seul geste (leçon du LOT-67).

La visibilité des plans (masquage, isolement) n'est pas une propriété du niveau : elle vit dans hmi::PlaneVisibility, n'est pas persistée, et n'empile aucun pas d'annulation.

Constructor & Destructor Documentation

◆ PlanesPanel()

hmi::PlanesPanel::PlanesPanel ( QWidget * parent = nullptr)
explicit

◆ ~PlanesPanel()

hmi::PlanesPanel::~PlanesPanel ( )
override

Member Function Documentation

◆ addRequested

void hmi::PlanesPanel::addRequested ( )
signal

Créer un plan : l'appelant crée le PNG et ajoute l'entrée au brouillon.

◆ connectControls()

void hmi::PlanesPanel::connectControls ( )
private

Branche les signaux des contrôles (une seule fois, à la construction).

◆ densityChangeRequested

void hmi::PlanesPanel::densityChangeRequested ( std::size_t index,
int pixelsPerUnit )
signal

Changer la densité du plan index : l'appelant rééchantillonne l'image et la réécrit.

◆ depthChangeRequested

void hmi::PlanesPanel::depthChangeRequested ( std::size_t index,
core::PlaneDepth depth )
signal

Changer la profondeur du plan index.

◆ isolateToggled

void hmi::PlanesPanel::isolateToggled ( std::size_t index,
bool isolate )
signal

Isoler le plan index, ou tout réafficher si isolate est faux.

◆ levelParallaxToggled

void hmi::PlanesPanel::levelParallaxToggled ( bool enabled)
signal

Changer le drapeau de parallaxe du niveau.

◆ opacityChangeRequested

void hmi::PlanesPanel::opacityChangeRequested ( std::size_t index,
float opacity )
signal

Changer l'opacité du plan index.

◆ paintRequested

void hmi::PlanesPanel::paintRequested ( std::size_t index)
signal

Ouvrir le plan index dans le mode création.

◆ parallaxChangeRequested

void hmi::PlanesPanel::parallaxChangeRequested ( std::size_t index,
float parallaxX,
float parallaxY )
signal

Changer les facteurs de parallaxe du plan index.

◆ planeSelected

void hmi::PlanesPanel::planeSelected ( std::optional< std::size_t > index)
signal

Un plan a été sélectionné dans la liste (ou désélectionné).

◆ rebuildTree()

void hmi::PlanesPanel::rebuildTree ( const core::LevelDraft & draft,
std::optional< std::size_t > selected,
const PlaneVisibility & visibility )
private

Repeuple la liste sans réémettre planeSelected (repeuplement, pas geste utilisateur).

◆ refresh()

void hmi::PlanesPanel::refresh ( const core::LevelDraft & draft,
std::optional< std::size_t > selected,
const PlaneVisibility & visibility )

Repeuple le panneau depuis draft.

Parameters
draftBrouillon courant (lecture seule).
selectedRang du plan sélectionné, si un l'est.
visibilityVisibilité courante par rang (masquage, isolement).

◆ refreshSettings()

void hmi::PlanesPanel::refreshSettings ( const core::LevelDraft & draft,
std::optional< std::size_t > selected )
private

Repeuple les champs du plan sélectionné, ou les désactive si aucun ne l'est.

◆ removeRequested

void hmi::PlanesPanel::removeRequested ( std::size_t index)
signal

Retirer l'entrée du plan index.

Le fichier n'est jamais supprimé : le brouillon annule l'entrée JSON, pas la disparition d'une image — un fichier orphelin est moins grave qu'un travail perdu.

◆ reorderRequested

void hmi::PlanesPanel::reorderRequested ( std::size_t index,
bool forward )
signal

Réordonner : forward rapproche le plan du dessus de la liste.

◆ retranslateUi()

void hmi::PlanesPanel::retranslateUi ( const Localization & loc)

Applique la langue active (titres, libellés, entrées de listes déroulantes).

◆ selectedIndex()

std::optional< std::size_t > hmi::PlanesPanel::selectedIndex ( ) const
nodiscard
Returns
Le rang du plan sélectionné dans la liste, si un l'est.

◆ visibilityToggled

void hmi::PlanesPanel::visibilityToggled ( std::size_t index,
bool visible )
signal

Masquer/réafficher le plan index (aide d'édition, jamais persistée).

Member Data Documentation

◆ _framingMode

core::CameraFramingMode hmi::PlanesPanel::_framingMode = core::CameraFramingMode::WholeLevel
private

Mode de cadrage du niveau, pour griser la case de parallaxe là où le moteur la neutralise.

◆ _refreshing

bool hmi::PlanesPanel::_refreshing = false
private

Vrai pendant un repeuplement : les signaux des contrôles sont alors ignorés, sinon repeupler la vue émettrait des mutations que personne n'a demandées.

◆ _ui

Ui::PlanesPanel* hmi::PlanesPanel::_ui
private

The documentation for this class was generated from the following files:
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Editor/PlanesPanel.h
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Editor/PlanesPanel.cpp