NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Procedure/ProcedureManager.cs

66 lines
1.8 KiB
C#
Raw Normal View History

2024-12-02 16:12:29 +08:00
using cfg.GuideCfg;
using cfg.ProcedureCfg;
using Framework;
using PhxhSDK;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
2024-12-02 16:12:29 +08:00
/// <summary>
/// 强制流程管理器
/// </summary>
public class ProcedureManager: Singlenton<ProcedureManager>, IInitable
{
2024-12-02 16:12:29 +08:00
/// <summary>
/// 强制流程数据,key:检查类型,value:强制流程数组
/// </summary>
private Dictionary<E_ProcedureCheck, List<DataProcedure>> dicProcedureCfg;
public void Init()
{
EventManager.Instance.Register(EventManager.EventName.AllConfigLoad, InitData);
}
public void Release()
{
EventManager.Instance.Unregister(EventManager.EventName.AllConfigLoad, InitData);
}
/// <summary>
/// 检查是否进入强制流程
/// </summary>
/// <returns></returns>
2024-12-02 16:12:29 +08:00
public bool CheckEnterProcedure(E_ProcedureCheck procedureCheck)
{
2024-12-02 16:12:29 +08:00
if (!dicProcedureCfg.TryGetValue(procedureCheck, out List<DataProcedure> listCfg))
{
DebugUtil.LogError($"没有获得到{procedureCheck.GetType()}类型的配置");
return false;
}
return true;
}
2024-12-02 16:12:29 +08:00
/// <summary>
/// 初始化数据
/// </summary>
private void InitData()
{
dicProcedureCfg = new();
foreach (DataProcedure cfg in TableManager.Instance.Tables.ProcedureConfig.DataList)
{
foreach (E_ProcedureCheck procedureCheck in cfg.ProcedureCheckType)
{
if (!dicProcedureCfg.TryGetValue(procedureCheck, out List<DataProcedure> listCfg))
{
listCfg = new();
dicProcedureCfg[procedureCheck] = listCfg;
}
listCfg.Add(cfg);
}
}
}
}