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