using Godot; namespace Babushka.scripts.CSharp.Common.NPC; public partial class TalkingCharacter : Node2D { [Export] private AnimatedSprite2D? _sprite; [Export] private string[] _timelinesToPlay; [Export] private bool _retriggerSameTimeline = false; private bool _isTalking = true; private int _timelineIndex = 0; [Signal] public delegate void TalkingEventHandler(string timelineName); public override void _Ready() { ToggleTalking(); } public void 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(); } }