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); } } } }