66 lines
1.8 KiB
C#
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
|
|
}
|
|
}
|
|
|