using Framework; using System.Collections.Generic; namespace Gameplay.Level { public partial class LevelManager { private Dictionary _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(EventManager.EventName.NewLevelServerData, OnNewLevelServerData); } private void UnregisterEventData() { EventManager.Instance.Unregister(EventManager.EventName.AllConfigLoad, OnAllConfigLoad); EventManager.Instance.Unregister(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 } }