using Godot; using System; using System.Collections.Generic; using System.Linq; namespace Babushka.scripts.CSharp.Common.Quest; using QuestPair = KeyValuePair; public partial class QuestManager : Node { public static QuestManager Instance { get; private set; } public override void _EnterTree() { Instance = this; } private Godot.Collections.Dictionary _questStatus = new(); public void ChangeQuestStatus(QuestResource questResource, QuestStatus.Status newStatus) { if (!_questStatus.TryGetValue(questResource, out var value)) { value = new QuestStatus(); _questStatus.Add(questResource, value); } value.status = newStatus; } public IEnumerable GetVisibleQuests() { return _questStatus.Where(qs => qs.Value.status != QuestStatus.Status.Hidden); } public IEnumerable GetActiveQuests() { return _questStatus.Where(qs => qs.Value.status == QuestStatus.Status.Active); } }