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 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); } } }