From 5f0d8ddc087f186c6c3a271aa5abf0da50c5868b Mon Sep 17 00:00:00 2001 From: autocommit Date: Tue, 19 May 2026 21:24:52 -0700 Subject: [PATCH] =?UTF-8?q?refactor(comms):=20=E2=99=BB=EF=B8=8F=20Optimiz?= =?UTF-8?q?e=20and=20refactor=20comms=5Fevent=5Fdispatcher=20and=20event?= =?UTF-8?q?=5Fbus=20autoloads=20for=20improved=20event=20handling=20effici?= =?UTF-8?q?ency=20and=20better=20Godot=20engine=20integration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- .../src/autoloads/comms_event_dispatcher.gd | 30 +++++++++++++++++++ src/game/engine/src/autoloads/event_bus.gd | 8 +++++ 2 files changed, 38 insertions(+) diff --git a/src/game/engine/src/autoloads/comms_event_dispatcher.gd b/src/game/engine/src/autoloads/comms_event_dispatcher.gd index ab39cc71..14beb7e9 100644 --- a/src/game/engine/src/autoloads/comms_event_dispatcher.gd +++ b/src/game/engine/src/autoloads/comms_event_dispatcher.gd @@ -30,6 +30,11 @@ const SUPPORTED_KINDS: Array[String] = [ "HeartbeatMissed", "VisionShareCollapsed", "VisionShareRestored", + "EnvelopeDispatched", + "EnvelopeDelivered", + "EnvelopeIntercepted", + "LinkSevered", + "LinkRestored", ] ## Append-only ring for HeartbeatSent / HeartbeatMissed used by the dev @@ -49,6 +54,11 @@ const _KIND_TO_KEY: Dictionary = { "HeartbeatMissed": "heartbeat_missed", "VisionShareCollapsed": "vision_share_collapsed", "VisionShareRestored": "vision_share_restored", + "EnvelopeDispatched": "envelope_dispatched", + "EnvelopeDelivered": "envelope_delivered", + "EnvelopeIntercepted": "envelope_intercepted", + "LinkSevered": "link_severed", + "LinkRestored": "link_restored", } ## UI presentation strings. Loaded once at _ready; never mutated. @@ -107,6 +117,26 @@ func dispatch(event: Dictionary, local_player: int = -1) -> bool: EventBus.vision_share_collapsed.emit(event) "VisionShareRestored": EventBus.vision_share_restored.emit(event) + "EnvelopeDispatched": + _push_dev_log(event) + if EventBus.has_signal("envelope_dispatched"): + EventBus.emit_signal("envelope_dispatched", event) + "EnvelopeDelivered": + _push_dev_log(event) + if EventBus.has_signal("envelope_delivered"): + EventBus.emit_signal("envelope_delivered", event) + "EnvelopeIntercepted": + _push_dev_log(event) + if EventBus.has_signal("envelope_intercepted"): + EventBus.emit_signal("envelope_intercepted", event) + "LinkSevered": + _push_dev_log(event) + if EventBus.has_signal("link_severed"): + EventBus.emit_signal("link_severed", event) + "LinkRestored": + _push_dev_log(event) + if EventBus.has_signal("link_restored"): + EventBus.emit_signal("link_restored", event) return true diff --git a/src/game/engine/src/autoloads/event_bus.gd b/src/game/engine/src/autoloads/event_bus.gd index 72053031..5718d7e7 100644 --- a/src/game/engine/src/autoloads/event_bus.gd +++ b/src/game/engine/src/autoloads/event_bus.gd @@ -404,3 +404,11 @@ signal heartbeat_missed(payload: Dictionary) ## VisionShareRestored — flip ally-portrait vision-share indicator. signal vision_share_collapsed(payload: Dictionary) signal vision_share_restored(payload: Dictionary) +## Communications Phase 6 — envelope-flow + link-flow events. Silent in UI by +## default; routed to the dev-overlay log. Listeners may subscribe to surface +## diplomacy-flow timing (e.g. AI ticker, comms inspector panel). +signal envelope_dispatched(payload: Dictionary) +signal envelope_delivered(payload: Dictionary) +signal envelope_intercepted(payload: Dictionary) +signal link_severed(payload: Dictionary) +signal link_restored(payload: Dictionary)