From 4065b5c83e55bc7820a5195eeb984686ab323f22 Mon Sep 17 00:00:00 2001 From: Duncan Brown Date: Sun, 30 Oct 2022 21:38:15 -0400 Subject: [PATCH] feat: includes most-currently run statement when signalling a statement's/event's completion to aid in debugging messages --- .../game/core-scripts/esc/esc_event_manager.gd | 8 +++++--- .../game/core-scripts/esc/types/esc_statement.gd | 6 +++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/addons/escoria-core/game/core-scripts/esc/esc_event_manager.gd b/addons/escoria-core/game/core-scripts/esc/esc_event_manager.gd index 66abe9ae..979e654d 100644 --- a/addons/escoria-core/game/core-scripts/esc/esc_event_manager.gd +++ b/addons/escoria-core/game/core-scripts/esc/esc_event_manager.gd @@ -372,16 +372,18 @@ func set_changing_scene(p_is_changing_scene: bool) -> void: # The event finished running # # #### Parameters -# - finished_statement: statement object that finished +# - finished_event: statement object representing the event that finished +# - finished_statement: statement object representing the "deepest" statement (most likely a command) +# that just completed; this is useful for interrupted or failed statements especially # - return_code: Return code of the finished event # - channel_name: Name of the channel that the event came from -func _on_event_finished(finished_statement: ESCStatement, return_code: int, channel_name: String) -> void: +func _on_event_finished(finished_event: ESCStatement, finished_statement: ESCStatement, return_code: int, channel_name: String) -> void: var event = _running_events[channel_name] if not event: escoria.logger.warn( self, "Event '%s' finished without being in _running_events[%s]." - % [finished_statement.name, channel_name] + % [finished_event.name, channel_name] ) return diff --git a/addons/escoria-core/game/core-scripts/esc/types/esc_statement.gd b/addons/escoria-core/game/core-scripts/esc/types/esc_statement.gd index c4f2db2d..465629d5 100644 --- a/addons/escoria-core/game/core-scripts/esc/types/esc_statement.gd +++ b/addons/escoria-core/game/core-scripts/esc/types/esc_statement.gd @@ -31,7 +31,11 @@ func is_valid() -> bool: # Execute this statement and return its return code func run() -> int: var final_rc = ESCExecution.RC_OK + var current_statement: ESCStatement + for statement in statements: + current_statement = statement + if _is_interrupted: final_rc = ESCExecution.RC_INTERRUPTED statement.interrupt() @@ -52,7 +56,7 @@ func run() -> int: final_rc = rc break - emit_signal("finished", self, final_rc) + emit_signal("finished", self, current_statement, final_rc) return final_rc