From d1a0f1d2842f78b5232948e8e33e7e83d954a6cb Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期二, 27 一月 2026 20:31:18 +0800
Subject: [PATCH] 449 查看他人-客户端 新增命格、古宝信息,战场点击查看双方武将或npc信息
---
Main/System/OtherPlayerDetail/OtherPlayerDetailManager.cs | 219 +++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 165 insertions(+), 54 deletions(-)
diff --git a/Main/System/OtherPlayerDetail/OtherPlayerDetailManager.cs b/Main/System/OtherPlayerDetail/OtherPlayerDetailManager.cs
index 7b5fadb..94fae49 100644
--- a/Main/System/OtherPlayerDetail/OtherPlayerDetailManager.cs
+++ b/Main/System/OtherPlayerDetail/OtherPlayerDetailManager.cs
@@ -8,6 +8,26 @@
//鏌ョ湅鍏朵粬鐜╁鐨勭畝鐭俊鎭�, 璇ユā鍧楀鐞嗘暟鎹紝鍏朵粬鐢卞悇鑷姛鑳芥ā鍧楀鐞� 閫氳繃OnRevPackage
public class OtherPlayerDetailManager : GameSystemManager<OtherPlayerDetailManager>
{
+ public int viewPlayer { get; private set; }
+
+ // 鏌ヨ绫诲瀷锛氭牴鎹被鍨嬪仛涓嶅悓澶勭悊
+ // 鎸夊姛鑳借嚜瀹氫箟鏋氫妇鍊� EnumHelper鐨� ViewPlayerType
+ public int viewPlayerType { get; private set; }
+
+ public int viewPreSetType { get; private set; }
+
+ private Dictionary<int, ViewPlayerData> viewPlayerDataDic = new Dictionary<int, ViewPlayerData>();
+
+ // 鏌ョ湅绫诲瀷锛岀帺瀹禝D
+ public event Action<int, int> OnRevPackage; //灏介噺涓嶈鐢ㄧ涓�涓弬鏁皏iewtype鍋氬垽鏂紝瀹规槗鍑洪敊
+
+
+ public int viewHeroType;//0:鎴樺満鐐瑰嚮妯″瀷 1锛氭煡鐪嬩粬浜鸿嫳闆勮鎯呯晫闈㈢偣鍑昏嫳闆勫崱鐗�
+ public BattleClickHeroData clickHeroData;
+ public ViewNPCAttr viewNPCAttr;
+ public RolePlusData.HeroData heroData;
+ public List<RolePlusData.HeroData> heroDatas;
+ public RolePlusData.EquipData equip;
public override void Init()
{
@@ -22,54 +42,39 @@
public void OnBeforePlayerDataInitializeEventOnRelogin()
{
+ viewPlayer = -1;
viewPlayerType = -1;
- viewPlayerLineupType = -1;
+ viewPreSetType = -1;
}
- public int viewPlayer { get; private set; }
-
- // 鏌ヨ绫诲瀷锛氭牴鎹被鍨嬪仛涓嶅悓澶勭悊
- // 鎸夊姛鑳借嚜瀹氫箟鏋氫妇鍊� EnumHelper鐨� ViewPlayerType
- public int viewPlayerType { get; private set; }
-
- public int viewPlayerLineupType { get; private set; }
- public RolePlusData.HeroData heroData;
- public List<RolePlusData.HeroData> heroDatas;
- public RolePlusData.EquipData equip;
- private Dictionary<int, ViewPlayerData> viewPlayerDataDic = new Dictionary<int, ViewPlayerData>();
-
- // 鏌ョ湅绫诲瀷锛岀帺瀹禝D
- public event Action<int, int> OnRevPackage; //灏介噺涓嶈鐢ㄧ涓�涓弬鏁皏iewtype鍋氬垽鏂紝瀹规槗鍑洪敊
-
// 鑾峰彇鍏朵粬鐜╁鏈湴缂撳瓨鏁版嵁
- public ViewPlayerData GetViewPlayerData(int player)
+ public ViewPlayerData GetViewPlayerData(int playerId)
{
ViewPlayerData viewPlayerData = null;
- viewPlayerDataDic.TryGetValue(player, out viewPlayerData);
+ viewPlayerDataDic.TryGetValue(playerId, out viewPlayerData);
return viewPlayerData;
}
-
// 鍚戞湇鍔$璇锋眰鍏朵粬鐜╁鏁版嵁
- public void ViewPlayerDetail(int _playerId, int viewType = (int)ViewPlayerType.viewPlayerData, int viewPlayerLineupType = (int)BattlePreSetType.Story)
+ public void ViewPlayerDetail(int playerId, int viewType = (int)ViewPlayerType.viewPlayerData, int viewBattlePreSetType = (int)BattlePreSetType.Story)
{
- if (_playerId == PlayerDatas.Instance.baseData.PlayerID)
- {
+ // 鑷繁涓嶈兘鏌ョ湅鑷繁鐨勪俊鎭�
+ if (playerId == PlayerDatas.Instance.baseData.PlayerID)
return;
- }
+
viewPlayerType = viewType;
- this.viewPlayerLineupType = viewPlayerLineupType;
- ViewRoleParticulars(_playerId);
+ viewPreSetType = viewBattlePreSetType;
+ ViewRoleParticulars(playerId);
}
// 鍚戞湇鍔$璇锋眰鐜╁鏁版嵁
void ViewRoleParticulars(int playerID)
{
- if (playerID == 0)
- {
+ if (playerID <= 0)
return;
- }
+
viewPlayer = playerID;
+
if (viewPlayerDataDic.ContainsKey(playerID))
{
ViewPlayerData viewPlayerData = viewPlayerDataDic[playerID];
@@ -80,34 +85,10 @@
}
}
- //CC002_tagCGViewCrossPlayerInfo c002 = new CC002_tagCGViewCrossPlayerInfo();
-
CA212_tagCMViewPlayerInfo pak = new CA212_tagCMViewPlayerInfo();
pak.PlayerID = (uint)playerID;
GameNetSystem.Instance.SendInfo(pak);
}
-
-
- //鏈湇绔炴妧鍦哄亣鏌ヨ妯℃嫙灏佸寘锛岃繑鍥炴煡鐪嬫満鍣ㄤ汉鏁版嵁 鎵撳紑RoleParticularsWin鐣岄潰锛屼笓鐢ㄦ帴鍙e叾浠栧湴鏂逛笉瑕佽皟鐢�
- 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)
{
@@ -159,15 +140,46 @@
{
if (!UIManager.Instance.IsOpened<OtherPlayerDetailWin>())
{
- UIManager.Instance.OpenWindow<OtherPlayerDetailWin>(viewPlayerLineupType);
+ UIManager.Instance.OpenWindow<OtherPlayerDetailWin>(viewPreSetType);
}
}
OnRevPackage?.Invoke(viewPlayerType, playerID);
viewPlayerType = -1;
- viewPlayerLineupType = -1;
+ viewPreSetType = -1;
}
+
#region 鑾峰彇PlusData涓殑鏁版嵁
+
+ /// <summary>
+ /// 鑾峰彇鐗瑰畾鎴樻枟鐜涓嬬殑鍛芥牸鏂规璇︽儏
+ /// </summary>
+ public RolePlusData.MinggePresetData GetMinggePresetByBattleType(int playerID, int battleType)
+ {
+ int presetID = GetFuncPresetID(playerID, battleType, (int)FuncPresetType.Mingge);
+ var minggeData = GetMinggeTotalData(playerID);
+ if (minggeData == null || minggeData.PresetDic == null)
+ return null;
+
+ // 鍙栧嚭瀵瑰簲鐨勬柟妗堟暟鎹�
+ if (minggeData.PresetDic.TryGetValue(presetID, out var data))
+ {
+ return data;
+ }
+
+ // 濡傛灉鎵句笉鍒拌鏂规ID锛堝吋瀹规�э級锛屽皾璇曞彇榛樿鏂规 ID=1
+ if (presetID != 1 && minggeData.PresetDic.TryGetValue(1, out var defaultData))
+ {
+ return defaultData;
+ }
+
+ return null;
+ }
+ public RolePlusData.MinggeData GetMinggeTotalData(int playerID)
+ {
+ ViewPlayerData viewPlayerData = GetViewPlayerData(playerID);
+ return viewPlayerData?.rolePlusData?.minggeData;
+ }
public int GetFuncPresetID(int playerID, int battleType, int funcType)
{
@@ -362,6 +374,13 @@
return viewPlayerData?.rolePlusData?.horseData;
}
+ // 鑾峰彇鍙ゅ疂鏁版嵁瀵硅薄
+ public RolePlusData.GubaoData GetGubaoData(int playerID)
+ {
+ ViewPlayerData viewPlayerData = GetViewPlayerData(playerID);
+ return viewPlayerData?.rolePlusData?.gubaoData;
+ }
+
#endregion
#region 瑙f瀽PlusData
public class ViewPlayerData
@@ -395,6 +414,8 @@
// 闃靛瀛楀吀 <闃靛ID, 闃靛鏁版嵁>
public Dictionary<int, LineupData> LineupDic = new Dictionary<int, LineupData>();
+
+ //<鎴樻枟棰勮绫诲瀷,<棰勮绫诲瀷,浣跨敤鐨勬柟妗圛D>>
public Dictionary<int, Dictionary<int, int>> BatPresetDic = new Dictionary<int, Dictionary<int, int>>();
// 绾㈤鏁版嵁
@@ -402,6 +423,12 @@
// 鍧愰獞鏁版嵁
public HorseData horseData;
+
+ // 鍙ゅ疂鏁版嵁
+ public GubaoData gubaoData;
+
+ // 鍛芥牸鏁版嵁
+ public MinggeData minggeData;
// 绾㈤鏁版嵁绫�
public class BeautyData
@@ -423,6 +450,27 @@
{
public int ItemID;
public Dictionary<int, List<int>> UserData = new Dictionary<int, List<int>>();
+ }
+
+ // 鍙ゅ疂鏁版嵁绫�
+ public class GubaoData
+ {
+ public int Cnt; // 宸茶В閿佹暟
+ public Dictionary<int, long> AttrDict = new Dictionary<int, long>(); // 灞炴��
+ }
+
+ public class MinggeData
+ {
+ public int GWLV; // 鎰熸偀绛夌骇
+ public Dictionary<int, MinggePresetData> PresetDic = new Dictionary<int, MinggePresetData>(); // <棰勮ID, 棰勮璇︽儏>
+ }
+
+ public class MinggePresetData
+ {
+ // 鍛芥牸鎶�鑳� <鎰忚薄鎶�鑳絀D, 绛夌骇>
+ public Dictionary<int, int> SkillDic = new Dictionary<int, int>();
+ // 鍛芥牸灞炴�� <灞炴�D, 鍊�>
+ public Dictionary<int, long> AttrDict = new Dictionary<int, long>();
}
// 闃靛鏁版嵁绫�
@@ -490,6 +538,9 @@
BatPresetDic.Clear();
beautyData = null; // 蹇呴』缃┖锛岄槻姝㈡樉绀轰笂涓�涓帺瀹剁殑鏁版嵁
horseData = null; // 蹇呴』缃┖
+ gubaoData = null; // 蹇呴』缃┖
+ minggeData = null;
+
// 1. 杞负 JsonData 瀵硅薄
JsonData jd = JsonMapper.ToObject(jsonStr);
@@ -514,6 +565,20 @@
}
}
}
+
+ // 銆愭柊澧炪�戣В鏋愬彜瀹� (Gubao)
+ if (jd.Keys.Contains("Gubao"))
+ {
+ JsonData gubaoJd = jd["Gubao"];
+ gubaoData = new GubaoData();
+
+ if (gubaoJd.Keys.Contains("Cnt"))
+ gubaoData.Cnt = (int)gubaoJd["Cnt"];
+
+ // 瑙f瀽灞炴��
+ gubaoData.AttrDict = ParseAttrDict(gubaoJd, "Attr");
+ }
+
// 銆愭柊澧炪�戣В鏋愮孩棰� (Beauty)
if (jd.Keys.Contains("Beauty"))
{
@@ -624,6 +689,52 @@
}
}
+ // 銆愭柊澧炪�戣В鏋愬懡鏍� (Mingge)
+ if (jd.Keys.Contains("Mingge"))
+ {
+ JsonData minggeJd = jd["Mingge"];
+ minggeData = new MinggeData();
+
+ // 1. 瑙f瀽鎰熸偀绛夌骇
+ if (minggeJd.Keys.Contains("GWLV"))
+ minggeData.GWLV = (int)minggeJd["GWLV"];
+
+ // 2. 瑙f瀽棰勮 (Preset)
+ if (minggeJd.Keys.Contains("Preset"))
+ {
+ JsonData presetRootJd = minggeJd["Preset"];
+ foreach (string key in presetRootJd.Keys)
+ {
+ // key 涓哄懡鏍奸璁綢D
+ if (int.TryParse(key, out int presetId))
+ {
+ JsonData singlePresetJd = presetRootJd[key];
+ MinggePresetData presetData = new MinggePresetData();
+
+ // 瑙f瀽灞炴�� (Attr)
+ presetData.AttrDict = ParseAttrDict(singlePresetJd, "Attr");
+
+ // 瑙f瀽鎶�鑳� (Skill) - {"SkillID": level, ...}
+ if (singlePresetJd.Keys.Contains("Skill"))
+ {
+ JsonData skillJd = singlePresetJd["Skill"];
+ foreach (string skillKey in skillJd.Keys)
+ {
+ if (int.TryParse(skillKey, out int skillId))
+ {
+ if (int.TryParse(skillJd[skillKey].ToString(), out int level))
+ {
+ presetData.SkillDic[skillId] = level;
+ }
+ }
+ }
+ }
+
+ minggeData.PresetDic[presetId] = presetData;
+ }
+ }
+ }
+ }
}
catch (Exception e)
--
Gitblit v1.8.0