From eeb56fd7ad8cd2e02712e44d6e472d64c22a0002 Mon Sep 17 00:00:00 2001 From: kziolkowski Date: Wed, 20 Aug 2025 00:48:12 +0200 Subject: [PATCH] Added possibility to deactivate an interactionarea if there is no more timelines to play --- dialog/yeli_quest_select.dtl | 2 +- prefabs/characters/Yeli.tscn | 1 + scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs | 4 ++++ scripts/CSharp/Common/NPC/TalkingCharacter.cs | 5 ++++- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/dialog/yeli_quest_select.dtl b/dialog/yeli_quest_select.dtl index 5c3b4e0..c98e172 100644 --- a/dialog/yeli_quest_select.dtl +++ b/dialog/yeli_quest_select.dtl @@ -11,4 +11,4 @@ ifquest res://resources/quests/demo/2_collect_ducks.tres, 1: join Yeli right Yeli: Have you collected all the ducks yet? [end_timeline] -No dialogue for active quest "{ACTIVEQUEST}" +Yeli doesn't seem to have anything to say... diff --git a/prefabs/characters/Yeli.tscn b/prefabs/characters/Yeli.tscn index 757dcab..4a0bcf4 100644 --- a/prefabs/characters/Yeli.tscn +++ b/prefabs/characters/Yeli.tscn @@ -224,6 +224,7 @@ scale = Vector2(0.7, 0.7) script = ExtResource("44_aqu1t") itemToToggle = NodePath("../TalkingControl/AnimatedSprite") +[connection signal="FinishedTalking" from="." to="InteractionArea" method="SetActiveInverse"] [connection signal="Talking" from="." to="Dialogic starter" method="open"] [connection signal="Interacted" from="InteractionArea" to="." method="ToggleTalking"] [connection signal="timelineEnded" from="DialogicToggle" to="." method="ToggleTalking"] diff --git a/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs b/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs index 72a7b3f..1c93896 100644 --- a/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs +++ b/scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs @@ -26,6 +26,10 @@ public partial class InteractionArea2D : Node2D set => _active = value; } + public void SetActiveInverse(bool active) + { + IsActive = !active; + } public override void _Ready() { diff --git a/scripts/CSharp/Common/NPC/TalkingCharacter.cs b/scripts/CSharp/Common/NPC/TalkingCharacter.cs index 96c5fc5..feda0aa 100644 --- a/scripts/CSharp/Common/NPC/TalkingCharacter.cs +++ b/scripts/CSharp/Common/NPC/TalkingCharacter.cs @@ -12,7 +12,8 @@ public partial class TalkingCharacter : Node2D private int _timelineIndex = 0; [Signal] public delegate void TalkingEventHandler(string timelineName); - + [Signal] public delegate void FinishedTalkingEventHandler(bool hasTimeLinesToPlay); + public override void _Ready() { ToggleTalking(); @@ -37,5 +38,7 @@ public partial class TalkingCharacter : Node2D } if (_sprite != null) _sprite.Play(); + + EmitSignal(SignalName.FinishedTalking, _timelineIndex >= _timelinesToPlay.Length); } }