feat(ui): implant app hierarchy in HudGroups (D-170)
Implant apps use hierarchical groups: implant/map, implant/wiki, implant/journal, etc. Apps are mutually exclusive with each other and with gameplay. Opening implant/map hides gameplay + any other implant app. Closing returns to gameplay. API: open_app(), close_app(), toggle_app(), is_app_active(). Star map uses implant/map. Future apps register their own group. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -626,13 +626,18 @@ Technical foundation decisions that constrain implementation: engine, client-ser
|
||||
- **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:**
|
||||
- **Groups (hierarchical):**
|
||||
- `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.
|
||||
- `implant/map` — star map navigator. Mutually exclusive with gameplay and other implant apps.
|
||||
- `implant/wiki` — GTTR reader. Mutually exclusive with gameplay and other implant apps.
|
||||
- `implant/journal` — knowledge journal. Mutually exclusive with gameplay and other implant apps.
|
||||
- `implant/travel` — travel planner. Mutually exclusive with gameplay and other implant apps.
|
||||
- `implant/station` — station profile. Mutually exclusive with gameplay and other implant apps.
|
||||
- `implant/cargo` — cargo manifest. Mutually exclusive with gameplay and other implant apps.
|
||||
- `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")`
|
||||
- **Exclusivity rules:** Opening any `implant/*` app hides gameplay and any other implant app. Closing an app returns to gameplay. Modal and debug are independent layers.
|
||||
- **API:** `HudGroups.register(node, "implant/map")`, `HudGroups.open_app("implant/map")`, `HudGroups.close_app()`, `HudGroups.toggle_app("implant/map")`, `HudGroups.is_app_active("implant/map")`, `HudGroups.is_implant_active()`
|
||||
- **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.
|
||||
|
||||
Reference in New Issue
Block a user