51 lines
1.2 KiB
C#
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));
|
|
}
|
|
}
|