53 lines
945 B
C#
53 lines
945 B
C#
using System;
|
|
using Obvious.Soap;
|
|
using UnityEngine;
|
|
|
|
[CreateAssetMenu(fileName = "QuestData", menuName = "Scriptable Objects/QuestData")]
|
|
public class QuestData : ScriptableObject
|
|
{
|
|
public int id;
|
|
|
|
public int mapId;
|
|
|
|
public string questName;
|
|
|
|
public string questDescription;
|
|
|
|
public QuestType questType;
|
|
|
|
public int requiredLevel;
|
|
|
|
public float xpReward;
|
|
|
|
public float timeBased;
|
|
|
|
public int requiredActionAmount;
|
|
|
|
public ScriptableEventNoParam onRequiredActionPush;
|
|
|
|
public ScriptableEventInt onRequiredActionAmountPush;
|
|
|
|
public Action<QuestData> onQuestComplete;
|
|
|
|
public void ApplyEventsToHandler()
|
|
{
|
|
_ = questType;
|
|
onRequiredActionPush.OnRaised += ListenerHandler;
|
|
}
|
|
|
|
public void RevertEventsToHandler()
|
|
{
|
|
_ = questType;
|
|
onRequiredActionPush.OnRaised -= ListenerHandler;
|
|
}
|
|
|
|
private void ListenerHandler()
|
|
{
|
|
requiredActionAmount--;
|
|
if (requiredActionAmount <= 0)
|
|
{
|
|
onQuestComplete?.Invoke(this);
|
|
}
|
|
}
|
|
}
|