using Godot; using Godot.Collections; namespace Cirno.Scripts.Activables; public partial class DialogueStarter : ChainActivable { [Export] private string _trackName = "timeline"; //[Export] private Array _dialogueEndActivationTargets; private Node _dialogic; private GameManager _gameManager; public override void _Ready() { base._Ready(); _gameManager = this.GetGameManager(); _dialogic = GetNode("/root/Dialogic"); } private void OnTimelineEnded() { if (_dialogic.IsConnected("timeline_ended", Callable.From(OnTimelineEnded))) { _dialogic.Disconnect("timeline_ended", Callable.From(OnTimelineEnded)); } DialogueEndAction(); } public override void Activate(ActivationType activationType = ActivationType.Toggle) { _gameManager.ChangeState(GameState.Dialogue); _dialogic.Connect("timeline_ended", Callable.From(OnTimelineEnded)); _dialogic.Call("start", _trackName); // Script dialogic = ResourceLoader.Load("res://addons/dialogic/Other/DialogicClass.gd") as Script; // var dialog = (Node) dialogic.Call("start","timeline"); // AddChild(dialog); //if (Dialogic) } private void DialogueEndAction() { _gameManager.ChangeState(GameState.Playing); ActivateTargets(); // foreach (var activationTarget in _dialogueEndActivationTargets) // { // ActivateTarget(activationTarget); // } } // private bool ActivateTarget(Node2D activationTarget) // { // if (activationTarget is not IActivable target) // { // GD.PrintErr($"Target {activationTarget.Name} is not activable"); // return false; // } // // target?.Activate(); // // GD.Print($"{activationTarget.Name} activated"); // // return true; // } }