
jpmschweitzerandClaude Sonnet 4.6
df29d26d1e
feat(ui): introduce ImplantApp pattern — base class, registry, atlas + economics refactor (#844, #824, #836)
Establishes the ImplantApp faux-mobile-OS architecture (D-191):
Foundation:
- ImplantAppManifest (Resource): @export vars for app_path, scene_path, default_key, default_mode, preserves_state
- ImplantNavStack (Node): push/pop/replace/reset_to_default, synchronous screen_changed signal
- ImplantApp (Control base class): absorbs HudGroups boilerplate; on_install/on_open/on_close/on_insert_deactivated lifecycle hooks
- ImplantRegistry (autoload): lazy-scans res://ui/implant/apps/*/app.tres; avoids autoload parse-order trap
Atlas app (replaces atlas_panel + atlas_reach_map + atlas_system_map + atlas_planet_map + root viewer files):
- apps/atlas/app.tres — manifest (implant/map, FULLSCREEN, key=M)
- apps/atlas/atlas_app.gd — coordinator; 4-screen nav via ImplantNavStack
- apps/atlas/screens/{reach,system,planet,regional}_screen.gd — enter/leave interface
- apps/atlas/{atlas_viewer,atlas_marker_overlay,atlas_overlay_bar}.gd — moved from root
Economics app (replaces economics_panel):
- apps/economics/app.tres — manifest (implant/economics, INSERT, key=N)
- apps/economics/economics_app.gd — thin shell delegating to OverviewScreen
- apps/economics/screens/overview_screen.gd — full panel logic, enter/leave interface
Wiring:
- project.godot: add ImplantRegistry autoload after HudGroups
- main.gd: registry-driven key toggle loop; rename atlas_panel→atlas_app, economics_panel→economics_app
- hud.tscn: swap to new scene paths; remove legacy StarMap node
- snapshot_consumers.gd: on_insert_deactivated() uniformly; rename vars
- hud_groups.gd: remove stale starchart compat comment
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 13:16:56 +02:00
..
2026-04-19 13:16:56 +02:00
2026-02-11 16:52:27 +01:00
2026-04-05 11:09:10 +02:00
2026-02-18 11:51:41 +01:00
2026-02-18 10:53:15 +01:00
2026-04-05 11:09:10 +02:00
2026-03-05 11:44:05 +01:00
2026-04-05 11:09:10 +02:00
2026-02-21 13:43:43 +01:00
2026-02-18 12:53:35 +01:00
2026-02-15 23:06:03 +01:00
2026-04-10 23:00:40 +02:00
2026-03-04 09:50:23 +01:00
2026-03-04 09:50:23 +01:00
2026-04-06 12:51:48 +02:00
2026-02-27 11:07:10 +01:00
2026-04-05 11:09:10 +02:00
2026-02-18 11:51:41 +01:00
2026-02-20 20:51:40 +01:00
2026-04-05 11:09:10 +02:00
2026-02-28 12:20:02 +01:00
2026-02-25 02:29:55 +01:00
2026-04-05 11:09:10 +02:00
2026-02-18 11:51:41 +01:00
2026-04-06 16:41:27 +02:00
2026-04-05 11:09:10 +02:00
2026-03-13 10:34:48 +01:00
2026-04-06 15:45:47 +02:00
2026-02-11 16:52:27 +01:00
2026-04-19 13:16:56 +02:00
2026-04-05 11:09:10 +02:00
2026-02-18 11:51:41 +01:00
2026-02-15 23:06:03 +01:00
2026-04-06 12:51:58 +02:00
2026-02-12 23:43:37 +01:00
2026-04-06 12:51:58 +02:00
2026-04-05 11:09:10 +02:00
2026-02-18 11:51:41 +01:00
2026-02-15 23:06:03 +01:00
2026-04-05 11:09:10 +02:00
2026-02-28 12:20:02 +01:00
2026-02-25 02:30:04 +01:00
2026-04-19 11:54:07 +02:00
2026-02-27 11:07:10 +01:00
2026-02-27 11:07:10 +01:00
2026-04-05 11:09:10 +02:00
2026-02-28 12:20:02 +01:00
2026-04-06 15:45:47 +02:00
2026-02-11 16:52:27 +01:00
2026-02-25 02:29:46 +01:00
2026-04-05 11:09:10 +02:00
2026-02-11 16:52:27 +01:00
2026-02-20 19:06:26 +01:00
2026-04-05 09:59:56 +02:00
2026-03-05 11:44:05 +01:00
2026-03-05 11:44:05 +01:00
2026-04-05 11:09:10 +02:00
2026-02-21 13:43:43 +01:00
2026-02-19 18:19:25 +01:00
2026-04-10 23:00:40 +02:00
2026-02-18 11:51:41 +01:00
2026-04-06 16:41:27 +02:00
2026-04-10 14:03:49 +02:00
2026-04-04 23:34:36 +02:00
2026-04-05 11:09:10 +02:00
2026-02-28 12:20:02 +01:00
2026-02-24 11:30:24 +01:00
2026-04-10 23:51:17 +02:00
2026-02-18 11:51:41 +01:00
2026-02-21 13:43:18 +01:00