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