Made quest usable

This commit is contained in:
cblech
2025-07-07 04:41:03 +02:00
parent 01daddee3b
commit 27e137bc02
13 changed files with 402 additions and 15 deletions
+36 -1
View File
@@ -8,7 +8,13 @@ namespace Babushka.scripts.CSharp.Common.Quest;
using QuestPair = KeyValuePair<QuestResource, QuestStatus>;
public partial class QuestManager : Node
{
public static QuestManager Instance { get; private set; }
public static QuestManager? Instance { get; private set; }
[Signal]
public delegate void QuestBecomesActiveEventHandler(QuestResource questResource);
[Signal]
public delegate void QuestsChangedEventHandler();
public override void _EnterTree()
{
@@ -16,6 +22,8 @@ public partial class QuestManager : Node
}
private Godot.Collections.Dictionary<QuestResource, QuestStatus> _questStatus = new();
private QuestResource? _followQuest;
public void ChangeQuestStatus(QuestResource questResource, QuestStatus.Status newStatus)
@@ -27,6 +35,13 @@ public partial class QuestManager : Node
}
value.status = newStatus;
EmitSignalQuestsChanged();
if (newStatus == QuestStatus.Status.Active)
{
EmitSignalQuestBecomesActive(questResource);
}
}
public IEnumerable<QuestPair> GetVisibleQuests()
@@ -38,4 +53,24 @@ public partial class QuestManager : Node
{
return _questStatus.Where(qs => qs.Value.status == QuestStatus.Status.Active);
}
public QuestStatus GetQuestStatus(QuestResource questResource)
{
if (_questStatus.TryGetValue(questResource, out var status))
return status;
status = new QuestStatus();
_questStatus.Add(questResource, status);
return status;
}
public QuestResource? GetFollowQuest()
{
return _followQuest;
}
public void SetFollowQuest(QuestResource? questResource)
{
_followQuest = questResource;
EmitSignalQuestsChanged();
}
}