using System.Collections; using System.Collections.Generic; using System.Diagnostics; using UnityEngine; /// <summary> /// 方案/设备/系统 /// </summary> public class D_Scheme { #region 变量 /// <summary> /// 自身Id /// </summary> public int id; /// <summary> /// 方案名称 /// </summary> public string schemeName; public string ToolOrMaterilOrDevice; #endregion /// <summary> /// 存放所有流程 /// </summary> public List<D_Process> processes = new List<D_Process>(); /// <summary> /// 当前流程 /// </summary> private D_Process currentProcess; /// <summary> /// 当前流程 /// </summary> public D_Process CurrentProcess { get => currentProcess; set { currentProcess = value; CurrentProcessId = currentProcess.id; } } /// <summary> /// 当前流程id /// </summary> private int currentProcessId; /// <summary> /// 当前流程id /// </summary> public int CurrentProcessId { get => currentProcessId; set { currentProcessId = value; GameManager.ProcessMgr.processId = currentProcessId; } } /// <summary> /// 初始化 /// </summary> public void Init() { if (processes == null || processes.Count == 0) return; CurrentProcess = processes[0]; CurrentProcess.Init(); } /// <summary> /// 切换流程 /// </summary> public void HandoverProcess(int processId, int subProcessId = 0, int subProcessStepId = 0) { if (CurrentProcess != null) CurrentProcess.Exit(); CurrentProcess = GetProcess(processId); CurrentProcess.Enter(); UnityEngine.Debug.Log("切换流程到:" + processId); if (subProcessId == 0) CurrentProcess.HandoverSubProcess(CurrentProcess.subProcesses[0].id, subProcessStepId); else CurrentProcess.HandoverSubProcess(subProcessId, subProcessStepId); } /// <summary> /// 根据id获取 流程对象 /// </summary> /// <param name="processId"></param> /// <returns></returns> private D_Process GetProcess(int processId) { for (int i = 0; i < processes.Count; i++) { if (processes[i].id == processId) { return processes[i]; } } return null; } }