46 lines
1.5 KiB
C#
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);
|
||
|
// }
|
||
|
}
|
||
|
}
|