summaryrefslogtreecommitdiff
path: root/addons/escoria-dialog-simple/states/dialog_interrupt.gd
diff options
context:
space:
mode:
Diffstat (limited to 'addons/escoria-dialog-simple/states/dialog_interrupt.gd')
-rw-r--r--addons/escoria-dialog-simple/states/dialog_interrupt.gd24
1 files changed, 24 insertions, 0 deletions
diff --git a/addons/escoria-dialog-simple/states/dialog_interrupt.gd b/addons/escoria-dialog-simple/states/dialog_interrupt.gd
new file mode 100644
index 0000000..83fb707
--- /dev/null
+++ b/addons/escoria-dialog-simple/states/dialog_interrupt.gd
@@ -0,0 +1,24 @@
+extends State
+
+
+# Reference to the currently playing dialog manager
+var _dialog_manager: ESCDialogManager = null
+
+
+func initialize(dialog_manager: ESCDialogManager) -> void:
+ _dialog_manager = dialog_manager
+
+
+func enter():
+ escoria.logger.trace(self, "Dialog State Machine: Entered 'interrupt'.")
+
+ if _dialog_manager != null:
+ if not _dialog_manager.say_finished.is_connected(_on_say_finished):
+ _dialog_manager.say_finished.connect(_on_say_finished)
+
+ _dialog_manager.interrupt()
+
+
+func _on_say_finished() -> void:
+ escoria.logger.trace(self, "Dialog State Machine: 'interrupt' -> 'finish'")
+ finished.emit("finish")