using Godot; namespace Cirno.Scripts.Misc; public partial class DialogueAutoStarter : Node2D { [Export] private StringName _trackName = "timeline"; [Export] private StringName _finishedScenePath; private Node _dialogic; public override void _Ready() { base._Ready(); _dialogic = GetNode("/root/Dialogic"); _dialogic.ProcessMode = ProcessModeEnum.Always; CallDeferred(MethodName.Activate); } private void OnTimelineEnded() { if (_dialogic.IsConnected("timeline_ended", Callable.From(OnTimelineEnded))) { _dialogic.Disconnect("timeline_ended", Callable.From(OnTimelineEnded)); } DialogueEndAction(); } public bool Activate() { if (GlobalState.Instance.SessionSettings.SkipDialogues) { DialogueEndAction(); return true; } _dialogic.Connect("timeline_ended", Callable.From(OnTimelineEnded)); var dialogicNode = _dialogic.Call("start", _trackName.ToString()); ((Node)dialogicNode).ProcessMode = ProcessModeEnum.Always; return true; } private void DialogueEndAction() { GlobalState.Instance.GotoScene(_finishedScenePath); } }