using cfg.GuideCfg;
using cfg.ProcedureCfg;
using Framework;
using PhxhSDK;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
/// 强制流程管理器
///
public class ProcedureManager : Singlenton, IInitable
{
///
/// 强制流程数据,key:检查类型,value:强制流程数组
///
private Dictionary> dicProcedure;
///
/// 当前流程
///
private ProcedureBase curProcedureBase;
///
/// 是否强制流程中
///
public bool IsProceduring
{
get
{
if (null == curProcedureBase)
return false;
return curProcedureBase.IsProceduring();
}
}
public void Init()
{
EventManager.Instance.Register(EventManager.EventName.AllConfigLoad, InitData);
}
public void Release()
{
EventManager.Instance.Unregister(EventManager.EventName.AllConfigLoad, InitData);
}
///
/// 检查是否可以进入强制流程
///
///
public bool CheckEnterProcedure(E_ProcedureCheck procedureCheck)
{
curProcedureBase = null;
return false;
if (!dicProcedure.TryGetValue(procedureCheck, out List listProcedure))
{
DebugUtil.LogError($"没有获得到{procedureCheck.GetType()}类型的配置");
curProcedureBase = null;
return false;
}
foreach (ProcedureBase procedure in listProcedure)
{
if (!procedure.IsCanStart())
continue;
curProcedureBase = procedure;
return true;
}
curProcedureBase = null;
return false;
}
///
/// 进入强制流程
///
public void EnterProcedure()
{
if (null == curProcedureBase)
return;
curProcedureBase.Begin();
}
///
/// 初始化数据
///
private void InitData()
{
dicProcedure = new();
foreach (DataProcedure cfg in TableManager.Instance.Tables.ProcedureConfig.DataList)
{
ProcedureBase procedureBase = cfg.ProcedureType switch
{
E_Procedure.EnterLevel => new EnterLevel_Procedure(cfg),
E_Procedure.EnterTeamInfoUI => new EnterTeamInfoUI_Procedure(cfg),
E_Procedure.EnterEditTeamUI => new EnterEditTeamUI_Procedure(cfg),
_ => throw new Exception($"未处理类型{cfg.ProcedureType}"),
};
foreach (E_ProcedureCheck procedureCheck in cfg.ProcedureCheckType)
{
if (!dicProcedure.TryGetValue(procedureCheck, out List listProcedure))
{
listProcedure = new();
dicProcedure[procedureCheck] = listProcedure;
}
listProcedure.Add(procedureBase);
}
}
}
}