using System.Collections; using System.Collections.Generic; using System.Diagnostics; using UnityEngine; /// /// 流程类 /// public class D_Process : I_Enter, I_Exit { #region 变量 /// /// 自身Id /// public int id; /// /// 流程Id /// public int schemeId; /// /// 流程名称 /// public string processName; #endregion /// /// 存放流程的子流程 /// public List subProcesses = new List(); /// /// 当前子流程 /// private D_SubProcess currentSubProcess; /// /// 当前子流程 /// public D_SubProcess CurrentSubProcess { get => currentSubProcess; set { currentSubProcess = value; CurrentSubProcessId = currentSubProcess.id; } } /// /// 当前子流程Id /// private int currentSubProcessId; /// /// 当前子流程Id /// public int CurrentSubProcessId { get => currentSubProcessId; set { currentSubProcessId = value; GameManager.ProcessMgr.subProcessId = currentSubProcessId; } } /// /// 初始化 /// public void Init() { if (subProcesses == null || subProcesses.Count == 0) return; CurrentSubProcess = subProcesses[0]; CurrentSubProcess.Init(); } /// /// 切换子流程 /// public void HandoverSubProcess(int subProcessId, int subProcessStepId = 0) { if (CurrentSubProcess != null) CurrentSubProcess.Exit(); CurrentSubProcess = GetSubProcess(subProcessId); CurrentSubProcess.Enter(); //UnityEngine.Debug.Log("切换子流程到:" + subProcessId); if (subProcessStepId == 0) CurrentSubProcess.HandoverSubProcessStep(CurrentSubProcess.subProcessStepes[0].id); else CurrentSubProcess.HandoverSubProcessStep(subProcessStepId); } //public void HandoverSubProcess(int subProcessId) //{ // if (CurrentSubProcess != null) // CurrentSubProcess.Exit(); // CurrentSubProcess = GetSubProcess(subProcessId); // CurrentSubProcess.Enter(); // UnityEngine.Debug.Log("切换子流程到:" + subProcessId); //} /// /// 根据id获取 子流程对象 /// /// /// private D_SubProcess GetSubProcess(int subProcessId) { for (int i = 0; i < subProcesses.Count; i++) { if (subProcesses[i].id == subProcessId) { return subProcesses[i]; } } return null; } /// /// 进入流程 /// public void Enter() { //UnityEngine.Debug.Log("进入当前流程:" + id + "_" + processName); } /// /// 退出流程 /// public void Exit() { //UnityEngine.Debug.Log("退出当前流程:" + id + "_" + processName); } }