feat(ui): unify star map and atlas into single implant/map chain (#844)

Per D-191, the atlas is the star map extended downward — not a separate
app. AtlasPanel now owns the full Reach → system → planet → heightmap
zoom hierarchy as a single HudGroups app (implant/map).

- Add REACH_MAP as Level 0 of AtlasPanel's zoom hierarchy; renumber the
  enum so higher index = deeper zoom
- Port hop-ring rendering (pan/zoom, system markers, hover/info, sector
  layout) from star_map.gd into AtlasPanel methods
- Change AtlasPanel.APP_PATH from "implant/map/atlas" to "implant/map"
- main.gd: KEY_M toggles unified atlas; KEY_A binding removed
- Symmetric nav: ORBITAL_DIAGRAM back goes to REACH_MAP (not
  SYSTEM_PICKER), matching the forward skip
- hud_groups.gd docstring documents the unified path and flags the
  legacy starchart path as kept-for-compat (retirement tracked in #852)

star_map.gd's HudGroups registration stays live but inert — no key
binding reaches it. Full retirement follows in #852 after a sprint of
soak on the unified panel.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-19 11:52:15 +02:00
co-authored by Claude Opus 4.6
parent 25bb54bc43
commit a06646d810
4 changed files with 484 additions and 26 deletions
+6 -5
View File
@@ -11,17 +11,18 @@ extends Node
##
## Groups use hierarchical paths:
## "gameplay" — HUD status, minimap, prompts, stance
## "implant/map/starchart" — star map navigator
## "implant/map" — unified atlas (reach map → system → planet → regional, D-191)
## "implant/map/starchart" — legacy hop-ring view (registered by StarMapRenderer, kept for compat)
## "implant/wiki/gttr" — Drifter's Guide reader
## "implant/journal" — knowledge journal
## "implant/economics" — economics monitor (D-181, #824)
##
## Usage:
## HudGroups.register(self, "implant/map/starchart")
## HudGroups.open_app("implant/map/starchart") # fullscreen by default
## HudGroups.open_app("implant/map/starchart", HudGroups.MODE_INSERT)
## HudGroups.register(self, "implant/map")
## HudGroups.open_app("implant/map") # fullscreen by default
## HudGroups.open_app("implant/map", HudGroups.MODE_INSERT)
## HudGroups.close_app()
## HudGroups.toggle_app("implant/map/starchart")
## HudGroups.toggle_app("implant/map")
## Emitted when an app opens, closes, or changes mode.
## mode is a HudGroups.Mode enum value.