|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Widget de rendu (QRhiWidget) où la scène est dessinée, composé avec le reste de l'interface. More...
#include <GameViewport.h>
Signals | |
| void | statusMessage (const QString &message) |
| Message d'état à afficher (enregistrement, essai, erreur de validation…). | |
| void | exitToMenuRequested () |
| Demande de retour au menu principal (fin de la séquence de niveaux – plus depuis LOT-59 TACHE-02 sur Échap en mode jeu, qui ouvre désormais la pause via pauseRequested). | |
| void | pauseRequested () |
| Échap (ou le bouton B manette) en mode jeu réel, hors pause : demande l'ouverture de l'écran de pause (LOT-59 TACHE-02, EX-GP-041) – jamais en essai depuis l'éditeur (stopPlaytest garde son propre chemin, inchangé). | |
| void | draftChanged () |
| Le brouillon vient d'être modifié (peinture, undo/redo, chargement, lien…) — le panneau « Liens » se resynchronise dessus (refresh). | |
| void | renderModeChanged (RenderMode mode) |
| Le mode de rendu vient de basculer (F8) — la palette met ses vignettes à jour pour rester fidèle au canevas (EX-EDIT-027). | |
| void | toolChanged (hmi::EditorTool tool) |
| L'outil actif vient de changer par un moyen autre que le panneau Outils (raccourci clavier, LOT-45) — le panneau se resynchronise sans reboucler. | |
| void | planeSelectionChanged (std::optional< std::size_t > index) |
| La sélection de plan vient de changer par un moyen autre que le panneau (retrait, réordonnancement) — le panneau se resynchronise sans reboucler. | |
| void | hoveredCellChanged (std::optional< core::GridPosition > cell) |
| La case survolée vient de changer (déplacement de souris, ou sortie du viewport) — consommé par la barre d'état (LOT-57 TACHE-01), qui évite ainsi un travail continu inutile en ne recalculant que sur changement réel. | |
| void | zoomChanged (float zoom) |
| Le zoom d'édition vient de changer (molette, pan, recadrage) — consommé par la barre d'état (LOT-57 TACHE-01). | |
| void | resourcesReady () |
| Les ressources graphiques et le catalogue de skins viennent d'être (re)créés (QRhiWidget::initialize) — tout ce qui a lu skinCatalog() avant la première initialisation (le câblage de MainWindow, à la construction) l'a lu vide et doit se reconstruire une fois ce signal reçu, sous peine de vignettes/arbre de skins sans texture au lancement de l'éditeur. | |
Public Member Functions | |
| GameViewport (QWidget *parent=nullptr) | |
| ~GameViewport () override | |
| GameViewport (const GameViewport &)=delete | |
| GameViewport & | operator= (const GameViewport &)=delete |
| void | setActiveTile (core::TileType type) noexcept |
| Définit le type de tuile peint au clic (relié à la sélection de la palette). | |
| void | setActiveTextureAsset (std::optional< std::string > asset) noexcept |
| Définit l'asset assigné au clic par l'outil « Texture par instance » (LOT-45), relié à la sélection de la bibliothèque « Objets » ; vide si aucun asset n'est sélectionné. | |
| void | setTool (hmi::EditorTool tool) |
| Définit l'outil d'édition actif (pinceau, rectangle, sélection, lien, texture par instance). | |
| void | setLocalization (const Localization *loc) noexcept |
| Fournit le catalogue de traduction (les messages d'état émis sont alors localisés). | |
| void | setAudioEngine (AudioEngine *engine) noexcept |
| Fournit le moteur audio (LOT-60 TACHE-03) : les événements de jeu détectés par hmi::GameSession (saut, atterrissage, dash, mécanismes, mort, victoire) déclenchent alors un son. | |
| hmi::GameKeyBindings & | gameBindings () noexcept |
| Accès modifiable aux touches de jeu (pour le remappage) : la session de jeu lit ces mêmes bindings, donc un changement s'applique immédiatement. | |
| hmi::GamepadBindings & | gamepadBindings () noexcept |
| Accès modifiable aux boutons manette (pour le remappage), même principe que gameBindings. | |
| hmi::EditorKeyBindings & | editorBindings () noexcept |
| Accès modifiable aux touches d'éditeur (pour le remappage, LOT-57 TACHE-04), même principe que gameBindings. | |
| void | save () |
| Enregistre le brouillon (Ctrl+S) : valide (LevelDraft::toLevel) puis écrit le fichier ; un brouillon invalide n'écrit rien et rapporte l'erreur (statusMessage). | |
| void | openLevel (const std::filesystem::path &path) |
| Ouvre un fichier de niveau comme brouillon d'édition (remplace le brouillon courant). | |
| bool | isDirty () const noexcept |
| bool | renameOpenLevel (const std::string &newName) |
| Renomme le niveau ouvert (action Rename, F2, LOT-57 TACHE-04). | |
| void | startPlaytest () |
| Lance l'essai immédiat (P) sur un brouillon valide ; message d'erreur sinon. | |
| void | undo () override |
| Annule la dernière modification du brouillon (Ctrl+Z) ; sans effet si rien à annuler. | |
| void | redo () override |
| Refait la dernière modification annulée (Ctrl+Y) ; sans effet si rien à refaire. | |
| bool | canUndo () const override |
| bool | canRedo () const override |
| void | copy () override |
| Copie la sélection courante dans le presse-papiers local (Ctrl+C, EditContextTarget). | |
| void | paste () override |
| Colle le presse-papiers à la case survolée (Ctrl+V, EditContextTarget). | |
| bool | canCopy () const override |
| bool | canPaste () const override |
| void | toggleGrid () noexcept |
| Bascule l'affichage de la grille de repère (F10). | |
| void | resetCamera () noexcept |
| Réinitialise le cadrage manuel au cadrage automatique (touche 0). | |
| void | toggleRenderMode () |
| Bascule le mode de rendu Physique/Texture (F8, EX-REN-046) ; actif en édition, en essai et en jeu réel (LOT-56 TACHE-04 : seule commande jamais désactivée par le mode courant). | |
| void | toggleDiagnosticsOverlay () noexcept |
| Bascule le compteur de diagnostic (cadence, primitives, passes, pas de simulation ; F9, LOT-62 TACHE-02, EX-NFR-001/EX-NFR-005). | |
| bool | diagnosticsOverlayEnabled () const noexcept |
| void | setDiagnosticsOverlayEnabled (bool enabled) noexcept |
| Affiche ou masque le compteur de diagnostic. | |
| void | startGame (std::filesystem::path map) |
Lance le jeu sur la carte map. | |
| void | pauseSimulation () noexcept |
| Suspend la simulation (écran de pause, LOT-59 TACHE-02) : tick() cesse d'alimenter l'accumulateur de pas fixe – aucun pas n'est consommé pendant la pause (EX-GP-041). | |
| void | resumeSimulation () |
| Reprend la simulation après pauseSimulation() : réarme l'horloge de référence (_previousFrame) sur l'instant courant, faute de quoi le temps passé en pause serait rattrapé d'un coup au pas suivant (piège documenté par TACHE-02). | |
| bool | simulationPaused () const noexcept |
| void | quitGame () noexcept |
| Abandonne la partie en cours (« Quitter vers le menu » depuis la pause, LOT-59 TACHE-02, après confirmation côté appelant) : même nettoyage que l'ancienne sortie directe par Échap, désormais déclenchée par l'écran de pause plutôt que par la touche elle-même. | |
| void | setVSync (bool enabled) noexcept |
| Active/désactive la synchronisation verticale (EX-REN-022). | |
| bool | vsyncEnabled () const noexcept |
| void | resizeLevel (int width, int height) |
| Redimensionne le niveau en cours d'édition (EX-EDIT-005). | |
| bool | wouldResizeDrop (int width, int height) const |
| int | levelWidth () const |
| int | levelHeight () const |
| const core::LevelDraft & | draft () const noexcept |
| std::optional< std::size_t > | selectedPlaneIndex () const noexcept |
| const PlaneVisibility & | planeVisibility () const noexcept |
| std::optional< core::GridPosition > | hoveredCell () const noexcept |
| float | zoom () const noexcept |
| EditorTool | activeTool () const noexcept |
| void | setHighlightedLink (std::optional< std::pair< core::GridPosition, core::GridPosition > > link) |
| Met en surbrillance la liaison (déclencheur, cible) dans le viewport (sélection depuis le panneau « Liens ») ; n'affecte que le rendu, pas le brouillon. | |
| void | unlinkMechanism (core::GridPosition targetPosition) |
Supprime la liaison dont la cible est targetPosition (bouton « Supprimer » du panneau « Liens ») ; sans effet si targetPosition n'a pas de liaison. | |
| void | removeTextureOverride (core::GridPosition position) |
Retire l'override de texture de position (bouton « Retirer » de la section « Objets », LOT-45) ; sans effet si position n'en a pas. | |
| void | setHighlightedTextureOverride (std::optional< core::GridPosition > position) |
| Met en surbrillance une case portant un override (sélection depuis la section « Objets », LOT-45) ; n'affecte que le rendu, pas le brouillon. | |
| void | setLevelBackground (std::optional< std::string > background) |
| Assigne l'asset de fond du niveau courant (section « Fond », LOT-44). | |
| void | setLevelSkinSet (std::optional< std::string > skinSet) |
| Assigne le jeu de skins du niveau courant (section « Fond », LOT-44). | |
| void | setLevelCameraFraming (core::CameraFramingConfig cameraFraming) |
| Change le cadrage de caméra du niveau courant (section « Cadrage », EX-EDIT-028, LOT-64). | |
| void | removeCameraZone (std::size_t index) |
Retire la zone de caméra au rang index (section « Cadrage », EX-LVL-007, EX-EDIT-029) ; sans effet si hors bornes. | |
| RenderMode | renderMode () const noexcept |
| const LayerVisibility & | layerVisibility () const noexcept |
| Jeu de visibilités par calque du mode d'inspection « définition des textures » (LOT-51, EX-EDIT-044) — édition uniquement, jamais lu par hmi::GameSession. | |
| void | setLayerVisible (RenderLayer layer, bool visible) noexcept |
| Affiche ou masque un calque du mode d'inspection (section « Calques » du panneau « Textures », LOT-51). | |
| void | showAllLayers () noexcept |
| Rétablit la visibilité de tous les calques (action « tout afficher », TACHE-03). | |
| SkinCatalog & | skinCatalog () noexcept |
| Catalogue des jeux de skins, édité par le panneau « Textures » (LOT-42). | |
| void | setSkinSet (const std::string &setName) |
| Désigne le jeu de skins à utiliser pour le rendu (LOT-42). | |
| void | reloadAssets () |
| Rechargement à chaud global des assets graphiques (LOT-43 TACHE-03). | |
| void | invalidateAsset (const std::string &fileName) |
| Rechargement à chaud ciblé d'un seul asset (LOT-43 TACHE-03). | |
| void | setRenderMode (RenderMode mode) |
| Choisit le mode de rendu et persiste le choix (EX-REN-046, EX-IHM-011). | |
Plans picturaux (<tt>EX-EDIT-047</tt>, LOT-69 TACHE-08) | |
Tous ces mutateurs passent par core::LevelDraft, seul propriétaire : ils sont donc annulables au même titre qu'un coup de pinceau sur les tuiles. La visibilité, elle, n'est pas une propriété du niveau : elle n'empile rien et ne se persiste pas. | |
| void | selectPlane (std::optional< std::size_t > index) |
| Sélectionne (ou désélectionne) un plan depuis le panneau. | |
| void | addPlane (core::Plane plane) |
Ajoute plane à la fin de la liste et le sélectionne. | |
| void | removePlane (std::size_t index) |
Retire l'entrée du plan index. | |
| void | movePlane (std::size_t index, bool forward) |
Déplace le plan index d'un rang ; forward le rapproche du dessus de la liste. | |
| void | setPlaneDepth (std::size_t index, core::PlaneDepth depth) |
Change la profondeur du plan index. | |
| void | setPlaneDensity (std::size_t index, int pixelsPerUnit) |
Change la densité déclarée du plan index (le rééchantillonnage de l'image est fait par l'appelant, qui possède le fichier). | |
| void | setPlaneParallax (std::size_t index, float parallaxX, float parallaxY) |
Change les facteurs de parallaxe du plan index. | |
| void | setPlaneOpacity (std::size_t index, float opacity) |
Change l'opacité du plan index. | |
| void | setLevelParallaxEnabled (bool enabled) |
| Change le drapeau de parallaxe du niveau. | |
| void | setPlaneVisible (std::size_t index, bool visible) |
Masque ou réaffiche le plan index (aide d'édition). | |
| void | setPlaneIsolated (std::size_t index, bool isolate) |
Isole le plan index, ou réaffiche tout si isolate est faux. | |
| Public Member Functions inherited from hmi::EditContextTarget | |
| virtual | ~EditContextTarget ()=default |
Protected Member Functions | |
| void | initialize (QRhiCommandBuffer *commandBuffer) override |
| Crée (ou recrée) les ressources graphiques quand QRhiWidget fournit son interface de rendu, et à chaque fois qu'il en change (EX-NFR-040 : perte de ressources prévue, pas supposée impossible). | |
| void | render (QRhiCommandBuffer *commandBuffer) override |
| Dessine une image : avance la simulation, compose la scène, puis la soumet. | |
| void | releaseResources () override |
| Libère les ressources graphiques quand QRhiWidget défait son interface de rendu. | |
| bool | event (QEvent *event) override |
| void | keyPressEvent (QKeyEvent *event) override |
| void | keyReleaseEvent (QKeyEvent *event) override |
| void | mousePressEvent (QMouseEvent *event) override |
| void | mouseReleaseEvent (QMouseEvent *event) override |
| void | mouseMoveEvent (QMouseEvent *event) override |
| void | wheelEvent (QWheelEvent *event) override |
Private Types | |
| using | Clock = std::chrono::steady_clock |
Private Member Functions | |
| void | createResources () |
| Crée l'atlas, la police, le cache de textures et le pipeline de dessin sur l'interface de rendu courante, puis ouvre le brouillon de départ. | |
| void | tick (float elapsedSeconds) |
| Avance la simulation d'une image (entrées, pas fixes, sons) — sans rien dessiner. | |
| void | renderFrame (QRhiCommandBuffer *commandBuffer, float deltaSeconds) |
Compose et soumet une image sur commandBuffer. | |
| void | renderDiagnosticsOverlay (int viewportWidth, int viewportHeight) |
| Compose et soumet le compteur de diagnostic (LOT-62 TACHE-02), coin haut-droit de l'écran – sans effet si désactivé, hors session, ou avant que la localisation ne soit chargée (EX-NFR-040, coût nul quand éteint : rien n'est calculé au-delà du test d'entrée). | |
| void | stopPlaytest () |
| Termine l'essai et restitue l'éditeur (brouillon intact). | |
| void | loadGameMap () |
| Charge _gameMap et arme la session de jeu. | |
| void | updateMousePosition (const QMouseEvent *event) |
| void | updateEditCamera () |
| Recale la caméra d'édition : cadrage automatique sur le niveau entier, sauf pan/zoom manuel actif (molette/glisser bouton droit), auquel cas la caméra manuelle est réappliquée. | |
| core::Vector2 | screenPosition (const QMouseEvent *event) const |
| Position écran (pixels physiques) d'un événement souris, convertie par le ratio d'affichage — même conversion que updateMousePosition, réutilisée pour le pan manuel. | |
| float | minManualZoom () const |
| float | maxManualZoom () const |
| std::optional< core::GridPosition > | cellAt (const QMouseEvent *event) |
| Case de grille sous la position écran donnée (pixels physiques), si dans les bornes. | |
| core::GridPosition | clampedCell (const QMouseEvent *event) |
Case de grille sous event, bornée à la grille (jamais hors bornes) — pour les glissers rectangle/sélection dont le curseur peut dépasser légèrement les bords. | |
| void | paintAt (const QMouseEvent *event) |
Peint le type actif à la case sous event, si valide (invalide la scène rendue). | |
| void | applyRectangle (core::GridPosition a, core::GridPosition b) |
Remplit le rectangle (bornes a, b incluses) du type actif (outil Rectangle). | |
| void | addCameraZoneFromDrag (core::GridPosition a, core::GridPosition b) |
Ajoute une zone de caméra couvrant le rectangle (bornes a, b incluses, outil CameraZone, EX-LVL-007, EX-EDIT-029) au cadrage du niveau. | |
| void | copySelection () |
| Copie la zone sélectionnée dans le presse-papiers local (Ctrl+C). | |
| void | pasteClipboard () |
| Colle le presse-papiers à la case survolée (Ctrl+V). | |
| std::optional< std::pair< core::GridPosition, core::GridPosition > > | highlight () const |
| Zone à mettre en surbrillance (glisser en cours, sinon sélection mémorisée), le cas échéant. | |
| void | handleLinkClick (const QMouseEvent *event) |
| Résout le clic de l'outil Lien (hmi::resolveLinkClick) et l'applique (attente, liaison). | |
| void | handleTextureAssignClick (const QMouseEvent *event, bool rightClick) |
Résout le clic de l'outil « Texture par instance » (hmi::resolveTextureAssignClick) et l'applique (assignation/retrait) ; rightClick distingue le clic droit (retrait explicite). | |
| core::Vector2 | worldPositionAt (const QMouseEvent *event) |
| Convertit la position écran d'un événement souris en position monde, non calée sur la grille (EX-DEC-001) — contrairement à cellAt/clampedCell, utilisées par les autres outils. | |
| bool | linkExists (core::GridPosition switchPosition, core::GridPosition targetPosition) const |
| void | markDraftMutated () |
| Invalide le rendu du brouillon et notifie les panneaux dépendants (draftChanged) — à appeler après toute mutation de _draft (peinture, lien, undo/redo, chargement…). | |
| int | pixelWidth () const |
| int | pixelHeight () const |
| QString | statusText (const char *key) const |
| Texte localisé d'une clé de statut (repli sur la clé si aucun catalogue). | |
Private Attributes | |
| hmi::SceneResources | _scene |
| Lot de sprites, atlas, police, textures et skins — communs au viewport de l'éditeur et à l'élément Qt Quick du jeu (LOT-86). | |
| std::unique_ptr< hmi::DraftRenderer > | _draftRenderer |
| std::string | _skinSet |
| Jeu de skins courant ; vide pour le jeu par défaut du catalogue. | |
| hmi::GameKeyBindings | _gameBindings |
| hmi::GamepadBindings | _gamepadBindings |
| hmi::EditorKeyBindings | _editorBindings |
| Raccourcis d'éditeur remappables (LOT-45). | |
| hmi::InputState | _input |
| hmi::GamepadPoller | _gamepad |
| core::FixedTimestep | _timestep |
| Clock::time_point | _previousFrame |
| bool | _loopStarted = false |
| bool | _diagnosticsEnabled = false |
| Compteur de diagnostic (F9, LOT-62 TACHE-02) : désactivé par défaut (EX-NFR-040, point de départ sans effet visuel ni coût). | |
| hmi::FrameRateAverage | _frameRateAverage |
| Moyenne glissante de la cadence de rendu, alimentée uniquement quand _diagnosticsEnabled est vrai (rien n'est calculé quand l'affichage est éteint). | |
| int | _lastSimulationSteps = 0 |
| Nombre de pas de simulation consommés au dernier tick() – distinct de la cadence de rendu depuis le LOT-33 (hmi::DiagnosticsMeasurements::simulationSteps). | |
| hmi::ComposedScene | _diagnosticsScene |
| Scène dédiée du compteur de diagnostic, jamais partagée avec _session (dont le HUD de jeu vit dans sa propre scène) ni avec le brouillon d'édition – même isolement que le texte de hmi::GameSession::renderHud (LOT-52). | |
| core::LevelDraft | _draft |
| Brouillon en cours d'édition (source de vérité). | |
| hmi::Camera2D | _camera |
| Caméra d'édition (cadre le niveau entier par défaut). | |
| bool | _manualCamera = false |
| true dès que la molette ou un glisser bouton droit a été utilisé : la caméra suit _manualZoom/_manualCenter plutôt que le cadrage automatique, jusqu'à la réinitialisation (0) ou l'ouverture d'un autre niveau. | |
| float | _manualZoom = 1.0f |
| Zoom manuel courant, actif si _manualCamera. | |
| core::Vector2 | _manualCenter {} |
| Centre manuel courant, actif si _manualCamera. | |
| bool | _rightDragging = false |
| Un glisser bouton droit est en cours (pan potentiel). | |
| bool | _cameraPanned = false |
| true dès qu'un glisser bouton droit a dépassé le seuil de mouvement : distingue un pan d'un simple clic droit (retrait d'override, outil « Texture par instance »). | |
| core::Vector2 | _rightDragLastScreen {} |
| Dernière position écran du glisser droit en cours. | |
| core::TileType | _activeTile = core::TileType::Solid |
| Type peint au clic (palette). | |
| std::optional< std::string > | _activeTextureAsset |
| Asset assigné au clic par l'outil « Texture par instance » (LOT-45), vide si aucun n'est sélectionné dans la bibliothèque « Objets ». | |
| std::optional< std::size_t > | _selectedPlane |
| Plan sélectionné dans le panneau « Plans » (LOT-69), si un l'est. | |
| hmi::PlaneVisibility | _planeVisibility |
| Visibilité des plans dans l'éditeur : aide d'édition, jamais persistée ni annulable. | |
| hmi::EditorTool | _tool = hmi::EditorTool::Paint |
| Outil d'édition actif (barre d'outils). | |
| bool | _painting = false |
| Un glisser de peinture (Pinceau) est en cours. | |
| bool | _dragging = false |
| Un glisser Rectangle/Sélection est en cours. | |
| core::GridPosition | _dragStart {} |
| Case de départ du glisser Rectangle/Sélection. | |
| core::GridPosition | _dragCurrent {} |
| Case courante du glisser (pour l'aperçu). | |
| std::optional< core::GridPosition > | _hoverCell |
| Case actuellement survolée (cible du collage) ; absente hors de la grille ou après que le curseur a quitté le viewport (LOT-57 TACHE-01, leaveEvent via event()). | |
| float | _lastEmittedZoom |
| Dernier zoom notifié (zoomChanged), évite l'émission en boucle. | |
| const Localization * | _loc = nullptr |
| Sélection mémorisée (bornes min/max incluses), pour copier (Ctrl+C). | |
| AudioEngine * | _audioEngine = nullptr |
| Moteur audio (LOT-60 TACHE-03), non possédé ; nul = sons de jeu désactivés (EX-NFR-040). | |
| std::optional< std::pair< core::GridPosition, core::GridPosition > > | _selection |
| std::optional< core::GridPosition > | _pendingLink |
| Case du déclencheur/de la cible en attente d'appariement (outil Lien, premier clic). | |
| std::optional< std::pair< core::GridPosition, core::GridPosition > > | _selectedLink |
| Liaison sélectionnée dans le panneau « Liens » (déclencheur, cible) : mise en surbrillance. | |
| std::optional< core::GridPosition > | _highlightedOverride |
| Case sélectionnée dans la section « Objets » du panneau « Textures » (LOT-45) : mise en surbrillance, même voile que l'outil Rectangle/Sélection. | |
| std::vector< std::vector< core::TileType > > | _clipboard |
| Presse-papiers local (types de tuiles, [ligne][colonne]), pour Ctrl+C/Ctrl+V. | |
| bool | _dirty = false |
| Modifications non enregistrées (garde-fou d'ouverture). | |
| bool | _showGrid = true |
| Grille de repère (cases + salles) affichée (bascule F10). | |
| RenderMode | _renderMode = DEFAULT_RENDER_MODE |
| Mode de rendu courant (bascule F8, EX-REN-046), restauré des préférences au démarrage et réécrit à chaque bascule. | |
| LayerVisibility | _layerVisibility |
| Jeu de visibilités par calque du mode d'inspection « définition des textures » (LOT-51) — tout visible par défaut, jamais persisté (TACHE-01), édition uniquement. | |
| bool | _vsync = true |
| Synchronisation verticale demandée (cf. setVSyncEnabled). | |
| bool | _gameMode = false |
| La session courante est une partie (menu Jouer) et non un essai depuis l'éditeur (enchaînement/retour menu). | |
| bool | _paused = false |
| Écran de pause affiché (LOT-59 TACHE-02) : tick() n'avance plus l'accumulateur de pas fixe tant que c'est vrai – le rendu, lui, continue. | |
| std::filesystem::path | _gameMap |
| Carte jouée par le mode jeu (LOT-67 : une, pas une séquence). | |
| std::optional< hmi::GameSession > | _session |
| Session de jeu de l'essai immédiat ; nulle en mode édition (essai ajouté au LOT-35 TACHE-04). | |
Widget de rendu (QRhiWidget) où la scène est dessinée, composé avec le reste de l'interface.
Widget, et non fenêtre native, depuis le LOT-69 TACHE-02 (EX-REN-050). Règle tenue par ce choix : aucun recouvrement de l'IHM ne doit dépendre d'un empilement de fenêtres natives. QRhiWidget rend dans une texture d'appui composée avec les autres widgets, donc l'empilement est celui, ordinaire, de Qt : les recouvrements (pause, fin de niveau) sont de simples enfants, dont la visibilité et le focus suivent les règles habituelles des widgets.
La cible technique ne change pas : QRhi retient Direct3D 11 par défaut sous Windows (EX-REN-002, amendée — au travers de QRhi plutôt qu'en appelant l'API directement).
Mode édition (LOT-35) : affiche le brouillon (core::LevelDraft) via hmi::DraftRenderer, caméra cadrant le niveau entier par défaut. Le clic/glisser gauche peint le type de tuile actif (setActiveTile, fourni par la palette) à la case survolée (core::LevelDraft:: paintTile) ; Ctrl+Z/Ctrl+Y annulent/refont. La molette zoome manuellement (borné entre l'ajustement automatique et 4 cases visibles sur le plus petit axe) et le glisser bouton droit déplace la caméra (« pan ») ; 0 revient au cadrage automatique (LOT-15). Mode essai (LOT-35 TACHE-04) : une hmi::GameSession rejoue le niveau ; sa boucle à pas fixe (core::FixedTimestep) et ses entrées (Qt + XInput) reprennent la discipline du LOT-33.
Implémente hmi::EditContextTarget (LOT-57 TACHE-04) : c'est aujourd'hui l'unique cible d'Annuler/Refaire/Copier/Coller que MainWindow connaisse, au travers de cette interface plutôt que d'un appel direct — le seuil de dispatch que le futur atelier pixel art (LOT-54) réutilisera pour sa propre cible, sans le réécrire.
|
private |
|
explicit |
|
overridedefault |
|
delete |
|
inlinenodiscardnoexcept |
|
private |
Ajoute une zone de caméra couvrant le rectangle (bornes a, b incluses, outil CameraZone, EX-LVL-007, EX-EDIT-029) au cadrage du niveau.
| void hmi::GameViewport::addPlane | ( | core::Plane | plane | ) |
Ajoute plane à la fin de la liste et le sélectionne.
|
private |
Remplit le rectangle (bornes a, b incluses) du type actif (outil Rectangle).
|
inlinenodiscardoverridevirtual |
Implements hmi::EditContextTarget.
|
inlinenodiscardoverridevirtual |
Implements hmi::EditContextTarget.
|
inlinenodiscardoverridevirtual |
Implements hmi::EditContextTarget.
|
inlinenodiscardoverridevirtual |
Implements hmi::EditContextTarget.
|
nodiscardprivate |
Case de grille sous la position écran donnée (pixels physiques), si dans les bornes.
|
nodiscardprivate |
Case de grille sous event, bornée à la grille (jamais hors bornes) — pour les glissers rectangle/sélection dont le curseur peut dépasser légèrement les bords.
|
inlineoverridevirtual |
Copie la sélection courante dans le presse-papiers local (Ctrl+C, EditContextTarget).
Implements hmi::EditContextTarget.
|
private |
Copie la zone sélectionnée dans le presse-papiers local (Ctrl+C).
|
private |
Crée l'atlas, la police, le cache de textures et le pipeline de dessin sur l'interface de rendu courante, puis ouvre le brouillon de départ.
Appelée par initialize.
|
inlinenodiscardnoexcept |
|
inlinenodiscardnoexcept |
|
signal |
Le brouillon vient d'être modifié (peinture, undo/redo, chargement, lien…) — le panneau « Liens » se resynchronise dessus (refresh).
|
inlinenodiscardnoexcept |
Accès modifiable aux touches d'éditeur (pour le remappage, LOT-57 TACHE-04), même principe que gameBindings.
|
overrideprotected |
|
signal |
Demande de retour au menu principal (fin de la séquence de niveaux – plus depuis LOT-59 TACHE-02 sur Échap en mode jeu, qui ouvre désormais la pause via pauseRequested).
|
inlinenodiscardnoexcept |
Accès modifiable aux touches de jeu (pour le remappage) : la session de jeu lit ces mêmes bindings, donc un changement s'applique immédiatement.
|
inlinenodiscardnoexcept |
Accès modifiable aux boutons manette (pour le remappage), même principe que gameBindings.
|
private |
Résout le clic de l'outil Lien (hmi::resolveLinkClick) et l'applique (attente, liaison).
|
private |
Résout le clic de l'outil « Texture par instance » (hmi::resolveTextureAssignClick) et l'applique (assignation/retrait) ; rightClick distingue le clic droit (retrait explicite).
|
nodiscardprivate |
Zone à mettre en surbrillance (glisser en cours, sinon sélection mémorisée), le cas échéant.
|
inlinenodiscardnoexcept |
|
signal |
La case survolée vient de changer (déplacement de souris, ou sortie du viewport) — consommé par la barre d'état (LOT-57 TACHE-01), qui évite ainsi un travail continu inutile en ne recalculant que sur changement réel.
|
overrideprotected |
Crée (ou recrée) les ressources graphiques quand QRhiWidget fournit son interface de rendu, et à chaque fois qu'il en change (EX-NFR-040 : perte de ressources prévue, pas supposée impossible).
| void hmi::GameViewport::invalidateAsset | ( | const std::string & | fileName | ) |
Rechargement à chaud ciblé d'un seul asset (LOT-43 TACHE-03).
Évite de relire toute la bibliothèque à chaque sauvegarde — utilisé par l'atelier pixel art (LOT-54) après chaque enregistrement.
| fileName | Nom logique de l'asset à invalider (relatif à Assets/). |
|
inlinenodiscardnoexcept |
|
overrideprotected |
|
overrideprotected |
|
inlinenodiscardnoexcept |
Jeu de visibilités par calque du mode d'inspection « définition des textures » (LOT-51, EX-EDIT-044) — édition uniquement, jamais lu par hmi::GameSession.
|
nodiscard |
|
nodiscard |
|
nodiscardprivate |
switchPosition, targetPosition) est déjà une liaison du brouillon.
|
private |
Charge _gameMap et arme la session de jeu.
|
private |
Invalide le rendu du brouillon et notifie les panneaux dépendants (draftChanged) — à appeler après toute mutation de _draft (peinture, lien, undo/redo, chargement…).
|
nodiscardprivate |
|
nodiscardprivate |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
| void hmi::GameViewport::movePlane | ( | std::size_t | index, |
| bool | forward ) |
Déplace le plan index d'un rang ; forward le rapproche du dessus de la liste.
| void hmi::GameViewport::openLevel | ( | const std::filesystem::path & | path | ) |
Ouvre un fichier de niveau comme brouillon d'édition (remplace le brouillon courant).
|
delete |
|
private |
Peint le type actif à la case sous event, si valide (invalide la scène rendue).
|
inlineoverridevirtual |
Colle le presse-papiers à la case survolée (Ctrl+V, EditContextTarget).
Implements hmi::EditContextTarget.
|
private |
Colle le presse-papiers à la case survolée (Ctrl+V).
|
signal |
Échap (ou le bouton B manette) en mode jeu réel, hors pause : demande l'ouverture de l'écran de pause (LOT-59 TACHE-02, EX-GP-041) – jamais en essai depuis l'éditeur (stopPlaytest garde son propre chemin, inchangé).
|
noexcept |
Suspend la simulation (écran de pause, LOT-59 TACHE-02) : tick() cesse d'alimenter l'accumulateur de pas fixe – aucun pas n'est consommé pendant la pause (EX-GP-041).
Le rendu continue (la scène reste dessinée derrière l'écran de pause).
|
nodiscardprivate |
|
nodiscardprivate |
|
signal |
La sélection de plan vient de changer par un moyen autre que le panneau (retrait, réordonnancement) — le panneau se resynchronise sans reboucler.
|
inlinenodiscardnoexcept |
|
noexcept |
Abandonne la partie en cours (« Quitter vers le menu » depuis la pause, LOT-59 TACHE-02, après confirmation côté appelant) : même nettoyage que l'ancienne sortie directe par Échap, désormais déclenchée par l'écran de pause plutôt que par la touche elle-même.
|
overridevirtual |
Refait la dernière modification annulée (Ctrl+Y) ; sans effet si rien à refaire.
Implements hmi::EditContextTarget.
|
overrideprotected |
Libère les ressources graphiques quand QRhiWidget défait son interface de rendu.
| void hmi::GameViewport::reloadAssets | ( | ) |
Rechargement à chaud global des assets graphiques (LOT-43 TACHE-03).
Invalide tout le TextureCache et relit skins.json — un asset a pu être modifié, renommé ou ajouté hors de l'application. Ne touche ni au brouillon en cours d'édition ni à son historique d'annulation : c'est une opération de présentation, pas d'édition. L'apparence est résolue à la composition de chaque image (hmi::DraftRenderer), donc l'image suivante suffit à montrer le résultat — aucune reconstruction de scène nécessaire.
| void hmi::GameViewport::removeCameraZone | ( | std::size_t | index | ) |
Retire la zone de caméra au rang index (section « Cadrage », EX-LVL-007, EX-EDIT-029) ; sans effet si hors bornes.
| index | Rang dans core::LevelDraft::cameraFraming().zones. |
| void hmi::GameViewport::removePlane | ( | std::size_t | index | ) |
Retire l'entrée du plan index.
Le fichier n'est pas supprimé : le brouillon annule l'entrée JSON, pas la disparition d'une image — un fichier orphelin est moins grave qu'un travail perdu.
| void hmi::GameViewport::removeTextureOverride | ( | core::GridPosition | position | ) |
Retire l'override de texture de position (bouton « Retirer » de la section « Objets », LOT-45) ; sans effet si position n'en a pas.
| bool hmi::GameViewport::renameOpenLevel | ( | const std::string & | newName | ) |
Renomme le niveau ouvert (action Rename, F2, LOT-57 TACHE-04).
Renomme le fichier existant sur disque (hmi::LevelFileOperations::rename, même chemin que LevelBrowserPanel::onRename) si le niveau a déjà été enregistré au moins une fois ; sinon, seul le nom du brouillon change (rien à renommer sur disque). Sans effet si newName est invalide (hmi::isValidLevelName) ou déjà pris par un autre fichier.
| newName | Nouveau nom, tel que saisi (espaces de bord retirés avant validation). |
|
overrideprotected |
Dessine une image : avance la simulation, compose la scène, puis la soumet.
|
private |
Compose et soumet le compteur de diagnostic (LOT-62 TACHE-02), coin haut-droit de l'écran – sans effet si désactivé, hors session, ou avant que la localisation ne soit chargée (EX-NFR-040, coût nul quand éteint : rien n'est calculé au-delà du test d'entrée).
|
private |
Compose et soumet une image sur commandBuffer.
deltaSeconds : temps réel écoulé depuis l'image précédente (LOT-46 TACHE-05, avance l'aperçu des tuiles animées de l'éditeur).
|
inlinenodiscardnoexcept |
|
signal |
Le mode de rendu vient de basculer (F8) — la palette met ses vignettes à jour pour rester fidèle au canevas (EX-EDIT-027).
|
noexcept |
Réinitialise le cadrage manuel au cadrage automatique (touche 0).
| void hmi::GameViewport::resizeLevel | ( | int | width, |
| int | height ) |
Redimensionne le niveau en cours d'édition (EX-EDIT-005).
|
signal |
Les ressources graphiques et le catalogue de skins viennent d'être (re)créés (QRhiWidget::initialize) — tout ce qui a lu skinCatalog() avant la première initialisation (le câblage de MainWindow, à la construction) l'a lu vide et doit se reconstruire une fois ce signal reçu, sous peine de vignettes/arbre de skins sans texture au lancement de l'éditeur.
Émis à nouveau si QRhiWidget recrée son interface de rendu (le widget a changé de fenêtre de haut niveau) : les textures sont alors perdues avec elle.
| void hmi::GameViewport::resumeSimulation | ( | ) |
Reprend la simulation après pauseSimulation() : réarme l'horloge de référence (_previousFrame) sur l'instant courant, faute de quoi le temps passé en pause serait rattrapé d'un coup au pas suivant (piège documenté par TACHE-02).
| void hmi::GameViewport::save | ( | ) |
Enregistre le brouillon (Ctrl+S) : valide (LevelDraft::toLevel) puis écrit le fichier ; un brouillon invalide n'écrit rien et rapporte l'erreur (statusMessage).
|
nodiscardprivate |
Position écran (pixels physiques) d'un événement souris, convertie par le ratio d'affichage — même conversion que updateMousePosition, réutilisée pour le pan manuel.
|
inlinenodiscardnoexcept |
| void hmi::GameViewport::selectPlane | ( | std::optional< std::size_t > | index | ) |
Sélectionne (ou désélectionne) un plan depuis le panneau.
|
inlinenoexcept |
Définit l'asset assigné au clic par l'outil « Texture par instance » (LOT-45), relié à la sélection de la bibliothèque « Objets » ; vide si aucun asset n'est sélectionné.
|
inlinenoexcept |
Définit le type de tuile peint au clic (relié à la sélection de la palette).
|
inlinenoexcept |
Fournit le moteur audio (LOT-60 TACHE-03) : les événements de jeu détectés par hmi::GameSession (saut, atterrissage, dash, mécanismes, mort, victoire) déclenchent alors un son.
nullptr (défaut) désactive silencieusement les sons de jeu, sans plantage (EX-NFR-040) — état de démarrage légitime avant que MainWindow n'ait construit son moteur. Non possédé : l'appelant (MainWindow) reste propriétaire.
|
noexcept |
Affiche ou masque le compteur de diagnostic.
Même état que toggleDiagnosticsOverlay et que la touche F9 — un seul état, atteint par deux chemins (EX-IHM-062), et non deux réglages qui pourraient diverger.
| void hmi::GameViewport::setHighlightedLink | ( | std::optional< std::pair< core::GridPosition, core::GridPosition > > | link | ) |
Met en surbrillance la liaison (déclencheur, cible) dans le viewport (sélection depuis le panneau « Liens ») ; n'affecte que le rendu, pas le brouillon.
| void hmi::GameViewport::setHighlightedTextureOverride | ( | std::optional< core::GridPosition > | position | ) |
Met en surbrillance une case portant un override (sélection depuis la section « Objets », LOT-45) ; n'affecte que le rendu, pas le brouillon.
Réutilise le même voile que l'outil Rectangle/Sélection (case unique).
|
inlinenoexcept |
Affiche ou masque un calque du mode d'inspection (section « Calques » du panneau « Textures », LOT-51).
Comme setRenderMode, purement visuel : la scène ECS n'est jamais invalidée, seule la résolution d'apparence de l'image suivante en tient compte. Aucune persistance entre deux sessions (TACHE-01) : contrairement à setRenderMode, rien n'est écrit dans les préférences.
| void hmi::GameViewport::setLevelBackground | ( | std::optional< std::string > | background | ) |
Assigne l'asset de fond du niveau courant (section « Fond », LOT-44).
| background | Nom du fichier .png dans Assets/Backgrounds, ou absent pour retirer le fond posé. |
| void hmi::GameViewport::setLevelCameraFraming | ( | core::CameraFramingConfig | cameraFraming | ) |
Change le cadrage de caméra du niveau courant (section « Cadrage », EX-EDIT-028, LOT-64).
| cameraFraming | Nouveau cadrage résolu (mode et, pour par salle, taille de salle). |
| void hmi::GameViewport::setLevelParallaxEnabled | ( | bool | enabled | ) |
Change le drapeau de parallaxe du niveau.
| void hmi::GameViewport::setLevelSkinSet | ( | std::optional< std::string > | skinSet | ) |
Assigne le jeu de skins du niveau courant (section « Fond », LOT-44).
Propriété persistée du niveau (core::LevelDraft::skinSet) : distincte du jeu de skins courant d'édition (setSkinSet, session de l'éditeur, LOT-42) — les deux ne se contaminent jamais l'un l'autre.
| skinSet | Nom du jeu (skins.json), ou absent pour le jeu par défaut. |
|
inlinenoexcept |
Fournit le catalogue de traduction (les messages d'état émis sont alors localisés).
| void hmi::GameViewport::setPlaneDensity | ( | std::size_t | index, |
| int | pixelsPerUnit ) |
Change la densité déclarée du plan index (le rééchantillonnage de l'image est fait par l'appelant, qui possède le fichier).
| void hmi::GameViewport::setPlaneDepth | ( | std::size_t | index, |
| core::PlaneDepth | depth ) |
Change la profondeur du plan index.
| void hmi::GameViewport::setPlaneIsolated | ( | std::size_t | index, |
| bool | isolate ) |
Isole le plan index, ou réaffiche tout si isolate est faux.
| void hmi::GameViewport::setPlaneOpacity | ( | std::size_t | index, |
| float | opacity ) |
Change l'opacité du plan index.
| void hmi::GameViewport::setPlaneParallax | ( | std::size_t | index, |
| float | parallaxX, | ||
| float | parallaxY ) |
Change les facteurs de parallaxe du plan index.
| void hmi::GameViewport::setPlaneVisible | ( | std::size_t | index, |
| bool | visible ) |
Masque ou réaffiche le plan index (aide d'édition).
| void hmi::GameViewport::setRenderMode | ( | RenderMode | mode | ) |
Choisit le mode de rendu et persiste le choix (EX-REN-046, EX-IHM-011).
Purement visuel : ni la simulation, ni la scène ECS, ni le brouillon ne sont touchés — la bascule ne coûte donc pas un pas fixe ni un rechargement de niveau.
| mode | Mode à appliquer. |
| void hmi::GameViewport::setSkinSet | ( | const std::string & | setName | ) |
Désigne le jeu de skins à utiliser pour le rendu (LOT-42).
| setName | Nom du jeu ; vide pour le jeu par défaut du catalogue. |
| void hmi::GameViewport::setTool | ( | hmi::EditorTool | tool | ) |
Définit l'outil d'édition actif (pinceau, rectangle, sélection, lien, texture par instance).
Émet toolChanged si l'outil change réellement, pour que la barre d'outils reste synchronisée quand le changement vient d'ailleurs qu'un clic sur son panneau — le raccourci clavier de l'outil « Texture par instance » (LOT-45), aujourd'hui seul cas.
|
noexcept |
Active/désactive la synchronisation verticale (EX-REN-022).
Depuis le portage QRhi, la présentation appartient au compositeur de Qt : le réglage est conservé et rapporté, mais c'est Qt qui cale l'image sur le rafraîchissement.
|
inlinenoexcept |
Rétablit la visibilité de tous les calques (action « tout afficher », TACHE-03).
|
inlinenodiscardnoexcept |
|
inlinenodiscardnoexcept |
Catalogue des jeux de skins, édité par le panneau « Textures » (LOT-42).
Le viewport en reste propriétaire : le panneau agit dessus, et le rendu voit les mêmes assignations à l'image suivante, sans reconstruire la scène.
| void hmi::GameViewport::startGame | ( | std::filesystem::path | map | ) |
Lance le jeu sur la carte map.
Échap ouvre la pause, dont « Quitter vers le menu » émet exitToMenuRequested.
Une carte, et non plus une séquence (LOT-67). Le jeu visé est un bac à sable : il n'a ni ordre de tableaux, ni tableau suivant. L'enchaînement d'une carte à l'autre reviendra avec le graphe de cartes du LOT-09, et il sera déclenché par une transition placée dans le monde, pas par la fin d'une liste.
| void hmi::GameViewport::startPlaytest | ( | ) |
Lance l'essai immédiat (P) sur un brouillon valide ; message d'erreur sinon.
|
signal |
Message d'état à afficher (enregistrement, essai, erreur de validation…).
|
nodiscardprivate |
Texte localisé d'une clé de statut (repli sur la clé si aucun catalogue).
|
private |
Termine l'essai et restitue l'éditeur (brouillon intact).
|
private |
Avance la simulation d'une image (entrées, pas fixes, sons) — sans rien dessiner.
|
noexcept |
Bascule le compteur de diagnostic (cadence, primitives, passes, pas de simulation ; F9, LOT-62 TACHE-02, EX-NFR-001/EX-NFR-005).
Touche dédiée non remappable, même statut que F8 (toggleRenderMode) : désactivé par défaut, sans effet sur la simulation (EX-ARCH-012). La fenêtre de mesure de cadence repart de zéro à chaque activation (hmi::FrameRateAverage::reset) plutôt que de mélanger un temps accumulé pendant que rien n'était mesuré.
|
noexcept |
Bascule l'affichage de la grille de repère (F10).
| void hmi::GameViewport::toggleRenderMode | ( | ) |
Bascule le mode de rendu Physique/Texture (F8, EX-REN-046) ; actif en édition, en essai et en jeu réel (LOT-56 TACHE-04 : seule commande jamais désactivée par le mode courant).
|
signal |
L'outil actif vient de changer par un moyen autre que le panneau Outils (raccourci clavier, LOT-45) — le panneau se resynchronise sans reboucler.
|
overridevirtual |
Annule la dernière modification du brouillon (Ctrl+Z) ; sans effet si rien à annuler.
Implements hmi::EditContextTarget.
| void hmi::GameViewport::unlinkMechanism | ( | core::GridPosition | targetPosition | ) |
Supprime la liaison dont la cible est targetPosition (bouton « Supprimer » du panneau « Liens ») ; sans effet si targetPosition n'a pas de liaison.
|
private |
Recale la caméra d'édition : cadrage automatique sur le niveau entier, sauf pan/zoom manuel actif (molette/glisser bouton droit), auquel cas la caméra manuelle est réappliquée.
|
private |
|
inlinenodiscardnoexcept |
|
overrideprotected |
|
nodiscardprivate |
Convertit la position écran d'un événement souris en position monde, non calée sur la grille (EX-DEC-001) — contrairement à cellAt/clampedCell, utilisées par les autres outils.
|
nodiscard |
width, height) supprimerait du contenu posé.
|
inlinenodiscardnoexcept |
|
signal |
Le zoom d'édition vient de changer (molette, pan, recadrage) — consommé par la barre d'état (LOT-57 TACHE-01).
|
private |
Asset assigné au clic par l'outil « Texture par instance » (LOT-45), vide si aucun n'est sélectionné dans la bibliothèque « Objets ».
|
private |
Type peint au clic (palette).
|
private |
Moteur audio (LOT-60 TACHE-03), non possédé ; nul = sons de jeu désactivés (EX-NFR-040).
|
private |
Caméra d'édition (cadre le niveau entier par défaut).
|
private |
true dès qu'un glisser bouton droit a dépassé le seuil de mouvement : distingue un pan d'un simple clic droit (retrait d'override, outil « Texture par instance »).
|
private |
Presse-papiers local (types de tuiles, [ligne][colonne]), pour Ctrl+C/Ctrl+V.
|
private |
Compteur de diagnostic (F9, LOT-62 TACHE-02) : désactivé par défaut (EX-NFR-040, point de départ sans effet visuel ni coût).
Bilan du tableau en cours (LOT-68) : alimenté au PAS, jamais à l'image de rendu.
|
private |
Scène dédiée du compteur de diagnostic, jamais partagée avec _session (dont le HUD de jeu vit dans sa propre scène) ni avec le brouillon d'édition – même isolement que le texte de hmi::GameSession::renderHud (LOT-52).
|
private |
Modifications non enregistrées (garde-fou d'ouverture).
|
private |
Brouillon en cours d'édition (source de vérité).
|
private |
|
private |
Case courante du glisser (pour l'aperçu).
|
private |
Un glisser Rectangle/Sélection est en cours.
|
private |
Case de départ du glisser Rectangle/Sélection.
|
private |
Raccourcis d'éditeur remappables (LOT-45).
|
private |
Moyenne glissante de la cadence de rendu, alimentée uniquement quand _diagnosticsEnabled est vrai (rien n'est calculé quand l'affichage est éteint).
|
private |
|
private |
Carte jouée par le mode jeu (LOT-67 : une, pas une séquence).
|
private |
La session courante est une partie (menu Jouer) et non un essai depuis l'éditeur (enchaînement/retour menu).
|
private |
|
private |
|
private |
Case sélectionnée dans la section « Objets » du panneau « Textures » (LOT-45) : mise en surbrillance, même voile que l'outil Rectangle/Sélection.
|
private |
Case actuellement survolée (cible du collage) ; absente hors de la grille ou après que le curseur a quitté le viewport (LOT-57 TACHE-01, leaveEvent via event()).
|
private |
|
private |
Dernier zoom notifié (zoomChanged), évite l'émission en boucle.
|
private |
Nombre de pas de simulation consommés au dernier tick() – distinct de la cadence de rendu depuis le LOT-33 (hmi::DiagnosticsMeasurements::simulationSteps).
|
private |
Jeu de visibilités par calque du mode d'inspection « définition des textures » (LOT-51) — tout visible par défaut, jamais persisté (TACHE-01), édition uniquement.
|
private |
Sélection mémorisée (bornes min/max incluses), pour copier (Ctrl+C).
Catalogue pour localiser les messages d'état.
|
private |
|
private |
true dès que la molette ou un glisser bouton droit a été utilisé : la caméra suit _manualZoom/_manualCenter plutôt que le cadrage automatique, jusqu'à la réinitialisation (0) ou l'ouverture d'un autre niveau.
Restaure le pan/zoom manuel de l'éditeur historique (EditorScreen, LOT-15), perdu lors de la réécriture Direct3D11/Qt.
|
private |
Centre manuel courant, actif si _manualCamera.
|
private |
Zoom manuel courant, actif si _manualCamera.
|
private |
Un glisser de peinture (Pinceau) est en cours.
|
private |
Écran de pause affiché (LOT-59 TACHE-02) : tick() n'avance plus l'accumulateur de pas fixe tant que c'est vrai – le rendu, lui, continue.
|
private |
Case du déclencheur/de la cible en attente d'appariement (outil Lien, premier clic).
|
private |
Visibilité des plans dans l'éditeur : aide d'édition, jamais persistée ni annulable.
|
private |
|
private |
Mode de rendu courant (bascule F8, EX-REN-046), restauré des préférences au démarrage et réécrit à chaque bascule.
Porté par le viewport parce qu'il est le widget unique derrière l'édition, l'essai et le jeu réel (EX-IHM-002) : un seul état, jamais dupliqué.
|
private |
Un glisser bouton droit est en cours (pan potentiel).
|
private |
Dernière position écran du glisser droit en cours.
|
private |
Lot de sprites, atlas, police, textures et skins — communs au viewport de l'éditeur et à l'élément Qt Quick du jeu (LOT-86).
Regroupés parce que leur ORDRE de libération est une contrainte, pas une préférence : voir hmi::SceneResources.
|
private |
Liaison sélectionnée dans le panneau « Liens » (déclencheur, cible) : mise en surbrillance.
|
private |
Plan sélectionné dans le panneau « Plans » (LOT-69), si un l'est.
|
private |
|
private |
Session de jeu de l'essai immédiat ; nulle en mode édition (essai ajouté au LOT-35 TACHE-04).
|
private |
Grille de repère (cases + salles) affichée (bascule F10).
|
private |
Jeu de skins courant ; vide pour le jeu par défaut du catalogue.
|
private |
|
private |
Outil d'édition actif (barre d'outils).
|
private |
Synchronisation verticale demandée (cf. setVSyncEnabled).