iFactory.Cutting.Unity/Assets/BITKit/UnityPluginsSupport/NodeCanvas/CreateQuest.cs

46 lines
1.5 KiB
C#

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<QuestSystem.Info> output;
private bool isInitiated;
private void Disposed()
{
if (output.isNoneOrNull) return;
if(output.value.State is QuestSystem.State.InProcess)
{
BIT4Log.Log<CreateQuest>($"任务{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<MonoBehaviour>().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);
// }
}
}