using System.Collections; using System.Collections.Generic; using System.Net.NetworkInformation; using UnityEngine; public class ProcessManager : BaseManager { /// /// 构造函数 /// private ProcessManager() { } /// /// 实操项目id /// public int id = 10002; /// /// 模式 /// public E_ModeType mode; public E_SceneName currentSceneName; /// /// 用户数据 /// public UserData userData = new UserData(); /// /// 当前的项目/方案 /// public D_Scheme d_Scheme; /// /// 当前流程Id /// public int processId = -1; /// /// 当前子流程Id /// public int subProcessId = -1; /// /// 当前子流程步骤Id /// public int subProcessStepId = -1; /// /// 倒计时,剩余时长 /// public int countDown = 0; /// /// 实训/考试时长 /// private int time; /// /// 记录倒计时的协程 /// private Coroutine coroutine; /// /// 初始化 /// 根据方案id 生成流程数据 /// /// 方案id public void Init(int id, E_ModeType mode,E_SceneName currentSceneName, int countDown = 600) //TODO 考试断线重连应该考虑初始化问题 { this.currentSceneName = currentSceneName; this.id = id; this.mode = mode; coroutine = GameManager.MonoMgr.StartCoroutine(CountDown(countDown)); d_Scheme = DataManager.Instance.GetSchemeData(id); ReportManager.Instance.creport = DataManager.Instance.GetSchemeReport(id); d_Scheme.Init(); Debug.Log("流程初始化完成"); } /// /// 切换流程 /// public void HandoverProcess(int processId, int subProcessId, int subProcessStepId) { if (processId == -1 || subProcessId == -1 || subProcessStepId == -1) return; d_Scheme.HandoverProcess(processId, subProcessId, subProcessStepId); } /// /// 切换流程 /// public void HandoverSubProcess(int subProcessId, int subProcessStepId) { if (processId == -1 || subProcessId == -1 || subProcessStepId == -1) return; d_Scheme.HandoverProcess(processId, subProcessId, subProcessStepId); } /// /// 切换流程 /// public void HandoverSubProcessStep(int subProcessStepId) { if (processId == -1 || subProcessId == -1 || subProcessStepId == -1) return; d_Scheme.HandoverProcess(processId, subProcessId, subProcessStepId); } /// /// 倒计时 /// /// 倒计时多久 /// private IEnumerator CountDown(int time) { this.time = time; countDown = time; WaitForSeconds waitForSeconds = new WaitForSeconds(1); while (countDown > 0) { yield return waitForSeconds; countDown--; } } /// /// 结束 /// public void End() { id = -1; mode = E_ModeType.None; if (coroutine != null) GameManager.MonoMgr.StopCoroutine(coroutine); d_Scheme = null; } }