using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
namespace DisComputer
{
///
/// 指令单元集
///
public class CommandUnitSet : MonoBehaviour
{
[Header("联合指令集")]
public List comboomItems;
[Header("下一个指令单元")]
public IRegUnit nextUnit;
// Start is called before the first frame update
void Start()
{
}
private void Update()
{
}
///
/// 启动命令
///
///
public void Command()
{
CommandData data = VonNeumann.data;
RewindRunedCommandArrow();
ComboomItem item = comboomItems[VonNeumann.CommandIndex];
item.CommandAct(data,()=>
{
nextUnit.Active();
});
}
public void Command(Action finish)
{
CommandData data = VonNeumann.data;
RewindRunedCommandArrow();
ComboomItem item = comboomItems[VonNeumann.CommandIndex];
item.ClearMask();
item.CommandAct(data,()=>
{
nextUnit.Active();
finish?.Invoke();
});
}
///
/// 启动模糊指令
///
public void ShakeCommands(Action finish = null)
{
StartCoroutine(ProressShakeMask(finish));
}
IEnumerator ProressShakeMask(Action finish = null)
{
for (int i = 0; i < VonNeumann.data.ActCommandList.Count; i++)
{
comboomItems[i].MaskShake();
comboomItems[i].SetCommandVal(VonNeumann.data.ActCommandList[i]);
yield return new WaitForSeconds(0.2f);
}
finish?.Invoke();
}
///
/// 重置已使用过箭头
///
void RewindRunedCommandArrow()
{
for (int i = 0; i < comboomItems.Count; i++)
{
if (i <= VonNeumann.CommandIndex)
{
comboomItems[i].progressArrow.SetArrowZero();
; }
}
}
///
/// 复原
///
public void RewindCommand()
{
foreach(var item in comboomItems)
{
item.Rewind(0);
}
}
}
}