feat(ui): HUD visibility groups — gameplay vs implant layers (D-170)

New HudGroups autoload manages show/hide of related HUD elements as
groups. Exclusive groups (gameplay, implant) are mutually exclusive —
opening the star map hides stance indicator, minimap, interaction
prompts, etc. Closing it restores them.

Gameplay nodes registered in main.gd _ready(). Star map registers as
implant group and uses toggle_group() instead of direct visibility.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-05 11:01:28 +02:00
co-authored by Claude Opus 4.6
parent 44cc8cda4c
commit f037bcaa81
5 changed files with 120 additions and 2 deletions
+17
View File
@@ -622,4 +622,21 @@ Technical foundation decisions that constrain implementation: engine, client-ser
---
### D-170: HUD visibility groups — gameplay vs implant layers
- **Date:** 2026-04-05
- **Decision:** HUD elements register into named visibility groups via a `HudGroups` autoload. Groups control show/hide of related elements as a unit. Exclusive groups (gameplay, implant) are mutually exclusive — showing one hides the other. Non-exclusive groups (modal, debug) overlay independently.
- **Rationale:** Full-screen implant panels (star map, travel planner, GTTR reader) need to hide gameplay HUD elements (stance, minimap, health, interaction prompts). Without groups, each panel manually hides/shows individual nodes — error-prone and unsustainable as the panel count grows.
- **Groups:**
- `gameplay` — stance indicator, minimap, HUD status, interaction prompts, cursor, inventory, news ticker, examine display. Visible during normal gameplay.
- `implant` — star map, travel planner, GTTR reader, station profile. Fullscreen implant overlays. Showing this hides gameplay.
- `modal` — settings, bug report, loading screen, debug console. Independent — overlays on top of anything.
- `debug` — debug overlay, gauntlet HUD, checklist. Independent.
- `always` — reserved for elements that never hide.
- **API:** `HudGroups.register(node, "gameplay")`, `HudGroups.show_group("implant")`, `HudGroups.toggle_group("implant")`, `HudGroups.is_group_active("implant")`
- **Implementation:** `client/scripts/autoloads/hud_groups.gd` — lightweight autoload, no scene tree manipulation beyond `node.visible`.
- **Raised by:** Jeroen, 2026-04-05 — "Walk" badge visible over fullscreen star map.
- **Dissent:** None.
---
*50 decisions. Last updated: 2026-03-24 (D-101 partial supersession noted; D-166 development cascade added)*