Added first quests

This commit is contained in:
cblech
2025-07-23 20:48:56 +02:00
committed by Jonathan
parent 2fbeb93018
commit abc33fd06c
18 changed files with 151 additions and 26 deletions
@@ -6,7 +6,7 @@ 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;
@@ -32,7 +32,8 @@ public partial class TalkingCharacter : Node2D
_sprite.Animation = "talk";
_isTalking = true;
EmitSignal(SignalName.Talking, _timelinesToPlay[_timelineIndex]);
_timelineIndex++;
if (!_retriggerSameTimeline)
_timelineIndex++;
}
if (_sprite != null)
_sprite.Play();
+18 -2
View File
@@ -16,13 +16,19 @@ public partial class QuestManager : Node
[Signal]
public delegate void QuestsChangedEventHandler();
[Signal]
public delegate void DialogicActiveQuestEventHandler(string value);
[Export(PropertyHint.ArrayType)]
public QuestResource[] questsAccessibleFromDialogic;
public override void _EnterTree()
{
Instance = this;
}
private Godot.Collections.Dictionary<QuestResource, QuestStatus> _questStatus = new();
private QuestResource? _followQuest;
@@ -37,6 +43,7 @@ public partial class QuestManager : Node
value.status = newStatus;
EmitSignalQuestsChanged();
EmitSignalDialogicActiveQuest(_followQuest?.id ?? "none");
if (newStatus == QuestStatus.Status.Active)
{
@@ -57,7 +64,7 @@ public partial class QuestManager : Node
{
if (_questStatus.TryGetValue(questResource, out var status))
return status;
status = new QuestStatus();
_questStatus.Add(questResource, status);
return status;
@@ -72,5 +79,14 @@ public partial class QuestManager : Node
{
_followQuest = questResource;
EmitSignalQuestsChanged();
EmitSignalDialogicActiveQuest(_followQuest?.id ?? "none");
}
// functions to call from Dialogic
public void DlSetQuestActiveAndFollow(string questId)
{
var resource = questsAccessibleFromDialogic.First(qr => qr.id == questId);
ChangeQuestStatus(resource, QuestStatus.Status.Active);
SetFollowQuest(resource);
}
}
+4 -4
View File
@@ -6,10 +6,10 @@ public partial class QuestStatus : GodotObject
{
public enum Status
{
Hidden,
Active,
Done,
Canceled,
Hidden = 0,
Active = 1,
Done = 2,
Canceled = 3,
}
public Status status = Status.Hidden;