Files
Ultimate-Fishing-Simulator-…/Assets/Scripts/Assembly-CSharp/QuestManager.cs
2026-03-04 09:37:33 +08:00

51 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
using UFS3.Management;
using UnityEngine;
public class QuestManager : Singleton<QuestManager>
{
public List<QuestData> questDatabase;
public List<QuestData> questInProgress = new List<QuestData>();
public List<QuestData> questCompleted;
private void Start()
{
ValidateQuestDatabase();
}
private void ValidateQuestDatabase()
{
for (int i = 0; i < questDatabase.Count; i++)
{
questDatabase[i].id = i;
}
}
private void MoveQuestToInProgress(QuestData quest)
{
QuestData questData = UnityEngine.Object.Instantiate(quest);
questInProgress.Add(questData);
questData.ApplyEventsToHandler();
questData.onQuestComplete = (Action<QuestData>)Delegate.Combine(questData.onQuestComplete, new Action<QuestData>(CompleteQuest));
}
private void RemoveQuestEventHandlers()
{
foreach (QuestData item in questInProgress)
{
item.RevertEventsToHandler();
}
}
private void CompleteQuest(QuestData quest)
{
questInProgress.Remove(quest);
questCompleted.Add(quest);
quest.RevertEventsToHandler();
quest.onQuestComplete = (Action<QuestData>)Delegate.Remove(quest.onQuestComplete, new Action<QuestData>(CompleteQuest));
}
}