using System; using System.Collections.Generic; using UFS3.Management; using UnityEngine; public class QuestManager : Singleton { public List questDatabase; public List questInProgress = new List(); public List 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)Delegate.Combine(questData.onQuestComplete, new Action(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)Delegate.Remove(quest.onQuestComplete, new Action(CompleteQuest)); } }