65 lines
1.5 KiB
C#
65 lines
1.5 KiB
C#
|
|
using Cysharp.Threading.Tasks;
|
||
|
|
|
||
|
|
namespace Stary.Evo.StoryEditor
|
||
|
|
{
|
||
|
|
public class NodePlayer
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// 节点名称
|
||
|
|
/// </summary>
|
||
|
|
protected string Name;
|
||
|
|
/// <summary>
|
||
|
|
/// 图表
|
||
|
|
/// </summary>
|
||
|
|
protected GraphPlayer Graph;
|
||
|
|
/// <summary>
|
||
|
|
/// 数据
|
||
|
|
/// </summary>
|
||
|
|
protected NodeData Data;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 初始化标志
|
||
|
|
/// </summary>
|
||
|
|
protected bool Initialized;
|
||
|
|
|
||
|
|
public NodePlayer(GraphPlayer graph, NodeData data)
|
||
|
|
{
|
||
|
|
Graph = graph;
|
||
|
|
Name = data.name;
|
||
|
|
Data = data;
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 连接节点
|
||
|
|
/// </summary>
|
||
|
|
public virtual bool Connect()
|
||
|
|
{
|
||
|
|
if(Initialized)
|
||
|
|
return false;
|
||
|
|
Initialized = true;
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 初始化
|
||
|
|
/// </summary>
|
||
|
|
public virtual void Init() => Graph.CurrentNodes.Add(this);
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 开始执行
|
||
|
|
/// </summary>
|
||
|
|
public virtual UniTask Execute()
|
||
|
|
{
|
||
|
|
Graph.CurrentNodes.Remove(this);
|
||
|
|
return UniTask.CompletedTask;
|
||
|
|
}
|
||
|
|
/// <summary>
|
||
|
|
/// 向下继续执行
|
||
|
|
/// </summary>
|
||
|
|
public virtual UniTask MoveNext() => UniTask.CompletedTask;
|
||
|
|
/// <summary>
|
||
|
|
/// 停止执行
|
||
|
|
/// </summary>
|
||
|
|
public virtual UniTask Stop() => UniTask.CompletedTask;
|
||
|
|
}
|
||
|
|
}
|