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