35 lines
1.1 KiB
GDScript
35 lines
1.1 KiB
GDScript
extends "res://addons/escoria-dialog-simple/patterns/state_machine/state.gd"
|
|
|
|
|
|
# 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 'visible'.")
|
|
|
|
if not _dialog_manager.is_connected("say_finished", self, "_on_say_finished"):
|
|
_dialog_manager.connect("say_finished", self, "_on_say_finished")
|
|
|
|
|
|
func handle_input(_event):
|
|
if _event is InputEventMouseButton and _event.pressed:
|
|
if escoria.inputs_manager.input_mode != \
|
|
escoria.inputs_manager.INPUT_NONE:
|
|
|
|
if _dialog_manager.is_connected("say_finished", self, "_on_say_finished"):
|
|
_dialog_manager.disconnect("say_finished", self, "_on_say_finished")
|
|
|
|
emit_signal("finished", "interrupt")
|
|
get_tree().set_input_as_handled()
|
|
|
|
|
|
# Handles the end of a say function after it has emitted say_finished.
|
|
func _on_say_finished():
|
|
escoria.logger.trace(self, "Dialog State Machine: 'visible' -> 'finish'")
|
|
emit_signal("finished", "finish")
|