NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Level/LevelManager.Data.cs

66 lines
1.8 KiB
C#

using Framework;
using System.Collections.Generic;
namespace Gameplay.Level
{
public partial class LevelManager
{
private Dictionary<int, LevelInfo> _levelDic = new();
private void InitData()
{
RegisterEventData();
}
private void ReleaseData()
{
UnregisterEventData();
_levelDic = null;
}
private void RegisterEventData()
{
EventManager.Instance.Register(EventManager.EventName.AllConfigLoad, OnAllConfigLoad);
EventManager.Instance.Register<int>(EventManager.EventName.NewLevelServerData, OnNewLevelServerData);
}
private void UnregisterEventData()
{
EventManager.Instance.Unregister(EventManager.EventName.AllConfigLoad, OnAllConfigLoad);
EventManager.Instance.Unregister<int>(EventManager.EventName.NewLevelServerData, OnNewLevelServerData);
}
private void OnAllConfigLoad()
{
_levelDic.Clear();
var allLevelConfig = TableManager.Instance.Tables.Level.DataMap;
foreach (var config in allLevelConfig.Values)
{
var levelInfo = new LevelInfo(config);
_levelDic.Add(levelInfo.ID, levelInfo);
}
}
private void OnNewLevelServerData(int levelID)
{
var levelInfo = GetLevelInfoByID(levelID);
if (levelInfo != null)
{
levelInfo.RefreshServerData();
}
}
#region API
public LevelInfo GetLevelInfoByID(int id)
{
if (!_levelDic.TryGetValue(id, out var levelInfo))
{
DebugUtil.LogError($"找不到levelInfo,id:{id}");
}
return levelInfo;
}
#endregion
}
}