Made quest usable
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user