🐛 fixed dialogic bugs and moved trash items out of the way

This commit is contained in:
2025-12-06 21:46:54 +01:00
parent 7bb523f9e7
commit e51e0a24d2
8 changed files with 48 additions and 2309 deletions
+18 -26
View File
@@ -1,3 +1,4 @@
using Babushka.scripts.CSharp.Common.Services;
using Godot;
namespace Babushka.scripts.CSharp.Common.NPC;
@@ -7,38 +8,29 @@ 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);
[Signal] public delegate void FinishedTalkingEventHandler(bool hasTimeLinesToPlay);
public override void _Ready()
{
ToggleTalking();
}
public void ToggleTalking()
public void StartTalking()
{
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.Animation = "talk";
EmitSignal(SignalName.Talking, _timelinesToPlay[_timelineIndex]);
if (!_retriggerSameTimeline)
_timelineIndex++;
InputService.Instance.InputEnabled = false;
if (_sprite != null)
_sprite.Play();
}
public void StopTalking()
{
if (_sprite != null)
_sprite.Animation = "idle";
InputService.Instance.InputEnabled = true;
if (_sprite != null)
_sprite.Play();
EmitSignal(SignalName.FinishedTalking, _timelineIndex >= _timelinesToPlay.Length);
}
}
+13
View File
@@ -1,5 +1,18 @@
extends Node
class_name DialogicStarter
signal timelineStarted
signal timelineEnded
func _ready() -> void:
Dialogic.timeline_ended.connect(_on_timeline_ended)
Dialogic.timeline_started.connect(_start_dialog)
func open(timeline: String):
Dialogic.start(timeline)
func _start_dialog() -> void:
timelineStarted.emit()
func _on_timeline_ended() -> void:
timelineEnded.emit()