using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using LitJson; using System.Linq; //查看其他玩家的简短信息, 该模块处理数据,其他由各自功能模块处理 通过OnRevPackage public class OtherPlayerDetailManager : GameSystemManager { public override void Init() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize; } public override void Release() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize; } public void OnBeforePlayerDataInitialize() { viewPlayerType = -1; } public int viewPlayer { get; private set; } // 查询类型:根据类型做不同处理 // 按功能自定义枚举值 EnumHelper的 ViewPlayerType public int viewPlayerType { get; private set; } private Dictionary viewPlayerDataDic = new Dictionary(); // 查看类型,玩家ID public event Action OnRevPackage; //尽量不要用第一个参数viewtype做判断,容易出错 // 获取其他玩家本地缓存数据 public ViewPlayerData GetViewPlayerData(int player) { ViewPlayerData viewPlayerData = null; viewPlayerDataDic.TryGetValue(player, out viewPlayerData); return viewPlayerData; } // 向服务端请求其他玩家数据 public void ViewPlayerDetail(int _playerId, int viewType = (int)ViewPlayerType.viewPlayerData) { if (_playerId == PlayerDatas.Instance.baseData.PlayerID) { return; } viewPlayerType = viewType; ViewRoleParticulars(_playerId); } // 向服务端请求玩家数据 void ViewRoleParticulars(int playerID) { if (playerID == 0) { return; } viewPlayer = playerID; if (viewPlayerDataDic.ContainsKey(playerID)) { ViewPlayerData viewPlayerData = viewPlayerDataDic[playerID]; if ((DateTime.Now - viewPlayerData.getTime).TotalSeconds < 30) { ShowRoleParticulars(playerID); return; } } //CC002_tagCGViewCrossPlayerInfo c002 = new CC002_tagCGViewCrossPlayerInfo(); CA212_tagCMViewPlayerInfo pak = new CA212_tagCMViewPlayerInfo(); pak.PlayerID = (uint)playerID; GameNetSystem.Instance.SendInfo(pak); } //本服竞技场假查询模拟封包,返回查看机器人数据 打开RoleParticularsWin界面,专用接口其他地方不要调用 public void ViewFairyArenaRobot(int playerID, ViewPlayerData _viewPlayerData) { ViewPlayerData viewPlayerData = null; viewPlayer = playerID; if (!viewPlayerDataDic.TryGetValue(playerID, out viewPlayerData)) { viewPlayerDataDic.Add(playerID, _viewPlayerData); } else { viewPlayerDataDic[playerID] = _viewPlayerData; } viewPlayerType = (int)ViewPlayerType.viewPlayerData; ShowRoleParticulars(playerID); } public void OnRevRoleEquip(HA705_tagSCQueryPlayerCacheResult package) { ViewPlayerData viewPlayerData = null; if (!viewPlayerDataDic.TryGetValue((int)package.PlayerID, out viewPlayerData)) { viewPlayerData = new ViewPlayerData(); viewPlayerData.getTime = DateTime.Now; viewPlayerDataDic.Add((int)package.PlayerID, viewPlayerData); } viewPlayerData.getTime = DateTime.Now; viewPlayerData.PlayerID = (int)package.PlayerID; viewPlayerData.Name = package.PlayerName; viewPlayerData.LV = package.LV; viewPlayerData.Job = package.Job; viewPlayerData.RealmLV = package.RealmLV; viewPlayerData.Face = (int)package.Face; viewPlayerData.FacePic = (int)package.FacePic; viewPlayerData.TitleID = (int)package.TitleID; viewPlayerData.ServerID = (int)package.ServerID; viewPlayerData.FightPower = package.FightPower + package.FightPowerEx * (long)Constants.ExpPointValue; viewPlayerData.FamilyID = (int)package.FamilyID; viewPlayerData.FamilyName = package.FamilyName; viewPlayerData.FamilyEmblemID = (int)package.FamilyEmblemID; if (viewPlayerData.rolePlusData == null) { //第一次初始化 viewPlayerData.rolePlusData = new RolePlusData(); } if (package.PlusDataSize != 0) { viewPlayerData.rolePlusData.AnalysisRolePlusData(package.PlusData); } ShowRoleParticulars((int)package.PlayerID); } //尽量不要用第一个参数viewtype做判断,容易出错,比如同时发送两个不同的viewPlayerType请求的时候 private void ShowRoleParticulars(int playerID) { // if (viewPlayerType == (int)ViewPlayerType.viewPlayerData) // { // if (!WindowCenter.Instance.IsOpen()) // { // RoleParticularsWin.viewType = viewPlayerType; // WindowCenter.Instance.Open(); // } // } OnRevPackage?.Invoke(viewPlayerType, playerID); viewPlayerType = -1; } public class ViewPlayerData { public int PlayerID; public int LV; public int RealmLV; public string Name; public string FamilyName; public int Job; public int FamilyID; public long FightPower; public int TitleID; public int ServerID; public int FamilyEmblemID; public int Face; //脸型 public int FacePic; //脸型外框 public RolePlusData rolePlusData; public DateTime getTime; } public class RolePlusData { public void AnalysisRolePlusData(string jsonStr) { try { } catch (Exception e) { Debug.Log(e.StackTrace); } } } }