using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using LitJson;
|
using System.Linq;
|
|
|
//查看其他玩家的简短信息, 该模块处理数据,其他由各自功能模块处理 通过OnRevPackage
|
public class OtherPlayerDetailManager : GameSystemManager<OtherPlayerDetailManager>
|
{
|
|
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<int, ViewPlayerData> viewPlayerDataDic = new Dictionary<int, ViewPlayerData>();
|
|
// 查看类型,玩家ID
|
public event Action<int, int> 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>())
|
// {
|
// RoleParticularsWin.viewType = viewPlayerType;
|
// WindowCenter.Instance.Open<RoleParticularsWin>();
|
// }
|
// }
|
|
|
|
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);
|
}
|
}
|
|
}
|
|
}
|
|