using System.Collections; using System.Collections.Generic; using UnityEngine; using NodeCanvas.Tasks; using NodeCanvas.Framework; using BITKit.SubSystems; using BITKit.SubSystems.Quest; namespace BITKit { public class CreateQuest : ActionTask { public string questName; public string qeustDescription; public BBParameter output; private bool isInitiated; private void Disposed() { if (output.isNoneOrNull) return; if(output.value.State is QuestSystem.State.InProcess) { BIT4Log.Log($"任务{output.value.Name}已取消"); QuestSystem.Cancel(output.value); } } protected override void OnExecute() { var quest = QuestSystem.Create(questName, qeustDescription); if (output.isDefined) output.SetValue(quest); EndAction(); if(isInitiated)return; agent.As().destroyCancellationToken.Register(Disposed); isInitiated = true; ; } // protected override void OnStop(bool interrupted) // { // base.OnStop(interrupted); // if (!interrupted) return; // if (QuestSystem.quests.TryGetValue(output.value, out var info) && // info.State == QuestSystem.State.InProcess) // QuestSystem.Cancel(output.value); // } } }