using Cal.DataTable; using System; using System.Collections.Generic; using System.Text; namespace ET { public class MainStoryMapAwakeSystem : AwakeSystem { public override void Awake(MainStoryMap self) { MainStoryMap.Instance = self; self.Awake(); } } public class MainStoryMapLoadSystem : LoadSystem { public override void Load(MainStoryMap self) { self.Load(); } } public static class MainStoryMapSystem { public static void Awake(this MainStoryMap self) { self.Load(); } public static void Load(this MainStoryMap self) { self.MainStoryDataDic.Clear(); var list = DataTableHelper.GetAll(); foreach (MainStory item in list) { self.MainStoryDataDic.Add(item.SceneId * 100 + item.Layer, item); } } public static MainStory GetMainStoryData(this MainStoryMap self, int mapId) { self.MainStoryDataDic.TryGetValue(mapId, out var mainStory); return mainStory; } /// /// 初始化主线场景信息 /// /// /// /// /// /// public static void Init(this MainStoryMap self, Unit unit, int mapId) { MainStory mainStory = self.GetMainStoryData(mapId); if (mainStory == null) { Log.Error(" mainStory == null"); return; } MessageHelper.SendActor(unit, new M2C_InitMainStoryMap() { MainStoryId = (int)mainStory.Id }); } /// /// 初始化主线玩家交互信息 /// /// /// /// public static MainStoryInteractive InitBattleInteractiveInfo(this MainStoryMap self, long leaderId) { var info = self.GetBattleInteractiveInfo(leaderId); if (info == null) { info = EntityFactory.CreateWithParent(self); } self.MainStoryInteractiveInfoDic[leaderId] = info; return info; } /// /// 获取主线交互信息 /// /// /// /// public static MainStoryInteractive GetBattleInteractiveInfo(this MainStoryMap self, long id) { self.MainStoryInteractiveInfoDic.TryGetValue(id, out var info); return info; } public static void UpdateBattleInteractiveInfo(this MainStoryMap self, long oldId, long id) { if (self.MainStoryInteractiveInfoDic.TryGetValue(oldId, out var info)) { self.MainStoryInteractiveInfoDic.Remove(oldId); self.MainStoryInteractiveInfoDic.Add(id, info); } else { Log.Error($"没有此交互信息id ={oldId}"); } } public static void RemoveBattleInteractiveInfo(this MainStoryMap self, long id) { if(self.MainStoryInteractiveInfoDic.TryGetValue(id, out var info)) { info.Dispose(); } if (!self.MainStoryInteractiveInfoDic.Remove(id)) { Log.Error($"没有此交互信息id ={id}"); } } } }