using System.Collections; using System.Collections.Generic; using System.Diagnostics; using UnityEngine; /// /// 子流程 /// public class D_SubProcess : I_Enter, I_Exit { #region 变量 /// /// 自身Id /// public int id; /// /// 方案Id /// public int schemeId; /// /// 流程id /// public int processId; /// /// 子流程描述 /// public string subProcessName; /// /// 是否有前置条件 /// public bool isPrecondition; /// /// 前置条件 /// public string precondition; /// /// 提示 /// public string tips; #endregion /// /// 存放流程的子流程步骤 /// public List subProcessStepes = new List(); /// /// 当前子流程步骤 /// private D_SubProcessStep currentSubProcessStep; /// /// 当前子流程步骤 /// public D_SubProcessStep CurrentSubProcessStep { get => currentSubProcessStep; set { currentSubProcessStep = value; CurrentSubProcessStepId = currentSubProcessStep.id; } } /// /// 当前子流程步骤Id /// private int currentSubProcessStepId; /// /// 当前子流程步骤Id /// public int CurrentSubProcessStepId { get => currentSubProcessStepId; set { currentSubProcessStepId = value; GameManager.ProcessMgr.subProcessStepId = currentSubProcessStepId; } } /// /// 初始化 /// public void Init() { { if (subProcessStepes == null || subProcessStepes.Count == 0) return; CurrentSubProcessStep = subProcessStepes[0]; currentSubProcessStep.Init(); } } /// /// 切换子流程步骤 /// public void HandoverSubProcessStep(int stepId) { if (CurrentSubProcessStep != null) CurrentSubProcessStep.Exit(); CurrentSubProcessStep = GetSubProcessStep(stepId); CurrentSubProcessStep.Enter(); UnityEngine.Debug.Log("切换子流程步骤到:" + stepId); } /// /// 根据id获取 流程对象 /// /// /// private D_SubProcessStep GetSubProcessStep(int stepId) { for (int i = 0; i < subProcessStepes.Count; i++) { if (subProcessStepes[i].id == stepId) { subProcessStepes[i].GetTriggerID(); return subProcessStepes[i]; } } return null; } /// /// 退出子流程 /// public void Exit() { UnityEngine.Debug.Log("退出当前子流程:" + id + "_" + subProcessName); } /// /// 进入子流程 /// public void Enter() { UnityEngine.Debug.Log("进入当前子流程:" + id + "_" + subProcessName); } }