using Godot; namespace Babushka.scripts.CSharp.Common.NPC; [GlobalClass] public partial class TalkingCharacter : Node2D { [Export] private AnimatedSprite2D? _sprite; [Export] private string[] _timelinesToPlay; [Export] private bool _retriggerSameTimeline = false; public static bool isTalking = false; private int _timelineIndex = 0; public static void SetTalking(bool talking) { isTalking = talking; } [Signal] public delegate void TalkingEventHandler(string timelineName); public override void _Ready() { //ToggleTalking(); if (_sprite != null) _sprite.Animation = "idle"; _sprite?.Play(); } public void ToggleTalking() { GD.Print("ToggleTalking"); if (isTalking || _timelineIndex >= _timelinesToPlay.Length) { if (_sprite != null) _sprite.Animation = "idle"; //_isTalking = false; } else { if (_sprite != null) _sprite.Animation = "talk"; //_isTalking = true; EmitSignal(SignalName.Talking, _timelinesToPlay[_timelineIndex]); if (!_retriggerSameTimeline) _timelineIndex++; } if (_sprite != null) _sprite.Play(); } }