using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class CrossServerBaseManager : GameSystemManager { public Dictionary crossZoneInfoDict = new Dictionary(); public override void Init() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitialize; } public override void Release() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitialize; } void OnBeforePlayerDataInitialize() { crossZoneInfoDict.Clear(); } public void UpdateSCCrossZoneInfo(HC010_tagSCCrossZoneInfo netPack) { crossZoneInfoDict[(int)netPack.MapID] = new CrossZoneInfo() { MapID = netPack.MapID, ZoneID = netPack.ZoneID, ServerIDList = netPack.ServerIDList, CrossServerID = netPack.CrossServerID }; } // 没有数据代表不在跨服中,群英有个特殊约定zoneid等于0代表结算中 public bool IsOpenCrossServer(int mapID) { return crossZoneInfoDict.ContainsKey(mapID); } public CrossZoneInfo GetCrossZoneInfo(int mapID) { if (crossZoneInfoDict.ContainsKey(mapID)) { return crossZoneInfoDict[mapID]; } return null; } } public class CrossZoneInfo { public uint MapID; public uint ZoneID; // 所属分区,可能为0 public uint CrossServerID; // 所属跨服服务器ID public uint[] ServerIDList; // 互通服务器ID列表,可能为空 }