43 lines
1.1 KiB
C#
43 lines
1.1 KiB
C#
|
|
using System.Collections.Generic;
|
||
|
|
using Cysharp.Threading.Tasks;
|
||
|
|
using UnityEngine;
|
||
|
|
|
||
|
|
namespace Stary.Evo.StoryEditor
|
||
|
|
{
|
||
|
|
public class BeginNodePlayer : NodePlayer
|
||
|
|
{
|
||
|
|
public new BeginNodeData Data;
|
||
|
|
public List<NodePlayer> Next = new();
|
||
|
|
|
||
|
|
public BeginNodePlayer(GraphPlayer graph, BeginNodeData data) : base(graph, data)
|
||
|
|
{
|
||
|
|
Data = data;
|
||
|
|
}
|
||
|
|
|
||
|
|
public override bool Connect()
|
||
|
|
{
|
||
|
|
Debug.Log("BeginNodePlayer: Connect");
|
||
|
|
if (!base.Connect())
|
||
|
|
return false;
|
||
|
|
|
||
|
|
Data.next.ForEach(index => Next.Add(Graph.Nodes[index]));
|
||
|
|
Next.ForEach(node => node.Connect());
|
||
|
|
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
public override async UniTask Execute()
|
||
|
|
{
|
||
|
|
Init();
|
||
|
|
Debug.Log($"开始执行剧本: {Graph.Name}");
|
||
|
|
await base.Execute();
|
||
|
|
await MoveNext();
|
||
|
|
}
|
||
|
|
|
||
|
|
public override UniTask MoveNext()
|
||
|
|
{
|
||
|
|
Next.ForEach(node => node?.Execute());
|
||
|
|
return base.MoveNext();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|