From 9c3fb79c2a6433d53cc872758942dbc02253dd06 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期一, 05 一月 2026 10:58:49 +0800
Subject: [PATCH] 282 查看他人-客户端
---
Main/System/TianziBillborad/TianziBillboradPlayerRankCell.cs | 4
Main/System/Chat/ChatPlayerMineCell.cs | 4
Main/System/Arena/ArenaRecordCell.cs | 4
Main/System/Arena/ArenaChallengeCell.cs | 5
Main/System/Arena/ArenaPlayerRankCell.cs | 8
Main/System/OtherPlayerDetail/OtherPlayerDetailManager.cs.meta | 0
Main/System/OtherPlayerDetail/OtherHeroFightingCardItem.cs.meta | 11
Main/System/Arena/ArenaBattleFailWin.cs | 5
Main/System/OtherPlayerDetail/OtherEquipTipWin.cs.meta | 11
Main/System/OtherPlayerDetail/OtherHeroDetailWin.cs | 386 ++++++++++++
Main/System/OtherPlayerDetail/OtherPlayerDetailWin.cs | 205 ++++++
Main/System/BillboardRank/PlayerTop3Cell.cs | 5
Main/System/OtherPlayerDetail/OtherEquipTipWin.cs | 141 ++++
Main/System/OtherPlayerDetail/OtherEquipCardItem.cs.meta | 11
Main/System/OtherPlayerDetail/OtherHeroFightingCardItem.cs | 96 +++
Main/System/Guild/GuildMemberCell.cs | 2
Main/System/OtherPlayerDetail/OtherPlayerDetailWin.cs.meta | 11
Main/System/PhantasmPavilion/AvatarCell.cs | 38 +
Main/System/Arena/ArenaPlayerTop3Cell.cs | 4
Main/System/Guild/GuildManager.cs | 39
Main/System/PlayerProfile/PlayerProfileWin.cs | 2
Main/Utility/EnumHelper.cs | 8
Main/System/OtherPlayerDetail/OtherHeroDetailWin.cs.meta | 11
Main/System/BillboardRank/PlayerRankCell.cs | 12
Main/System/OtherPlayerDetail/OtherPlayerDetailManager.cs | 541 ++++++++++++++++
Main/System/Arena/ArenaBattleVictoryWin.cs | 7
Main/System/TianziBillborad/TianziBillboradPlayerTop3Cell.cs | 4
Main/System/OtherPlayerDetail/OtherEquipCardItem.cs | 60 +
Main/System/Chat/ChatPlayerOtherCell.cs | 5
Main/System/PhantasmPavilion/AvatarHelper.cs | 9
/dev/null | 214 ------
Main/System/Guild/GuildPreviewWin.cs | 2
Main/System/Main/MainWin.cs | 2
Main/System/OtherPlayerDetail.meta | 2
Main/System/Battle/ArenaBattleWin.cs | 5
35 files changed, 1,623 insertions(+), 251 deletions(-)
diff --git a/Main/System/Arena/ArenaBattleFailWin.cs b/Main/System/Arena/ArenaBattleFailWin.cs
index c728f54..ee83bc2 100644
--- a/Main/System/Arena/ArenaBattleFailWin.cs
+++ b/Main/System/Arena/ArenaBattleFailWin.cs
@@ -71,6 +71,11 @@
PlayerDatas.Instance.baseData.face,
PlayerDatas.Instance.baseData.facePic));
enemyAvatarCell.InitUI(AvatarHelper.GetAvatarModel((int)tagPlayerID, (int)enemyFace, (int)enemyFacePic));
+ enemyAvatarCell.SetListener(() =>
+ {
+ AvatarHelper.TryViewOtherPlayerInfo((int)tagPlayerID, viewPlayerLineupType: (int)ViewPlayerLineupType.ArenaDef);
+ });
+
txtMyName.text = PlayerDatas.Instance.baseData.PlayerName;
txtEnemyName.text = UIHelper.ServerStringTrim(info.PlayerName);
txtMyScore.text = Language.Get("Arena17", atkAddScore);
diff --git a/Main/System/Arena/ArenaBattleVictoryWin.cs b/Main/System/Arena/ArenaBattleVictoryWin.cs
index 092b65c..43a97c1 100644
--- a/Main/System/Arena/ArenaBattleVictoryWin.cs
+++ b/Main/System/Arena/ArenaBattleVictoryWin.cs
@@ -16,7 +16,7 @@
[SerializeField] ButtonEx detailBtn;
JsonData jsonData;
string battleName = BattleConst.ArenaBattleField;
-
+
protected override void InitComponent()
{
detailBtn.SetListener(() =>
@@ -65,6 +65,11 @@
PlayerDatas.Instance.baseData.face,
PlayerDatas.Instance.baseData.facePic));
enemyAvatarCell.InitUI(AvatarHelper.GetAvatarModel((int)tagPlayerID, (int)enemyFace, (int)enemyFacePic));
+ enemyAvatarCell.SetListener(() =>
+ {
+ AvatarHelper.TryViewOtherPlayerInfo((int)tagPlayerID, viewPlayerLineupType: (int)ViewPlayerLineupType.ArenaDef);
+ });
+
txtMyName.text = PlayerDatas.Instance.baseData.PlayerName;
txtEnemyName.text = UIHelper.ServerStringTrim(info.PlayerName);
txtMyScore.text = Language.Get("Arena17", atkAddScore);
diff --git a/Main/System/Arena/ArenaChallengeCell.cs b/Main/System/Arena/ArenaChallengeCell.cs
index 2ec152f..89c7798 100644
--- a/Main/System/Arena/ArenaChallengeCell.cs
+++ b/Main/System/Arena/ArenaChallengeCell.cs
@@ -33,6 +33,11 @@
arenaMatchInfo = list[index];
avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)arenaMatchInfo.PlayerID, (int)arenaMatchInfo.Face, (int)arenaMatchInfo.FacePic));
+ avatarCell.SetListener(() =>
+ {
+ AvatarHelper.TryViewOtherPlayerInfo((int)arenaMatchInfo.PlayerID, viewPlayerLineupType: (int)ViewPlayerLineupType.ArenaDef);
+ });
+
txtName.text = UIHelper.ServerStringTrim(arenaMatchInfo.PlayerName);
txtFightPoint.text = UIHelper.ReplaceLargeArtNum(arenaMatchInfo.FightPower);
txtAddScore.text = Language.Get("Arena16", ArenaManager.Instance.GetChallengePoints(index));
diff --git a/Main/System/Arena/ArenaPlayerRankCell.cs b/Main/System/Arena/ArenaPlayerRankCell.cs
index 917c711..f3d24dd 100644
--- a/Main/System/Arena/ArenaPlayerRankCell.cs
+++ b/Main/System/Arena/ArenaPlayerRankCell.cs
@@ -15,6 +15,7 @@
public void Display(int rankType, int rank, string valueFormat)
{
RankData rankData = null;
+ int viewPlayerId = (int)PlayerDatas.Instance.baseData.PlayerID;
if (rank != 0)
{
rankData = RankModel.Instance.GetRankDataByRank(rankType, rank);
@@ -45,10 +46,15 @@
}
else
{
+ viewPlayerId = (int)rankData.id;
officialTitleCell.SetActive(true);
officialTitleCell.InitUI((int)rankData.value1, (int)rankData.value2);
avatarCell.SetActive(true);
avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)rankData.id, (int)rankData.value3, (int)rankData.value4));
+ avatarCell.SetListener(() =>
+ {
+ AvatarHelper.TryViewOtherPlayerInfo((int)rankData.id, viewPlayerLineupType: (int)ViewPlayerLineupType.ArenaDef);
+ });
nameText.text = rankData.name1;
rankValueText.text = string.Format(valueFormat, UIHelper.ReplaceLargeNum(rankData.cmpValue));
}
@@ -58,7 +64,7 @@
{
queryPlayerBtn.AddListener(() =>
{
-
+ AvatarHelper.TryViewOtherPlayerInfo(viewPlayerId, viewPlayerLineupType: (int)ViewPlayerLineupType.ArenaDef);
});
}
}
diff --git a/Main/System/Arena/ArenaPlayerTop3Cell.cs b/Main/System/Arena/ArenaPlayerTop3Cell.cs
index 3351459..aeb9bfd 100644
--- a/Main/System/Arena/ArenaPlayerTop3Cell.cs
+++ b/Main/System/Arena/ArenaPlayerTop3Cell.cs
@@ -25,6 +25,10 @@
nameText.text = rankData.name1;
officialTitleCell.InitUI((int)rankData.value1, (int)rankData.value2);
model.Create(HorseManager.Instance.GetOtherPlayerHorseSkinID((int)rankData.value6), (int)rankData.value5, 1);
+ queryPlayerBtn.SetListener(() =>
+ {
+ AvatarHelper.TryViewOtherPlayerInfo((int)rankData.id, viewPlayerLineupType: (int)ViewPlayerLineupType.ArenaDef);
+ });
}
diff --git a/Main/System/Arena/ArenaRecordCell.cs b/Main/System/Arena/ArenaRecordCell.cs
index e8ab917..bdc07e1 100644
--- a/Main/System/Arena/ArenaRecordCell.cs
+++ b/Main/System/Arena/ArenaRecordCell.cs
@@ -65,6 +65,10 @@
}
avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)arenaGameRec.Value3, (int)arenaGameRec.Value5, (int)arenaGameRec.Value6));
+ avatarCell.SetListener(() =>
+ {
+ AvatarHelper.TryViewOtherPlayerInfo((int)arenaGameRec.Value3, viewPlayerLineupType: (int)ViewPlayerLineupType.ArenaDef);
+ });
txtName.text = arenaGameRec.Name;
txtFightPoint.text = UIHelper.ReplaceLargeArtNum(arenaGameRec.FightPower);
officialTitleCell.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID);
diff --git a/Main/System/Battle/ArenaBattleWin.cs b/Main/System/Battle/ArenaBattleWin.cs
index 8cce6cd..d7e7d50 100644
--- a/Main/System/Battle/ArenaBattleWin.cs
+++ b/Main/System/Battle/ArenaBattleWin.cs
@@ -188,7 +188,10 @@
txtEnemyName.text = UIHelper.ServerStringTrim(info.PlayerName);
txtEnemyFightPonit.text = UIHelper.ReplaceLargeArtNum(info.FightPower);
enemyAvatarCell.InitUI(AvatarHelper.GetAvatarModel((int)info.PlayerID, (int)info.Face, (int)info.FacePic));
-
+ enemyAvatarCell.SetListener(() =>
+ {
+ AvatarHelper.TryViewOtherPlayerInfo((int)info.PlayerID, viewPlayerLineupType: (int)ViewPlayerLineupType.ArenaDef);
+ });
var team = GetTeamHeroList(enemyTeam);
enemyCountry.RefreshOnTeamCountry(team, true);
diff --git a/Main/System/BillboardRank/PlayerRankCell.cs b/Main/System/BillboardRank/PlayerRankCell.cs
index 7748a7e..ca9b32d 100644
--- a/Main/System/BillboardRank/PlayerRankCell.cs
+++ b/Main/System/BillboardRank/PlayerRankCell.cs
@@ -13,12 +13,13 @@
[SerializeField] Text rankValueText; //鎺掑悕姣旇緝鍐呭
[SerializeField] Text nameText;
[SerializeField] OfficialTitleCell officialTitleCell;
-
+ [SerializeField] Button queryPlayerBtn; //鍚庣画娣诲姞鐐瑰嚮鏌ョ湅鐜╁璇︽儏
// rank 涓�0 浠h〃鐜╁鑷繁
public void Display(int rankType, int rank)
{
RankData rankData = null;
+ int viewPlayerId = (int)PlayerDatas.Instance.baseData.PlayerID;
if (rank != 0)
{
rankData = RankModel.Instance.GetRankDataByRank(rankType, rank);
@@ -53,12 +54,19 @@
officialTitleCell.InitUI((int)rankData.value1, (int)rankData.value2);
avatarCell.SetActive(true);
avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)rankData.id, (int)rankData.value3, (int)rankData.value4));
+ viewPlayerId = (int)rankData.id;
nameText.text = rankData.name1;
rankValueText.text = RankModel.Instance.GetCmpValueStr(rankType, rankData.cmpValue); ;
}
rankText.text = rank.ToString();
-
+ if (queryPlayerBtn != null)
+ {
+ queryPlayerBtn.AddListener(() =>
+ {
+ AvatarHelper.TryViewOtherPlayerInfo(viewPlayerId);
+ });
+ }
}
}
diff --git a/Main/System/BillboardRank/PlayerTop3Cell.cs b/Main/System/BillboardRank/PlayerTop3Cell.cs
index b336ab7..90a1e91 100644
--- a/Main/System/BillboardRank/PlayerTop3Cell.cs
+++ b/Main/System/BillboardRank/PlayerTop3Cell.cs
@@ -11,6 +11,7 @@
[SerializeField] Text rankValueText; //鎺掑悕姣旇緝鍐呭
[SerializeField] Text nameText;
[SerializeField] OfficialTitleCell officialTitleCell;
+ [SerializeField] Button queryPlayerBtn; //鍚庣画娣诲姞鐐瑰嚮鏌ョ湅鐜╁璇︽儏
[SerializeField] HorseController model;
public void Display(int rankType, int rank)
@@ -29,6 +30,10 @@
nameText.text = rankData.name1;
officialTitleCell.InitUI((int)rankData.value1, (int)rankData.value2);
model.Create(HorseManager.Instance.GetOtherPlayerHorseSkinID((int)rankData.value6), (int)rankData.value5, rank == 1 ? 1f : 0.8f);
+ queryPlayerBtn.SetListener(() =>
+ {
+ AvatarHelper.TryViewOtherPlayerInfo((int)rankData.id);
+ });
}
diff --git a/Main/System/Chat/ChatPlayerMineCell.cs b/Main/System/Chat/ChatPlayerMineCell.cs
index a265049..1830577 100644
--- a/Main/System/Chat/ChatPlayerMineCell.cs
+++ b/Main/System/Chat/ChatPlayerMineCell.cs
@@ -23,10 +23,6 @@
avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID,
PlayerDatas.Instance.baseData.face,
PlayerDatas.Instance.baseData.facePic));
- avatarCell.button.SetListener(() =>
- {
-
- });
title.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID);
if (manager.nowChatTab == ChatTab.World)
diff --git a/Main/System/Chat/ChatPlayerOtherCell.cs b/Main/System/Chat/ChatPlayerOtherCell.cs
index f609c1e..246a2ff 100644
--- a/Main/System/Chat/ChatPlayerOtherCell.cs
+++ b/Main/System/Chat/ChatPlayerOtherCell.cs
@@ -22,10 +22,7 @@
TalkData data = hasNewPlayerInfo ? newPlayerInfo : nowData;
avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)data.PlayerID, (int)data.Face, (int)data.FacePic, data.Job));
- avatarCell.button.SetListener(() =>
- {
-
- });
+
title.InitUI(data.RealmLV, (int)data.TitleID);
int bubbleID = ChatBubbleHelper.GetOtherChatBubbleID(data.Job, (int)data.BubbleBox);
m_ChatBubble.DisplayBubble(bubbleID, (int)data.PlayerID);
diff --git a/Main/System/Guild/GuildManager.cs b/Main/System/Guild/GuildManager.cs
index efcfcdb..3fd3be9 100644
--- a/Main/System/Guild/GuildManager.cs
+++ b/Main/System/Guild/GuildManager.cs
@@ -68,12 +68,12 @@
void OnPlayerLoginOk()
{
UpdateDonateRedPoint();
-
+
}
-
+
void PlayerDataRefreshEvent(PlayerDataType type)
{
- if(type == PlayerDataType.default33)
+ if (type == PlayerDataType.default33)
{
UpdateDonateRedPoint();
}
@@ -93,7 +93,7 @@
familyZBGActions.Clear();
sortPlayerCut.Clear();
}
-
+
//閫�鍑哄叕浼�
public void AfterQuitGuild()
{
@@ -107,7 +107,7 @@
// zhenbaogeCutState = 0;
// familyZBGActions.Clear();
// sortPlayerCut.Clear();
-
+
UpdateZBGRedpoint();
UpdateDonateRedPoint();
EnterOrQuitGuildEvent?.Invoke(false);
@@ -154,7 +154,7 @@
public int renameFairyNameMoneyType;
-
+
//鐝嶅疂闃�(琛屽晢)
public int zhenbaogeCutState = 0;
@@ -163,7 +163,7 @@
public event Action UpdateZhenbaogeEvent;
public bool isQueryZBGYet = false;
public float lastZBGStartTime = 0; //杩囧ぉ鍒锋柊鐢�
-
+
//{id:鏁版嵁} 鐮嶄环琛屼负锛寁alue1涓虹帺瀹禝D锛岀壒娈婄害瀹氫负1鏃朵负瀹舵棌鐨勬暟鎹�
public Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction> familyZBGActions = new Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction>();
public List<int> sortPlayerCut = new List<int>();
@@ -567,6 +567,21 @@
GameNetSystem.Instance.SendInfo(pack);
}
+ public void SendFindGuildNoDecrypt(string msg, int pageIndex = 0, int pageSize = 20)
+ {
+ if (pageIndex == 0)
+ {
+ //榛樿鏌ヨ绗竴椤靛嵆浠h〃閲嶆柊寮�濮嬫煡璇紝娓呯┖涔嬪墠鐨勬暟鎹�
+ guildsDict.Clear();
+ pageIndexList.Clear();
+ }
+ var pack = new CA620_tagCMViewFamilyPage();
+ pack.Msg = msg;
+ pack.MsgLen = (byte)msg.Length;
+ pack.PageIndex = (byte)pageIndex;
+ pack.ShowCount = (byte)pageSize;
+ GameNetSystem.Instance.SendInfo(pack);
+ }
public static void SetFairyViewData(FairyData data, HA523_tagMCFamilyViewList.tagMCFamilyView view)
{
@@ -804,7 +819,7 @@
#endregion
#region 鐝嶅疂闃�
-
+
public void UpdateZhenbaogeInfo(HA512_tagMCFamilyZhenbaogeInfo netPack)
{
@@ -913,7 +928,7 @@
}
- public Dictionary <int, FairyMember> tmpNoCutMembers = new Dictionary<int, FairyMember>();
+ public Dictionary<int, FairyMember> tmpNoCutMembers = new Dictionary<int, FairyMember>();
//鏈浠锋垚鍛�
public void CalcNoCutMembers()
@@ -925,7 +940,7 @@
return;
}
- foreach(var playerID in fairy.memberIDList)
+ foreach (var playerID in fairy.memberIDList)
{
if (!familyZBGActions.ContainsKey(playerID))
{
@@ -938,7 +953,7 @@
#region 绾㈢偣
-
+
Redpoint donateRedpoint = new Redpoint(MainRedDot.guildHallRedpointID, MainRedDot.donateRedpointID);
//鐝嶅疂闃�(琛屽晢)
Redpoint zbgRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, MainRedDot.hawkerRedpointID);
@@ -972,7 +987,7 @@
}
}
}
-
+
public void UpdateZBGRedpoint()
{
zbgRedpoint.state = RedPointState.None;
diff --git a/Main/System/Guild/GuildMemberCell.cs b/Main/System/Guild/GuildMemberCell.cs
index b33b09d..51c59fb 100644
--- a/Main/System/Guild/GuildMemberCell.cs
+++ b/Main/System/Guild/GuildMemberCell.cs
@@ -47,7 +47,7 @@
fightPowerText.text = UIHelper.ReplaceLargeArtNum(playerInfo.FightPower);
- avatarCell.button.AddListener(() =>
+ avatarCell.AddListener(() =>
{
OtherPlayerDetailManager.Instance.ViewPlayerDetail(playerID);
});
diff --git a/Main/System/Guild/GuildPreviewWin.cs b/Main/System/Guild/GuildPreviewWin.cs
index aae9466..fc4166c 100644
--- a/Main/System/Guild/GuildPreviewWin.cs
+++ b/Main/System/Guild/GuildPreviewWin.cs
@@ -45,7 +45,7 @@
SysNotifyMgr.Instance.ShowTip("GuildSys8");
});
- leaderAvatar.button.AddListener(() =>
+ leaderAvatar.AddListener(() =>
{
OtherPlayerDetailManager.Instance.ViewPlayerDetail(leaderID);
});
diff --git a/Main/System/Main/MainWin.cs b/Main/System/Main/MainWin.cs
index 5eb3a31..926d3a4 100644
--- a/Main/System/Main/MainWin.cs
+++ b/Main/System/Main/MainWin.cs
@@ -40,7 +40,7 @@
{
base.InitComponent();
avatarCell.redpoint.redpointId = MainRedDot.PhantasmPavilionRepoint;
- avatarCell.button.SetListener(() =>
+ avatarCell.SetListener(() =>
{
UIManager.Instance.OpenWindow<PlayerProfileWin>();
});
diff --git a/Main/System/RoleParticulars.meta b/Main/System/OtherPlayerDetail.meta
similarity index 77%
rename from Main/System/RoleParticulars.meta
rename to Main/System/OtherPlayerDetail.meta
index f1b5a2b..3bbff60 100644
--- a/Main/System/RoleParticulars.meta
+++ b/Main/System/OtherPlayerDetail.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 7f4be2a6d73bb8c40b77b85620ca4026
+guid: 776fe4907b83bde4eb75533ee79ae268
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Main/System/OtherPlayerDetail/OtherEquipCardItem.cs b/Main/System/OtherPlayerDetail/OtherEquipCardItem.cs
new file mode 100644
index 0000000..d054914
--- /dev/null
+++ b/Main/System/OtherPlayerDetail/OtherEquipCardItem.cs
@@ -0,0 +1,60 @@
+锘縰sing UnityEngine;
+using UnityEngine.UI;
+
+public class OtherEquipCardItem : MonoBehaviour
+{
+ [SerializeField] Button btnClick;
+ [SerializeField] Image imgQuality; //瑁呭鐨勫簳鍥撅紝涓嶅悓鍝佽川棰滆壊
+ [SerializeField] Image imgNull; //绌鸿澶囩殑閮ㄤ綅鍥炬爣
+ [SerializeField] Image imgIcon; //瑁呭鍥炬爣
+ [SerializeField] UIEffectPlayer uiEffect;
+ [SerializeField] Text txtLv;
+ OtherPlayerDetailManager manager { get { return OtherPlayerDetailManager.Instance; } }
+ public void Display(OtherPlayerDetailManager.RolePlusData.EquipData equip)
+ {
+
+ if (equip == null || !ItemConfig.HasKey(equip.ItemID))
+ {
+ imgQuality.SetSprite("equipQuality0");
+ imgNull.SetActive(true);
+ imgIcon.SetActive(false);
+ uiEffect.Stop();
+ txtLv.text = string.Empty;
+ return;
+ }
+ ItemConfig config = ItemConfig.Get(equip.ItemID);
+
+ imgNull.SetActive(false);
+ imgIcon.SetActive(true);
+ imgQuality.SetSprite("equipQuality" + config.ItemColor);
+ imgIcon.SetOrgSprite(config.IconKey);
+ txtLv.text = Language.Get("L1113", manager.GetEquipLV(equip));
+
+ if (config.ItemColor >= 7)
+ {
+ uiEffect.effectId = 1026;
+
+ uiEffect.PlayByArrIndex(config.ItemColor - 7, true, true);
+ }
+ else
+ {
+ uiEffect.Stop();
+ }
+
+ // //鐗规晥鍙傝�冨昂瀵�106*150 鍚屾瘮渚嬬缉鏀�
+ var rect = this.transform.GetComponent<RectTransform>();
+ uiEffect.transform.localScale = new Vector3(rect.sizeDelta.x / 106f, rect.sizeDelta.y / 150f, 1);
+
+ btnClick.SetListener(() =>
+ {
+ manager.equip = equip;
+ if (!UIManager.Instance.IsOpened<OtherEquipTipWin>())
+ {
+ UIManager.Instance.OpenWindow<OtherEquipTipWin>();
+ }
+ });
+ }
+
+
+}
+
diff --git a/Main/System/OtherPlayerDetail/OtherEquipCardItem.cs.meta b/Main/System/OtherPlayerDetail/OtherEquipCardItem.cs.meta
new file mode 100644
index 0000000..eeb2bf8
--- /dev/null
+++ b/Main/System/OtherPlayerDetail/OtherEquipCardItem.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fc508978e84be984fafbe320e2dd0f8d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/OtherPlayerDetail/OtherEquipTipWin.cs b/Main/System/OtherPlayerDetail/OtherEquipTipWin.cs
new file mode 100644
index 0000000..a10690e
--- /dev/null
+++ b/Main/System/OtherPlayerDetail/OtherEquipTipWin.cs
@@ -0,0 +1,141 @@
+锘縰sing System;
+using System.Collections.Generic;
+using Cysharp.Threading.Tasks;
+using UnityEngine;
+using UnityEngine.UI;
+
+//瑁呭TIP鐣岄潰
+public class OtherEquipTipWin : UIBase
+{
+ [SerializeField] Image equipImage;
+ [SerializeField] Text itemName;
+ [SerializeField] OutlineEx itemNameOutline;
+ [SerializeField] Text qualityName;
+ [SerializeField] OutlineEx qualityNameOutline;
+ [SerializeField] Text placeName;
+ [SerializeField] Text lvText;
+ [SerializeField] Image bgFlower; //鑳屾櫙鑺辩汗鍙樿壊
+ [SerializeField] List<Text> baseAttrNames;
+ [SerializeField] List<Text> baseAttrValues;
+ [SerializeField] GameObject fightAttrGameObj;
+ [SerializeField] List<GameObject> fightAttrLine;
+ [SerializeField] List<Text> fightAttrNames;
+ [SerializeField] List<Text> fightAttrValues;
+
+ [SerializeField] UIEffectPlayer uieffect;
+ [SerializeField] RectTransform bgRect;
+ int equipID;
+ ItemConfig itemConfig;
+ OtherPlayerDetailManager.RolePlusData.EquipData equip;
+ OtherPlayerDetailManager manager { get { return OtherPlayerDetailManager.Instance; } }
+ protected override void OnPreOpen()
+ {
+ equip = manager.equip;
+ if (equip == null)
+ {
+ DelayCloseWindow().Forget();
+ return;
+ }
+ equipID = equip.ItemID;
+ if (!ItemConfig.HasKey(equipID))
+ {
+ DelayCloseWindow().Forget();
+ return;
+ }
+ itemConfig = ItemConfig.Get(equipID);
+ Display(itemConfig);
+ }
+
+ protected override void OnOpen()
+ {
+ //鍏堢缉灏忥紝杩欐牱涓嶄細鍥犱负闂撮殧甯т骇鐢熸槑鏄剧殑闂儊
+ uieffect.transform.localScale = Vector3.zero;
+ //鐗规晥鏄剧ず渚濊禆rect鐨勬帓鐗堬紝鏀惧湪涓嬩竴甯�
+ RefreshEffect(itemConfig.ItemColor).Forget();
+ }
+
+ protected override void OnPreClose()
+ {
+ }
+
+ public void Display(ItemConfig config)
+ {
+
+ equipImage.SetOrgSprite(config.IconKey);
+ itemName.text = UIHelper.AppendColor(config.ItemColor, config.ItemName, true, 1);
+ itemNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(config.ItemColor);
+ qualityName.text = UIHelper.GetQualityNameWithColor(config.ItemColor, Language.Get("L1039"));
+ qualityNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(config.ItemColor);
+ placeName.text = EquipModel.Instance.GetEquipPlaceName(config.EquipPlace);
+ lvText.text = Language.Get("EquipExchangeWin7", manager.GetEquipLV(equip));
+ bgFlower.color = UIHelper.GetUIColor(config.ItemColor);
+
+ var baseAttrs = manager.GetEquipBaseAttrs(equip);
+ var baseValues = manager.GetEquipBaseValues(equip);
+ var fightAttrs = manager.GetEquipFightAttrs(equip);
+ var fightValues = manager.GetEquipFightValues(equip);
+
+ for (var i = 0; i < baseAttrNames.Count; i++)
+ {
+ if (i >= baseAttrs.Count)
+ {
+ baseAttrNames[i].text = "";
+ baseAttrValues[i].text = "";
+ }
+ else
+ {
+ baseAttrNames[i].text = PlayerPropertyConfig.Get(baseAttrs[i]).Name;
+ baseAttrValues[i].text = PlayerPropertyConfig.GetValueDescription(baseAttrs[i], baseValues[i]);
+ }
+ }
+
+ if (fightAttrs.IsNullOrEmpty())
+ {
+ fightAttrGameObj.SetActive(false);
+ }
+ else
+ {
+ fightAttrGameObj.SetActive(true);
+ for (var i = 0; i < fightAttrNames.Count; i++)
+ {
+ if (i >= fightAttrs.Count)
+ {
+ fightAttrNames[i].SetActive(false);
+ }
+ else
+ {
+ fightAttrNames[i].SetActive(true);
+ fightAttrNames[i].text = PlayerPropertyConfig.Get(fightAttrs[i]).Name;
+ fightAttrValues[i].text = PlayerPropertyConfig.GetValueDescription(fightAttrs[i], fightValues[i]);
+ }
+ }
+ }
+
+ }
+
+ //寤惰繜澶勭悊鐗规晥澶у皬
+ async UniTask RefreshEffect(int itemColor)
+ {
+ await UniTask.DelayFrame(3);
+ int effectID = EquipModel.Instance.equipUIEffects[Math.Min(itemColor, EquipModel.Instance.equipUIEffects.Length) - 1];
+ if (effectID == 0)
+ {
+ uieffect.Stop();
+ }
+ else
+ {
+ uieffect.effectId = effectID;
+ //璁$畻楂樺害缂╂斁姣斾緥 鐗规晥鏄剧ず渚濊禆rect鐨勬帓鐗�
+ uieffect.transform.localScale = new Vector3(0.98f, bgRect.rect.height / uieffect.GetComponent<RectTransform>().rect.height, 1);
+ uieffect.Play();
+ }
+ }
+
+
+
+}
+
+
+
+
+
diff --git a/Main/System/OtherPlayerDetail/OtherEquipTipWin.cs.meta b/Main/System/OtherPlayerDetail/OtherEquipTipWin.cs.meta
new file mode 100644
index 0000000..27141d4
--- /dev/null
+++ b/Main/System/OtherPlayerDetail/OtherEquipTipWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b22e83cf6038bb54c9b27407690ace89
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/OtherPlayerDetail/OtherHeroDetailWin.cs b/Main/System/OtherPlayerDetail/OtherHeroDetailWin.cs
new file mode 100644
index 0000000..1431ce4
--- /dev/null
+++ b/Main/System/OtherPlayerDetail/OtherHeroDetailWin.cs
@@ -0,0 +1,386 @@
+using System.Collections.Generic;
+using System.Linq;
+using Cysharp.Threading.Tasks;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class OtherHeroDetailWin : UIBase
+{
+ [SerializeField] SkillBaseCell normalSkillCell;
+ [SerializeField] SkillBaseCell angerSkillCell;
+ [SerializeField] HeroShowBaseCell heroShow;
+ [SerializeField] ButtonEx btnTotalAttr;
+ [SerializeField] TextEx[] attrs;
+ [SerializeField] GiftBaseCell[] giftBaseCells; //澶╄祴
+ [SerializeField] ScrollRect allAttrScroll; //鍩瑰吇灞炴�� 婊氬姩鍖�
+ [SerializeField] GameObject fetterGo;
+ [SerializeField] Text[] fetterText; //缇佺粖
+ [SerializeField] Text[] fetterNameText; //缇佺粖
+
+ [SerializeField] GameObject potential;
+ [SerializeField] GameObject potentialCell; //娼滆兘鍜岃閱掔敤浜庡垱寤�
+ [SerializeField] Transform potentialCellParent; //娼滆兘鐖惰妭鐐�
+ [SerializeField] Transform awakeCellParent; //娼滆兘鐖惰妭鐐�
+ [SerializeField] GameObject awakeGo;
+
+ OtherPlayerDetailManager.RolePlusData.HeroData heroData;
+ List<OtherPlayerDetailManager.RolePlusData.HeroData> heroDatas;
+ Dictionary<int, long> attrDict;
+ OtherPlayerDetailManager manager { get { return OtherPlayerDetailManager.Instance; } }
+ protected override void InitComponent()
+ {
+ awakeCellList = new List<GameObject>();
+ potentialCellList = new List<GameObject>();
+ btnTotalAttr.SetListener(() => { AttributeManager.Instance.OpenTotalAttributeWin(attrDict); });
+ }
+
+ protected override void OnPreOpen()
+ {
+ // 閲嶇疆鎵�鏈夋粴鍔ㄥ尯鍒伴《閮�
+ if (allAttrScroll != null)
+ {
+ allAttrScroll.verticalNormalizedPosition = 1f;
+ }
+
+ heroData = manager.heroData;
+ heroDatas = manager.heroDatas;
+ attrDict = heroData.AttrDict;
+ Display();
+ }
+
+ protected override void OnPreClose()
+ {
+
+ }
+
+ private void Display()
+ {
+ if (heroDatas.IsNullOrEmpty() || heroData == null)
+ {
+ return;
+ }
+
+ int heroID = heroData.HeroID;
+ if (!HeroConfig.HasKey(heroID))
+ {
+ return;
+ }
+
+ HeroConfig heroConfig = HeroConfig.Get(heroID);
+
+ int skinID = heroData.SkinID;
+ int lv = heroData.LV;
+ int star = heroData.Star;
+ int quality = heroConfig.Quality;
+ int breakLevel = manager.GetBreakLevel(heroData);
+ int awakeLevel = manager.GetAwakeLevel(heroData);
+ int atkSkillID = heroConfig.AtkSkillID;
+ int angerSkillID = heroConfig.AngerSkillID;
+ List<int> talentIDList = manager.GetTalentIDList(heroData);
+ List<int> talentLvList = manager.GetTalentLvList(heroData);
+ int[] FetterIDList = heroConfig.FetterIDList;
+
+ DisplaySkill(heroID, atkSkillID, angerSkillID);
+ DisplayHeroShow(heroID, skinID, breakLevel, star, awakeLevel, lv);
+ DisplayAttr(heroData);
+ DisplayGiftBaseCell(heroID, awakeLevel, talentIDList, talentLvList);
+ DisplayFetter(heroDatas, FetterIDList);
+ DisplayPotential(heroID, breakLevel);
+ RefreshAwake(heroID, quality, awakeLevel);
+
+ ForceRefreshLayout();
+ }
+
+ List<GameObject> awakeCellList; //瑙夐啋
+ void RefreshAwake(int heroID, int quality, int awakeLevel)
+ {
+
+ if (!HeroAwakeConfig.CanAwake(heroID, 1))
+ {
+ awakeGo.SetActive(false);
+ return;
+ }
+ awakeGo.SetActive(true);
+
+ var maxLV = HeroAwakeConfig.GetMaxAwakeLV(heroID);
+ var starCnt = HeroQualityConfig.Get(quality).InitStarUpper;
+ for (int i = 1; i <= maxLV; i++)
+ {
+ if (i > awakeCellList.Count)
+ {
+ awakeCellList.Add(Instantiate(potentialCell, awakeCellParent));
+ }
+ var go = awakeCellList[i - 1];
+ var descText = go.GetComponent<Text>();
+ var nameText = go.GetComponent<Text>("skillname");
+ go.SetActive(true);
+
+ var config = HeroAwakeConfig.GetHeroAwakeConfig(heroID, i);
+
+ int type = config.UnlockTalentSlot != 0 ? 1 : config.SkillID != 0 ? 2 : 3;
+ var awakeStr = string.Empty;
+ if (type == 1)
+ {
+ starCnt += config.AddStarUpper;
+ awakeStr = Language.Get("HeroAwake8", config.UnlockTalentSlot, starCnt);
+ }
+ else if (type == 2)
+ {
+ var skill = SkillConfig.Get(config.SkillID);
+ if (skill != null)
+ {
+ awakeStr = Language.Get("L1039", skill.SkillName) + skill.Description;
+ }
+ else
+ {
+ Debug.LogError($"heroId:{heroID} 瑙夐啋鎶�鑳絀D:{config.SkillID} 閰嶇疆閿欒鎶�鑳戒笉瀛樺湪");
+ }
+ }
+ else
+ {
+ for (int k = 0; k < config.AttrIDList.Length; k++)
+ {
+ awakeStr += (string.IsNullOrEmpty(config.SkillIName) ? string.Empty : Language.Get("L1039", config.SkillIName)) +
+ PlayerPropertyConfig.GetFullDescription(config.AttrIDList[k], config.AttrValueList[k], "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}"))
+ + (k == config.AttrIDList.Length - 1 ? "" : "\n");
+ }
+ }
+
+ if (i - 1 < awakeLevel)
+ {
+ nameText.text = Language.Get("herocard12", i) + Language.Get("L1096");
+ descText.text = awakeStr;
+ }
+ else
+ {
+ //缃伆
+ nameText.text = UIHelper.AppendColor(TextColType.NavyGray, Language.Get("herocard12", i) + Language.Get("L1096"));
+ descText.text = UIHelper.AppendColor(TextColType.NavyGray, UIHelper.RemoveColor(awakeStr));
+ }
+ }
+ }
+
+ List<GameObject> potentialCellList; //娼滆兘
+ void DisplayPotential(int heroID, int breakLevel)
+ {
+ if (!HeroBreakConfig.configDics.ContainsKey(heroID))
+ return;
+
+ var list = HeroBreakConfig.configDics[heroID].Keys.ToList();
+
+ list.Sort();
+
+ for (int i = 0; i < list.Count; i++)
+ {
+ var nextQualityBreakConfig = HeroBreakConfig.GetHeroBreakConfig(heroID, i + 1);
+ if (nextQualityBreakConfig == null)
+ break;
+ List<string> attrStrArr = new List<string>();
+ for (int j = 0; j < nextQualityBreakConfig.AttrIDList.Length; j++)
+ {
+ if (nextQualityBreakConfig.AttrIDList[j] == 0)
+ continue;
+ string format = i < breakLevel ? "{0}" + UIHelper.AppendColor(TextColType.Green, "+{1}") : "{0}+{1}";
+ attrStrArr.Add((string.IsNullOrEmpty(nextQualityBreakConfig.SkillIName) ? string.Empty : Language.Get("L1039", nextQualityBreakConfig.SkillIName)) +
+ PlayerPropertyConfig.GetFullDescription(nextQualityBreakConfig.AttrIDList[j], nextQualityBreakConfig.AttrValueList[j], format));
+ }
+
+ if (nextQualityBreakConfig.SkillID != 0)
+ {
+ var skill = SkillConfig.Get(nextQualityBreakConfig.SkillID);
+ if (skill != null)
+ {
+ attrStrArr.Add(Language.Get("L1039", skill.SkillName) + skill.Description);
+ }
+ else
+ {
+ Debug.LogError("鏈厤缃妧鑳�" + nextQualityBreakConfig.SkillID);
+ }
+ }
+ if (i >= potentialCellList.Count)
+ {
+ potentialCellList.Add(Instantiate(potentialCell, potentialCellParent));
+ }
+ var go = potentialCellList[i];
+ var descText = go.GetComponent<Text>();
+ var nameText = go.GetComponent<Text>("skillname");
+ go.SetActive(true);
+ if (i < breakLevel)
+ {
+ nameText.text = Language.Get("herocard63", i + 1);
+ descText.text = string.Join("\n", attrStrArr);
+ }
+ else
+ {
+ //缃伆
+ nameText.text = UIHelper.AppendColor(TextColType.NavyGray, Language.Get("herocard63", i + 1));
+ descText.text = UIHelper.AppendColor(TextColType.NavyGray, UIHelper.RemoveColor(string.Join("\n", attrStrArr)));
+ }
+ }
+ }
+
+ private void DisplayAttr(OtherPlayerDetailManager.RolePlusData.HeroData heroData)
+ {
+ if (heroData == null || heroData.AttrDict == null)
+ {
+ return;
+ }
+ var attrDict = heroData.AttrDict;
+ var baseAttrIDList = PlayerPropertyConfig.playerPropertyDict[PlayerPropertyConfig.baseType];
+ var fightAttrIDList = PlayerPropertyConfig.playerPropertyDict[PlayerPropertyConfig.fightType];
+ var totalAttrIDList = baseAttrIDList.Concat(fightAttrIDList).ToList();
+ for (int i = 0; i < attrs.Length; i++)
+ {
+ if (i < totalAttrIDList.Count)
+ {
+ attrs[i].SetActive(true);
+ int attrId = totalAttrIDList[i];
+ long attrValue = attrDict.ContainsKey(attrId) ? attrDict[attrId] : 0;
+ attrs[i].text = PlayerPropertyConfig.GetFullDescription(attrId, attrValue);
+ }
+ else
+ {
+ attrs[i].SetActive(false);
+ }
+ }
+ }
+
+ private bool HasFetterHero(List<OtherPlayerDetailManager.RolePlusData.HeroData> heroDatas, int heroID)
+ {
+ if (heroDatas.IsNullOrEmpty())
+ {
+ return false;
+ }
+ for (int i = 0; i < heroDatas.Count; i++)
+ {
+ if (heroDatas[i].HeroID == heroID)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private void DisplayFetter(List<OtherPlayerDetailManager.RolePlusData.HeroData> heroDatas, int[] FetterIDList)
+ {
+ if (FetterIDList.IsNullOrEmpty() || heroDatas.IsNullOrEmpty())
+ {
+ fetterGo.SetActive(false);
+ return;
+ }
+
+ for (int i = 0; i < fetterText.Length; i++)
+ {
+ if (i < FetterIDList.Length)
+ {
+ fetterText[i].SetActive(true);
+ var fetterID = FetterIDList[i];
+ HeroFetterConfig fetterConfig = HeroFetterConfig.Get(fetterID);
+ List<string> heroNames = new List<string>();
+ bool isAllCollect = true; //鏄惁鍏ㄦ敹闆�
+ foreach (var tmpHeroID in fetterConfig.HeroIDList)
+ {
+ heroNames.Add(HeroConfig.Get(tmpHeroID).Name);
+ bool hasFetterHero = HasFetterHero(heroDatas, tmpHeroID);
+ if (!hasFetterHero)
+ {
+ isAllCollect = false;
+ }
+ }
+ fetterGo.SetActive(isAllCollect);
+ var attrStr = string.Join(Language.Get("SplitString1"), heroNames) + Language.Get("herocard38");
+
+ for (int j = 0; j < fetterConfig.AttrIDList.Length; j++)
+ {
+ string format = !isAllCollect ? "{0}+{1}" : "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}");
+ attrStr += Language.Get("L1112") + PlayerPropertyConfig.GetFullDescription(fetterConfig.AttrIDList[j], fetterConfig.AttrValueList[j], format);
+ }
+ fetterText[i].text = attrStr;
+ fetterText[i].color = UIHelper.GetUIColor(isAllCollect ? TextColType.NavyBrown : TextColType.NavyGray);
+ fetterNameText[i].text = fetterConfig.FetterName;
+ fetterNameText[i].color = UIHelper.GetUIColor(isAllCollect ? TextColType.NavyBrown : TextColType.NavyGray);
+
+ }
+ else
+ {
+ fetterText[i].SetActive(false);
+ }
+ }
+ }
+
+ private void DisplayGiftBaseCell(int heroID, int awakeLevel, List<int> talentIDList, List<int> talentLvList)
+ {
+ if (talentIDList == null || talentLvList == null)
+ {
+ return;
+ }
+
+ int showCount = HeroUIManager.Instance.GetGiftGirdMaxCount(heroID);
+ for (int i = 0; i < giftBaseCells.Length; i++)
+ {
+ if (i >= showCount)
+ {
+ giftBaseCells[i].SetActive(false);
+ continue;
+ }
+
+ giftBaseCells[i].SetActive(true);
+ if (i < talentIDList.Count)
+ {
+ int giftID = talentIDList[i];
+ int giftLV = talentLvList[i];
+ int state = 0; //0锛氫笉鏄剧ず 1锛氭柊澧� 2锛氭彁鍗�
+ giftBaseCells[i].Init(giftID, giftLV, state, heroID, i, awakeLevel);
+ }
+ else
+ {
+ //闈炲姣旂殑鏄剧ず
+ if (i < HeroUIManager.Instance.normalGiftMaxCnt)
+ {
+ giftBaseCells[i].Init(0, 0);
+ }
+ else
+ {
+ giftBaseCells[i].Init(-1, 0, 0, heroID, i);
+ }
+ }
+
+ }
+ }
+ private void DisplayHeroShow(int heroID, int skinID, int breakLevel, int star, int awakeLevel, int lv)
+ {
+ heroShow.Init(heroID, skinID, breakLevel, star, awakeLevel, lv);
+ }
+
+ private void DisplaySkill(int heroID, int atkSkillID, int angerSkillID)
+ {
+ normalSkillCell.Init(atkSkillID, () =>
+ {
+ UIManager.Instance.OpenWindow<HeroSkillWin>(heroID);
+ }, true);
+ angerSkillCell.Init(angerSkillID, () =>
+ {
+ UIManager.Instance.OpenWindow<HeroSkillWin>(heroID);
+ }, true);
+ }
+ /// <summary>
+ /// 寮哄埗鍒锋柊Layout锛岃В鍐冲祵濂桳ayout鍜孋ontentSizeFitter鐨勯噸鍙犻棶棰�
+ /// </summary>
+ async UniTask ForceRefreshLayout()
+ {
+ await UniTask.DelayFrame(2);
+ // 鍒锋柊鎵�鏈塋ayout缁勪欢
+ var layouts = allAttrScroll.GetComponentsInChildren<LayoutGroup>(true);
+ foreach (var layout in layouts)
+ {
+ LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent<RectTransform>());
+ }
+ await UniTask.DelayFrame(2);
+ // 鍒锋柊鎵�鏈塋ayout缁勪欢
+ foreach (var layout in layouts)
+ {
+ LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent<RectTransform>());
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Main/System/OtherPlayerDetail/OtherHeroDetailWin.cs.meta b/Main/System/OtherPlayerDetail/OtherHeroDetailWin.cs.meta
new file mode 100644
index 0000000..dcb6ee4
--- /dev/null
+++ b/Main/System/OtherPlayerDetail/OtherHeroDetailWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f7e36dee1de95fc478795e453dcde29a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/OtherPlayerDetail/OtherHeroFightingCardItem.cs b/Main/System/OtherPlayerDetail/OtherHeroFightingCardItem.cs
new file mode 100644
index 0000000..5a89bc7
--- /dev/null
+++ b/Main/System/OtherPlayerDetail/OtherHeroFightingCardItem.cs
@@ -0,0 +1,96 @@
+锘縰sing UnityEngine;
+using UnityEngine.UI;
+using System.Collections.Generic;
+
+public class OtherHeroFightingCardItem : MonoBehaviour
+{
+ [SerializeField] Button btnClick;
+ [SerializeField] Image imgQuality;
+ [SerializeField] Image imgHero;
+ [SerializeField] Text txtLv;
+ [SerializeField] Image imgCountry;
+ [SerializeField] Transform rectStar;
+ [SerializeField] List<Image> imgStars;
+ OtherPlayerDetailManager.RolePlusData.HeroData heroData;
+ List<OtherPlayerDetailManager.RolePlusData.HeroData> heros;
+ OtherPlayerDetailManager manager { get { return OtherPlayerDetailManager.Instance; } }
+ public void Display(int index, List<OtherPlayerDetailManager.RolePlusData.HeroData> heros)
+ {
+ this.heros = heros;
+ if (heros.IsNullOrEmpty() || index < 0 || index >= heros.Count)
+ {
+ return;
+ }
+ heroData = heros[index];
+ var heroID = heroData.HeroID;
+ if (!HeroConfig.HasKey(heroID))
+ {
+ return;
+ }
+
+ var heroConfig = HeroConfig.Get(heroID);
+ imgQuality.SetSprite("herocBG" + heroConfig.Quality);
+ imgCountry.SetSprite(HeroUIManager.Instance.GetCountryIconName(heroConfig.Country));
+ txtLv.text = heroData.LV == 0 ? "" : Language.Get("L1094") + heroData.LV;
+ DisplayHero(heroData);
+ DisplayStars(heroData);
+
+ btnClick.SetListener(ClickHero);
+ }
+
+ void DisplayHero(OtherPlayerDetailManager.RolePlusData.HeroData heroData)
+ {
+ var sprite = UILoader.LoadSprite("HeroHead", HeroSkinConfig.Get(heroData.SkinID).RectangleIcon);
+ if (sprite == null)
+ {
+ // 鍐呯綉鏈厤缃椂
+ imgHero.SetSprite("herohead_big_default");
+ }
+ else
+ {
+ imgHero.overrideSprite = sprite;
+ }
+ }
+
+ void DisplayStars(OtherPlayerDetailManager.RolePlusData.HeroData heroData)
+ {
+ var star = heroData.Star;
+ if (star == 0)
+ {
+ rectStar.SetActive(false);
+ }
+ else
+ {
+ rectStar.SetActive(true);
+ for (int i = 0; i < imgStars.Count; i++)
+ {
+ if ((star - 1) % imgStars.Count >= i)
+ {
+ imgStars[i].SetActive(true);
+ imgStars[i].SetSprite("herostar" + (((star - 1) / imgStars.Count) + 1) * imgStars.Count);
+ }
+ else
+ {
+ imgStars[i].SetActive(false);
+ }
+ }
+ }
+ }
+
+ void ClickHero()
+ {
+ if (heroData == null)
+ {
+ return;
+ }
+
+ manager.heroData = heroData;
+ manager.heroDatas = heros;
+
+ if (!UIManager.Instance.IsOpened<OtherHeroDetailWin>())
+ {
+ UIManager.Instance.OpenWindow<OtherHeroDetailWin>();
+ }
+ }
+}
+
diff --git a/Main/System/OtherPlayerDetail/OtherHeroFightingCardItem.cs.meta b/Main/System/OtherPlayerDetail/OtherHeroFightingCardItem.cs.meta
new file mode 100644
index 0000000..9d4998f
--- /dev/null
+++ b/Main/System/OtherPlayerDetail/OtherHeroFightingCardItem.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9d90695eaf6736e418297ded40202c00
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/OtherPlayerDetail/OtherPlayerDetailManager.cs b/Main/System/OtherPlayerDetail/OtherPlayerDetailManager.cs
new file mode 100644
index 0000000..f7c13d0
--- /dev/null
+++ b/Main/System/OtherPlayerDetail/OtherPlayerDetailManager.cs
@@ -0,0 +1,541 @@
+锘縰sing System;
+using System.Collections.Generic;
+using UnityEngine;
+using LitJson;
+using System.Linq;
+
+
+//鏌ョ湅鍏朵粬鐜╁鐨勭畝鐭俊鎭�, 璇ユā鍧楀鐞嗘暟鎹紝鍏朵粬鐢卞悇鑷姛鑳芥ā鍧楀鐞� 閫氳繃OnRevPackage
+public class OtherPlayerDetailManager : GameSystemManager<OtherPlayerDetailManager>
+{
+
+ public override void Init()
+ {
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEventOnRelogin;
+ }
+
+ public override void Release()
+ {
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitializeEventOnRelogin;
+ }
+
+
+ public void OnBeforePlayerDataInitializeEventOnRelogin()
+ {
+ viewPlayerType = -1;
+ viewPlayerLineupType = -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)
+ {
+ ViewPlayerData viewPlayerData = null;
+ viewPlayerDataDic.TryGetValue(player, out viewPlayerData);
+ return viewPlayerData;
+ }
+
+
+ // 鍚戞湇鍔$璇锋眰鍏朵粬鐜╁鏁版嵁
+ public void ViewPlayerDetail(int _playerId, int viewType = (int)ViewPlayerType.viewPlayerData, int viewPlayerLineupType = (int)ViewPlayerLineupType.Story)
+ {
+ if (_playerId == PlayerDatas.Instance.baseData.PlayerID)
+ {
+ return;
+ }
+ viewPlayerType = viewType;
+ this.viewPlayerLineupType = viewPlayerLineupType;
+ 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鐣岄潰锛屼笓鐢ㄦ帴鍙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)
+ {
+
+ 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.PlayerName = UIHelper.ServerStringTrim(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.ModelMark = (int)package.ModelMark;
+ viewPlayerData.EquipShowSwitch = (int)package.EquipShowSwitch;
+ 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 = UIHelper.ServerStringTrim(package.FamilyName);
+ viewPlayerData.FamilyEmblemID = (int)package.FamilyEmblemID;
+ viewPlayerData.FamilyEmblemWord = UIHelper.ServerStringTrim(package.FamilyEmblemWord);
+
+
+ if (viewPlayerData.rolePlusData == null)
+ {
+ //绗竴娆″垵濮嬪寲
+ viewPlayerData.rolePlusData = new RolePlusData();
+ }
+ if (package.PlusDataSize != 0)
+ {
+ viewPlayerData.rolePlusData.AnalysisRolePlusData(package.PlusData);
+ }
+
+
+ ShowRoleParticulars((int)package.PlayerID);
+ }
+
+ //灏介噺涓嶈鐢ㄧ涓�涓弬鏁皏iewtype鍋氬垽鏂紝瀹规槗鍑洪敊锛屾瘮濡傚悓鏃跺彂閫佷袱涓笉鍚岀殑viewPlayerType璇锋眰鐨勬椂鍊�
+ private void ShowRoleParticulars(int playerID)
+ {
+ if (viewPlayerType == (int)ViewPlayerType.viewPlayerData)
+ {
+ if (!UIManager.Instance.IsOpened<OtherPlayerDetailWin>())
+ {
+ UIManager.Instance.OpenWindow<OtherPlayerDetailWin>(viewPlayerLineupType);
+ }
+ }
+
+ OnRevPackage?.Invoke(viewPlayerType, playerID);
+ viewPlayerType = -1;
+ viewPlayerLineupType = -1;
+ }
+ #region 鑾峰彇PlusData涓殑鏁版嵁
+ public Dictionary<int, RolePlusData.HeroData> GetHeroDataDict(int playerID, int lineupType)
+ {
+ ViewPlayerData viewPlayerData = GetViewPlayerData(playerID);
+ if (viewPlayerData?.rolePlusData?.LineupDic?.TryGetValue(lineupType, out var lineupData) != true)
+ {
+ return null;
+ }
+ return lineupData?.HeroDic;
+ }
+
+ public List<RolePlusData.HeroData> GetHeroDataSortList(int playerID, int lineupType)
+ {
+ var heroDataDict = GetHeroDataDict(playerID, lineupType);
+ if (heroDataDict == null)
+ {
+ return null;
+ }
+ var res = new List<RolePlusData.HeroData>();
+ List<int> keyList = heroDataDict.Keys.ToList();
+ keyList.Sort();
+ foreach (var num in keyList)
+ {
+ if (!heroDataDict.ContainsKey(num))
+ {
+ continue;
+ }
+ res.Add(heroDataDict[num]);
+ }
+ return res;
+ }
+
+ public Dictionary<int, RolePlusData.EquipData> GetEquipDataDict(int playerID)
+ {
+ ViewPlayerData viewPlayerData = GetViewPlayerData(playerID);
+ return viewPlayerData?.rolePlusData?.EquipDic;
+ }
+
+ public int GetUseDataFirstValue(RolePlusData.EquipData equip, int key)
+ {
+ if (equip.UserData != null && equip.UserData.ContainsKey(key) && equip.UserData[key].Count > 0)
+ {
+ return equip.UserData[key][0];
+ }
+ return 0;
+ }
+
+ public int GetUseDataFirstValue(RolePlusData.HeroData hero, int key)
+ {
+ if (hero.Data != null && hero.Data.ContainsKey(key) && hero.Data[key].Count > 0)
+ {
+ return hero.Data[key][0];
+ }
+ return 0;
+ }
+
+ public int GetEquipLV(RolePlusData.EquipData equip)
+ {
+ if (equip == null)
+ {
+ return 0;
+ }
+ return GetUseDataFirstValue(equip, 22);
+ }
+
+ public List<int> GetUseData(RolePlusData.EquipData equip, int key)
+ {
+ List<int> list = null;
+ if (equip.UserData != null)
+ {
+ equip.UserData.TryGetValue(key, out list);
+ }
+ return list == null ? new List<int>() : list;
+ }
+
+ public List<int> GetUseData(RolePlusData.HeroData hero, int key)
+ {
+ List<int> list = null;
+ if (hero.Data != null)
+ {
+ hero.Data.TryGetValue(key, out list);
+ }
+ return list == null ? new List<int>() : list;
+ }
+
+ //鍩虹灞炴�D鍒楄〃
+ public List<int> GetEquipBaseAttrs(RolePlusData.EquipData equip)
+ {
+ if (equip == null)
+ {
+ return new List<int>();
+ }
+ return GetUseData(equip, 21);
+ }
+
+
+ //鍩虹灞炴�у�煎垪琛�
+ public List<int> GetEquipBaseValues(RolePlusData.EquipData equip)
+ {
+ if (equip == null)
+ {
+ return new List<int>();
+ }
+ return GetUseData(equip, 23);
+ }
+
+ //鎴樻枟灞炴�D鍒楄〃
+ public List<int> GetEquipFightAttrs(RolePlusData.EquipData equip)
+ {
+ if (equip == null)
+ {
+ return new List<int>();
+ }
+ return GetUseData(equip, 17);
+ }
+
+ //鎴樻枟灞炴�у�煎垪琛�
+ public List<int> GetEquipFightValues(RolePlusData.EquipData equip)
+ {
+ if (equip == null)
+ {
+ return new List<int>();
+ }
+ return GetUseData(equip, 19);
+ }
+
+ // 姝﹀皢绐佺牬绛夌骇
+ public int GetBreakLevel(RolePlusData.HeroData hero)
+ {
+ if (hero == null)
+ return 0;
+ return GetUseDataFirstValue(hero, 74);
+ }
+
+ // 姝﹀皢瑙夐啋绛夌骇
+ public int GetAwakeLevel(RolePlusData.HeroData hero)
+ {
+
+ if (hero == null)
+ return 0;
+ return GetUseDataFirstValue(hero, 76);
+ }
+ // 71 # 鑻遍泟澶╄祴ID鍒楄〃
+ public List<int> GetTalentIDList(RolePlusData.HeroData hero)
+ {
+ if (hero == null)
+ return new List<int>();
+ return GetUseData(hero, 71);
+ }
+
+ // 73 # 鑻遍泟澶╄祴ID绛夌骇鍒楄〃锛屽搴�71澶╄祴ID鐨勭瓑绾�
+ public List<int> GetTalentLvList(RolePlusData.HeroData hero)
+ {
+ if (hero == null)
+ return new List<int>();
+ return GetUseData(hero, 73);
+ }
+
+ #endregion
+ #region 瑙f瀽PlusData
+ public class ViewPlayerData
+ {
+ public int PlayerID;
+ public string PlayerName;
+ public int LV;
+ public int Job;
+ public int RealmLV;
+ public int Face;
+ public int FacePic;
+ public int ModelMark; // 鍙樺舰妯″瀷mark
+ public int EquipShowSwitch; // 鍏朵粬澶栬淇℃伅
+ public int TitleID;
+ public int ServerID;
+ public long FightPower;
+ public int FamilyID;
+ public string FamilyName;
+ public int FamilyEmblemID;
+ public string FamilyEmblemWord;
+ public RolePlusData rolePlusData;
+ public DateTime getTime;
+ }
+
+ public class RolePlusData
+ {
+ // --- 瀹氫箟瀛樺偍鏁版嵁鐨勭粨鏋� ---
+
+ // 瑁呭瀛楀吀 <浣嶇疆绱㈠紩, 瑁呭鏁版嵁>
+ public Dictionary<int, EquipData> EquipDic = new Dictionary<int, EquipData>();
+
+ // 闃靛瀛楀吀 <闃靛ID, 闃靛鏁版嵁>
+ public Dictionary<int, LineupData> LineupDic = new Dictionary<int, LineupData>();
+
+ // 瑁呭鏁版嵁绫�
+ public class EquipData
+ {
+ public int ItemID;
+ public Dictionary<int, List<int>> UserData = new Dictionary<int, List<int>>();
+ }
+
+ // 闃靛鏁版嵁绫�
+ public class LineupData
+ {
+ public int PlayerID;
+ public long FightPower;
+ public int ShapeType;
+ // 鑻遍泟瀛楀吀 <绔欎綅, 鑻遍泟鏁版嵁>
+ public Dictionary<int, HeroData> HeroDic = new Dictionary<int, HeroData>();
+
+ }
+
+ // 鑻遍泟鏁版嵁绫�
+ public class HeroData
+ {
+ public int HeroID;
+ public int SkinID;
+ public int LV;
+ public int Star;
+ public long FightPower;
+ public List<int> SkillIDList = new List<int>();
+ // 灞炴�у瓧鍏� <灞炴�D, 灞炴�у��>
+ public Dictionary<int, long> AttrDict = new Dictionary<int, long>();
+ // 鑻遍泟涓撳睘UserData (鏍煎紡涓庣墿鍝乁serData鐩稿悓)
+ // 浣跨敤 Dictionary<int, List<int>> 缁撴瀯锛宬ey涓篒temUseDataKey鏋氫妇鍊�
+ public Dictionary<int, List<int>> Data = new Dictionary<int, List<int>>();
+ }
+
+ // --- 瑙f瀽閫昏緫 ---
+
+ public void AnalysisRolePlusData(string jsonStr)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(jsonStr)) return;
+
+ // 娓呴櫎鏃ф暟鎹紝闃叉閲嶇敤瀵硅薄鏃舵暟鎹爢鍙�
+ EquipDic.Clear();
+ LineupDic.Clear();
+
+ // 1. 杞负 JsonData 瀵硅薄
+ JsonData jd = JsonMapper.ToObject(jsonStr);
+
+ // 2. 瑙f瀽瑁呭 (Equip)
+ if (jd.Keys.Contains("Equip"))
+ {
+ JsonData equipJd = jd["Equip"];
+ foreach (string key in equipJd.Keys)
+ {
+ if (int.TryParse(key, out int posIndex))
+ {
+ JsonData itemJd = equipJd[key];
+ EquipData equipData = new EquipData();
+
+ if (itemJd.Keys.Contains("ItemID"))
+ equipData.ItemID = (int)itemJd["ItemID"];
+
+ if (itemJd.Keys.Contains("UserData") && !string.IsNullOrEmpty((string)itemJd["UserData"]))
+ equipData.UserData = ConfigParse.Analysis((string)itemJd["UserData"]);
+
+ EquipDic[posIndex] = equipData;
+ }
+ }
+ }
+
+ // 3. 瑙f瀽闃靛 (Lineup)
+ if (jd.Keys.Contains("Lineup"))
+ {
+ JsonData lineupJd = jd["Lineup"];
+ foreach (string key in lineupJd.Keys)
+ {
+ if (int.TryParse(key, out int lineupId))
+ {
+ JsonData oneLineupJd = lineupJd[key];
+ LineupData lineupData = new LineupData();
+
+ if (oneLineupJd.Keys.Contains("PlayerID"))
+ lineupData.PlayerID = (int)oneLineupJd["PlayerID"];
+
+ if (oneLineupJd.Keys.Contains("FightPower"))
+ lineupData.FightPower = long.Parse(oneLineupJd["FightPower"].ToString());
+
+ if (oneLineupJd.Keys.Contains("ShapeType"))
+ lineupData.ShapeType = (int)oneLineupJd["ShapeType"];
+
+ // 瑙f瀽闃靛涓嬬殑鑻遍泟 (Hero)
+ if (oneLineupJd.Keys.Contains("Hero"))
+ {
+ JsonData heroRootJd = oneLineupJd["Hero"];
+ foreach (string heroKey in heroRootJd.Keys)
+ {
+ if (int.TryParse(heroKey, out int heroPos))
+ {
+ JsonData heroJd = heroRootJd[heroKey];
+ HeroData heroData = new HeroData();
+
+ if (heroJd.Keys.Contains("HeroID")) heroData.HeroID = (int)heroJd["HeroID"];
+ if (heroJd.Keys.Contains("SkinID")) heroData.SkinID = (int)heroJd["SkinID"];
+ if (heroJd.Keys.Contains("LV")) heroData.LV = (int)heroJd["LV"];
+ if (heroJd.Keys.Contains("Star")) heroData.Star = (int)heroJd["Star"];
+ if (heroJd.Keys.Contains("FightPower")) heroData.FightPower = long.Parse(heroJd["FightPower"].ToString());
+ // 瑙f瀽Data瀛楁锛堟灏嗙墿鍝乁serData锛�
+ if (heroJd.Keys.Contains("Data") && !string.IsNullOrEmpty((string)heroJd["Data"]))
+ {
+ heroData.Data = ConfigParse.Analysis((string)heroJd["Data"]);
+ }
+
+ // 瑙f瀽鎶�鑳藉垪琛� List<int>
+ if (heroJd.Keys.Contains("SkillIDList"))
+ {
+ JsonData skills = heroJd["SkillIDList"];
+ for (int i = 0; i < skills.Count; i++)
+ {
+ heroData.SkillIDList.Add((int)skills[i]);
+ }
+ }
+
+ // 銆愪慨鏀圭偣 2銆�: 灞炴�цВ鏋愰�昏緫鏇存柊
+ if (heroJd.Keys.Contains("AttrDict"))
+ {
+ JsonData attrs = heroJd["AttrDict"];
+ foreach (string attrKey in attrs.Keys)
+ {
+ if (int.TryParse(attrKey, out int attrId))
+ {
+ JsonData v = attrs[attrKey];
+ long val = 0;
+
+ // 鍋ュ.鎬у垽鏂細鏃犺Json閲屾槸int, long杩樻槸double锛岄兘瀹夊叏杞负long
+ if (v.IsLong)
+ {
+ val = (long)v;
+ }
+ else if (v.IsInt)
+ {
+ val = (long)(int)v;
+ }
+ else if (v.IsDouble)
+ {
+ // 濡傛灉鏈嶅姟绔彂浜嗗皬鏁帮紝杩欓噷浼氭埅鏂彇鏁达紝闃叉鎶ラ敊
+ val = (long)(double)v;
+ }
+ else if (v.IsString)
+ {
+ // 闃叉鏈変簺鏋佺鎯呭喌鏁板�煎彉鎴愪簡瀛楃涓�
+ long.TryParse(v.ToString(), out val);
+ }
+
+ heroData.AttrDict[attrId] = val;
+ }
+ }
+ }
+
+ lineupData.HeroDic[heroPos] = heroData;
+ }
+ }
+ }
+ LineupDic[lineupId] = lineupData;
+ }
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ Debug.LogError("AnalysisRolePlusData Error: " + e.Message + "\nJSON: " + jsonStr);
+ }
+ }
+
+ }
+ #endregion
+
+
+}
+
diff --git a/Main/System/RoleParticulars/OtherPlayerDetailManager.cs.meta b/Main/System/OtherPlayerDetail/OtherPlayerDetailManager.cs.meta
similarity index 100%
rename from Main/System/RoleParticulars/OtherPlayerDetailManager.cs.meta
rename to Main/System/OtherPlayerDetail/OtherPlayerDetailManager.cs.meta
diff --git a/Main/System/OtherPlayerDetail/OtherPlayerDetailWin.cs b/Main/System/OtherPlayerDetail/OtherPlayerDetailWin.cs
new file mode 100644
index 0000000..8225678
--- /dev/null
+++ b/Main/System/OtherPlayerDetail/OtherPlayerDetailWin.cs
@@ -0,0 +1,205 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+public class OtherPlayerDetailWin : UIBase
+{
+ [SerializeField] AvatarCell avatarCell;
+ [SerializeField] OfficialTitleCell officialTitle;
+ [SerializeField] HorseController horseModel;
+ [SerializeField] TextEx txtPlayerName;
+ [SerializeField] TextEx txtPlayerId;
+ [SerializeField] TextEx txtServerName;
+ [SerializeField] TextEx txtLV;
+ [SerializeField] TextEx txtFightPower;
+ [SerializeField] ButtonEx btnCopy;
+ [SerializeField] ButtonEx btnGuild;
+ [SerializeField] GuildEmblemCell guildEmblem;
+ [SerializeField] TextEx txtGuildName;
+ [SerializeField] OtherHeroFightingCardItem[] heroFightingCards;
+ [SerializeField] OtherEquipCardItem[] equipCards;
+ [SerializeField] ButtonEx btnMM;
+ [SerializeField] TextEx txtMMCnt;
+ [SerializeField] ButtonEx btnBlock;
+ [SerializeField] ButtonEx btnReport;
+ [SerializeField] ButtonEx btnAddFriend;
+ [SerializeField] ButtonEx btnPrivateChat;
+ OtherPlayerDetailManager.ViewPlayerData viewPlayerData;
+ OtherPlayerDetailManager manager { get { return OtherPlayerDetailManager.Instance; } }
+
+ int viewPlayerLineupType = -1;
+
+ protected override void InitComponent()
+ {
+ btnReport.SetListener(OnClickReport);
+ btnCopy.SetListener(OnClickCopy);
+ btnGuild.SetListener(OnClickGuild);
+ }
+
+ protected override void OnPreOpen()
+ {
+ viewPlayerLineupType = functionOrder;
+ Display();
+ }
+
+ protected override void OnPreClose()
+ {
+
+ }
+
+ private void Display()
+ {
+ viewPlayerData = manager.GetViewPlayerData(manager.viewPlayer);
+ if (viewPlayerData == null)
+ {
+ Debug.LogError($"OtherPlayerDetailWin Display 鏈壘鍒扮帺瀹禝D{manager.viewPlayer}鐨勬暟鎹�");
+ CloseWindow();
+ return;
+ }
+
+ DisplayMM();
+ DisplayPlayerInfo(viewPlayerData);
+ DisplayGuildInfo(viewPlayerData);
+
+ int playerID = viewPlayerData.PlayerID;
+ var heroList = manager.GetHeroDataSortList(playerID, viewPlayerLineupType);
+ if (heroList.IsNullOrEmpty())
+ {
+ heroList = manager.GetHeroDataSortList(playerID, (int)ViewPlayerLineupType.Story);
+ }
+ DisplayCard(heroList);
+
+ var equipDict = manager.GetEquipDataDict(playerID);
+ DisplayEquip(equipDict);
+ }
+
+ private void DisplayMM()
+ {
+ txtMMCnt.text = Language.Get("OtherPlayerDetail08", 0);
+ }
+
+ private void DisplayGuildInfo(OtherPlayerDetailManager.ViewPlayerData viewPlayerData)
+ {
+ if (viewPlayerData.FamilyEmblemID <= 0 || string.IsNullOrEmpty(viewPlayerData.FamilyEmblemWord))
+ {
+ btnGuild.SetActive(false);
+ return;
+ }
+ btnGuild.SetActive(true);
+ guildEmblem.Display(viewPlayerData.FamilyEmblemID, viewPlayerData.FamilyEmblemWord, 0.35f);
+ txtGuildName.text = viewPlayerData.FamilyName;
+ GuildManager.Instance.SendFindGuildNoDecrypt(viewPlayerData.FamilyID.ToString());
+ }
+
+ private void DisplayPlayerInfo(OtherPlayerDetailManager.ViewPlayerData viewPlayerData)
+ {
+ txtPlayerName.text = viewPlayerData.PlayerName;
+ txtPlayerId.text = Language.Get("OtherPlayerDetail02", viewPlayerData.PlayerID);
+ txtServerName.text = Language.Get("PlayerProfile11", ServerListCenter.Instance.GetServerName(viewPlayerData.ServerID));
+ txtFightPower.text = UIHelper.ReplaceLargeArtNum(viewPlayerData.FightPower);
+ txtLV.text = viewPlayerData.LV.ToString();
+ avatarCell.InitUI(AvatarHelper.GetAvatarModel(viewPlayerData.PlayerID, viewPlayerData.Face, viewPlayerData.FacePic));
+ officialTitle.InitUI(viewPlayerData.RealmLV, viewPlayerData.TitleID);
+ DisplayHorseModel(viewPlayerData);
+
+ }
+
+ private void DisplayHorseModel(OtherPlayerDetailManager.ViewPlayerData viewPlayerData)
+ {
+ int HorseSkinID = viewPlayerData.EquipShowSwitch % 1000;
+ int modelMark = viewPlayerData.ModelMark;
+
+ // 濡傛灉 ModelMark 涓� 0锛岃幏鍙栭粯璁ょ殑 ModelMark
+ if (modelMark == 0)
+ {
+ PhantasmPavilionManager.Instance.TryGetDefaultID(PhantasmPavilionType.Model, viewPlayerData.Job, out modelMark);
+ }
+
+ if (!ModelConfig.HasKey(modelMark))
+ {
+ horseModel.SetActive(false);
+ return;
+ }
+
+ horseModel.SetActive(true);
+
+ var modelConfig = ModelConfig.Get(modelMark);
+ int heroSkinID = modelConfig.SkinID;
+ horseModel.Create(HorseManager.Instance.GetOtherPlayerHorseSkinID(HorseSkinID), heroSkinID, 1);
+ }
+
+ private void DisplayCard(List<OtherPlayerDetailManager.RolePlusData.HeroData> heros)
+ {
+ if (heros.IsNullOrEmpty())
+ {
+ return;
+ }
+
+ //鏄剧ず鍗$墝
+ for (int i = 0; i < heroFightingCards.Length; i++)
+ {
+ if (i < heros.Count)
+ {
+ heroFightingCards[i].Display(i, heros);
+ heroFightingCards[i].SetActive(true);
+ }
+ else
+ {
+ heroFightingCards[i].SetActive(false);
+ }
+
+ }
+ }
+
+ private void DisplayEquip(Dictionary<int, OtherPlayerDetailManager.RolePlusData.EquipData> equips)
+ {
+ if (equips.IsNullOrEmpty())
+ {
+ return;
+ }
+
+ for (int i = 0; i < equipCards.Length; i++)
+ {
+ equipCards[i].Display(equips.TryGetValue(i, out var equipData) ? equipData : null);
+ }
+ }
+
+
+ private void OnClickReport()
+ {
+ ConfirmCancel.ShowPopConfirm(
+ Language.Get("L1003"),
+ Language.Get("OtherPlayerDetail06", "灞卞鍚嶅瓧"),
+ (bool isOK) =>
+ {
+ if (isOK)
+ {
+ }
+ });
+ }
+
+ private void OnClickCopy()
+ {
+ if (viewPlayerData == null)
+ {
+ return;
+ }
+ UIHelper.CopyToClipboard(viewPlayerData.PlayerID.ToString());
+ SysNotifyMgr.Instance.ShowTip("CopySuccess");
+ }
+
+ private void OnClickGuild()
+ {
+ if (viewPlayerData == null)
+ {
+ return;
+ }
+ //鑷繁鐨勫叕浼�
+ if (PlayerDatas.Instance.fairyData.HasFairy && PlayerDatas.Instance.fairyData.fairy.FamilyID == viewPlayerData.FamilyID)
+ {
+ return;
+ }
+ UIManager.Instance.OpenWindow<GuildPreviewWin>(viewPlayerData.FamilyID);
+ }
+
+
+}
diff --git a/Main/System/OtherPlayerDetail/OtherPlayerDetailWin.cs.meta b/Main/System/OtherPlayerDetail/OtherPlayerDetailWin.cs.meta
new file mode 100644
index 0000000..55a2498
--- /dev/null
+++ b/Main/System/OtherPlayerDetail/OtherPlayerDetailWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 684d231e50deab144b92606e0f6373fa
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/PhantasmPavilion/AvatarCell.cs b/Main/System/PhantasmPavilion/AvatarCell.cs
index dead145..851c3de 100644
--- a/Main/System/PhantasmPavilion/AvatarCell.cs
+++ b/Main/System/PhantasmPavilion/AvatarCell.cs
@@ -1,5 +1,6 @@
using System;
using UnityEngine;
+using UnityEngine.Events;
//澶村儚妯″潡
public class AvatarCell : MonoBehaviour
@@ -144,7 +145,7 @@
return m_redpoint;
}
}
-
+ public ViewPlayerLineupType lineupEnum = ViewPlayerLineupType.Story;
GameObject prefab;
AvatarModel avatarModel;
PhantasmPavilionManager manager { get { return PhantasmPavilionManager.Instance; } }
@@ -221,7 +222,36 @@
faceBGImage.SetNativeSize();
faceImage.SetNativeSize();
facePicImage.SetNativeSize();
+ BindButtonClick(model);
}
+ // 娣诲姞鏍囧織浣嶏細鏄惁宸茶缃嚜瀹氫箟鐩戝惉鍣�
+ private bool hasCustomListener = false;
+ public void SetListener(UnityAction action)
+ {
+ hasCustomListener = true; // 鏍囪宸茶缃嚜瀹氫箟鐩戝惉
+ button.SetListener(action);
+ }
+ public void AddListener(UnityAction action)
+ {
+ hasCustomListener = true; // 鏍囪宸茶缃嚜瀹氫箟鐩戝惉
+ button.SetListener(action);
+ }
+ private void BindButtonClick(AvatarModel model)
+ {
+ // 濡傛灉宸茬粡璁剧疆浜嗚嚜瀹氫箟鐩戝惉鍣紝涓嶈鐩�
+ if (hasCustomListener)
+ return;
+
+ button.SetListener(() =>
+ {
+ if (avatarModel == null)
+ {
+ return;
+ }
+ AvatarHelper.TryViewOtherPlayerInfo(avatarModel.playerID, (int)ViewPlayerType.viewPlayerData, (int)lineupEnum);
+ });
+ }
+
}
public class AvatarModel
@@ -229,15 +259,11 @@
public int playerID { get; private set; }
public int faceID { get; private set; }
public int facePicID { get; private set; }
- public int redpointID { get; private set; }
- public Action clickAction { get; private set; }
- public AvatarModel(int playerID, int faceID, int facePicID, int redpointID = 0, Action clickAction = null)
+ public AvatarModel(int playerID, int faceID, int facePicID)
{
this.playerID = playerID;
this.faceID = faceID;
this.facePicID = facePicID;
- this.redpointID = redpointID;
- this.clickAction = clickAction;
}
}
\ No newline at end of file
diff --git a/Main/System/PhantasmPavilion/AvatarHelper.cs b/Main/System/PhantasmPavilion/AvatarHelper.cs
index bd87f6d..f9a4cbf 100644
--- a/Main/System/PhantasmPavilion/AvatarHelper.cs
+++ b/Main/System/PhantasmPavilion/AvatarHelper.cs
@@ -1,5 +1,14 @@
+using System;
+
public static class AvatarHelper
{
+ public static void TryViewOtherPlayerInfo(int _playerId, int viewType = (int)ViewPlayerType.viewPlayerData, int viewPlayerLineupType = (int)ViewPlayerLineupType.Story)
+ {
+ if (_playerId == PlayerDatas.Instance.PlayerId || UIManager.Instance.IsOpened<OtherPlayerDetailWin>())
+ return;
+ OtherPlayerDetailManager.Instance.ViewPlayerDetail(_playerId, viewType, viewPlayerLineupType);
+ }
+
public static AvatarModel GetAvatarModel(int playerId, int face, int facePic, int job = 0)
{
bool isMyself = playerId == PlayerDatas.Instance.PlayerId;
diff --git a/Main/System/PlayerProfile/PlayerProfileWin.cs b/Main/System/PlayerProfile/PlayerProfileWin.cs
index 01f71a1..45aa211 100644
--- a/Main/System/PlayerProfile/PlayerProfileWin.cs
+++ b/Main/System/PlayerProfile/PlayerProfileWin.cs
@@ -47,7 +47,7 @@
UIManager.Instance.OpenWindow<GameAgeWarnWin>();
});
avatarCell.redpoint.redpointId = MainRedDot.PhantasmPavilionRepoint;
- avatarCell.button.SetListener(() =>
+ avatarCell.SetListener(() =>
{
UIManager.Instance.OpenWindow<PhantasmPavilionWin>();
});
diff --git a/Main/System/RoleParticulars/OtherPlayerDetailManager.cs b/Main/System/RoleParticulars/OtherPlayerDetailManager.cs
deleted file mode 100644
index 63bcb49..0000000
--- a/Main/System/RoleParticulars/OtherPlayerDetailManager.cs
+++ /dev/null
@@ -1,214 +0,0 @@
-锘縰sing 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>();
-
- // 鏌ョ湅绫诲瀷锛岀帺瀹禝D
- public event Action<int, int> OnRevPackage; //灏介噺涓嶈鐢ㄧ涓�涓弬鏁皏iewtype鍋氬垽鏂紝瀹规槗鍑洪敊
-
- // 鑾峰彇鍏朵粬鐜╁鏈湴缂撳瓨鏁版嵁
- 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鐣岄潰锛屼笓鐢ㄦ帴鍙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)
- {
-
- 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);
- }
-
-
-
-
-
- //灏介噺涓嶈鐢ㄧ涓�涓弬鏁皏iewtype鍋氬垽鏂紝瀹规槗鍑洪敊锛屾瘮濡傚悓鏃跺彂閫佷袱涓笉鍚岀殑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);
- }
- }
-
- }
-
-}
-
diff --git a/Main/System/TianziBillborad/TianziBillboradPlayerRankCell.cs b/Main/System/TianziBillborad/TianziBillboradPlayerRankCell.cs
index 4e614d6..88fb295 100644
--- a/Main/System/TianziBillborad/TianziBillboradPlayerRankCell.cs
+++ b/Main/System/TianziBillborad/TianziBillboradPlayerRankCell.cs
@@ -20,6 +20,7 @@
public void Display(int rankType, int rank, string valueFormat)
{
RankData rankData = null;
+ int viewPlayerId = (int)PlayerDatas.Instance.baseData.PlayerID;
if (rank != 0)
{
rankData = RankModel.Instance.GetRankDataByRank(rankType, rank);
@@ -54,6 +55,7 @@
officialTitleCell.InitUI((int)rankData.value1, (int)rankData.value2);
avatarCell.SetActive(true);
avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)rankData.id, (int)rankData.value3, (int)rankData.value4));
+ viewPlayerId = (int)rankData.id;
nameText.text = rankData.name1;
rankValueText.text = string.Format(valueFormat, UIHelper.ReplaceLargeNum(rankData.cmpValue2 + rankData.cmpValue * Constants.ExpPointValue));
}
@@ -63,7 +65,7 @@
{
queryPlayerBtn.AddListener(() =>
{
-
+ AvatarHelper.TryViewOtherPlayerInfo(viewPlayerId);
});
}
}
diff --git a/Main/System/TianziBillborad/TianziBillboradPlayerTop3Cell.cs b/Main/System/TianziBillborad/TianziBillboradPlayerTop3Cell.cs
index 7bd702a..8fad005 100644
--- a/Main/System/TianziBillborad/TianziBillboradPlayerTop3Cell.cs
+++ b/Main/System/TianziBillborad/TianziBillboradPlayerTop3Cell.cs
@@ -32,6 +32,10 @@
officialTitleCell.InitUI((int)rankData.value1, (int)rankData.value2);
model.SetActive(true);
model.Create(HorseManager.Instance.GetOtherPlayerHorseSkinID((int)rankData.value6), (int)rankData.value5, rank == 1 ? 1f : 0.8f);
+ queryPlayerBtn.SetListener(() =>
+ {
+ AvatarHelper.TryViewOtherPlayerInfo((int)rankData.id);
+ });
}
diff --git a/Main/Utility/EnumHelper.cs b/Main/Utility/EnumHelper.cs
index 8f36ad4..83ffe8b 100644
--- a/Main/Utility/EnumHelper.cs
+++ b/Main/Utility/EnumHelper.cs
@@ -1844,4 +1844,12 @@
viewPlayerData = 0, //鏌ョ湅鐜╁鍩烘湰淇℃伅锛屽叕鐢ㄦ墦寮�鐣岄潰
viewGuildLeader = 1, //鏌ョ湅鐜╁鐨勫叕浼氭棌闀夸俊鎭�
+}
+
+//鏌ヨ鍏朵粬鐜╁鏁版嵁 灞曠ず鐨勯樀瀹�
+public enum ViewPlayerLineupType
+{
+ Story = 1, //涓荤嚎
+ ArenaAtk = 2, //绔炴妧鍦鸿繘鏀�
+ ArenaDef = 3, //绔炴妧鍦洪槻瀹�
}
\ No newline at end of file
--
Gitblit v1.8.0