feat(ui): economics monitor insert panel with placeholder data (#824)

New implant panel at implant/economics: system selector, 6-commodity
price table with trend indicators, GDP strip. Composed from D-169
component library. Ring buffer caches last 20 ticks per system.
Snapshot routing wired through snapshot_handler → GameState →
snapshot_consumers → economics_panel. Placeholder prices shown
until server ships EconomySnapshot (#822).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-10 13:22:20 +02:00
co-authored by Claude Opus 4.6
parent 766da969de
commit 949d721eac
8 changed files with 387 additions and 2 deletions
+7 -1
View File
@@ -9,7 +9,6 @@ var _pending_record_inputs: Array = [] # #507: accumulates server-bound inputs
var _router: SnapshotEventRouter # #559: callable-based snapshot dispatch
var _consumers: SnapshotConsumers # #775: non-dialogue snapshot consumers
var _dialogue: DialogueCoordinator # #775: dialogue consumers + signal handlers
@onready var world_renderer = $World
@onready var fog_entities = $World/FogEntities # D-059/D-060: cognitive delay fog visualization
@onready var camera = $Camera2D
@@ -34,6 +33,7 @@ var _dialogue: DialogueCoordinator # #775: dialogue consumers + signal handlers
@onready var debug_console = $ModalLayer/DebugConsole # #581: tilde debug console
@onready var news_ticker = $UILayer/NewsTicker # #592: scrolling headline bar (D-049 z-7)
@onready var star_map = $InsertOverlay/HUD/StarMap # #674: star map insert module (hop-ring view)
@onready var economics_panel = $InsertOverlay/HUD/EconomicsPanel # #824: economics monitor (D-170)
func _ready() -> void:
@@ -92,6 +92,7 @@ func _ready() -> void:
"interaction_prompt": interaction_prompt,
"minimap": minimap,
"star_map": star_map,
"economics_panel": economics_panel,
},
_screen_flash
)
@@ -154,6 +155,7 @@ func _ready() -> void:
_router.register("dialogue_response", _dialogue.consume_dialogue_response)
_router.register("save_result", _consumers.consume_save_result)
_router.register("debug_response", _consumers.consume_debug_response)
_router.register("economy_snapshot", _consumers.consume_economy_snapshot)
# #581: Wire settings_dialog debug console toggle
if settings_dialog and debug_console:
@@ -170,6 +172,10 @@ func _unhandled_key_input(event: InputEvent) -> void:
if event is InputEventKey and event.keycode == KEY_M:
if star_map:
star_map.toggle_visible()
elif event is InputEventKey and event.keycode == KEY_E:
# #824: E — toggle Economics Monitor implant panel
if economics_panel:
economics_panel.toggle_visible()
func _process(delta: float) -> void: