CTT/Server/Hotfix/Game/System/Battle/MainStoryMapSystem.cs

119 lines
3.8 KiB
C#

using Cal.DataTable;
using System;
using System.Collections.Generic;
using System.Text;
namespace ET
{
public class MainStoryMapAwakeSystem : AwakeSystem<MainStoryMap>
{
public override void Awake(MainStoryMap self)
{
MainStoryMap.Instance = self;
self.Awake();
}
}
public class MainStoryMapLoadSystem : LoadSystem<MainStoryMap>
{
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();
IEnumerable<MainStory> list = DataTableHelper.GetAll<MainStory>();
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 MainStory mainStory);
return mainStory;
}
/// <summary>
/// 初始化主线场景信息
/// </summary>
/// <param name="self"></param>
/// <param name="unit"></param>
/// <param name="sceneId"></param>
/// <param name="mapLayer"></param>
/// <returns></returns>
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 });
}
/// <summary>
/// 初始化主线玩家交互信息
/// </summary>
/// <param name="self"></param>
/// <param name="leaderId"></param>
/// <returns></returns>
public static MainStoryInteractive InitBattleInteractiveInfo(this MainStoryMap self, long leaderId)
{
MainStoryInteractive info = self.GetBattleInteractiveInfo(leaderId);
if (info == null)
{
info = EntityFactory.CreateWithParent<MainStoryInteractive>(self);
}
self.MainStoryInteractiveInfoDic[leaderId] = info;
return info;
}
/// <summary>
/// 获取主线交互信息
/// </summary>
/// <param name="self"></param>
/// <param name="id"></param>
/// <returns></returns>
public static MainStoryInteractive GetBattleInteractiveInfo(this MainStoryMap self, long id)
{
self.MainStoryInteractiveInfoDic.TryGetValue(id, out MainStoryInteractive info);
return info;
}
public static void UpdateBattleInteractiveInfo(this MainStoryMap self, long oldId, long id)
{
if (self.MainStoryInteractiveInfoDic.TryGetValue(oldId, out MainStoryInteractive 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 MainStoryInteractive info))
{
info.Dispose();
}
if (!self.MainStoryInteractiveInfoDic.Remove(id))
{
Log.Error($"没有此交互信息id ={id}");
}
}
}
}