From 8b13766dc43e3f4406a64873844dcecd24cabcb5 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 10 十二月 2025 16:28:17 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts
---
Main/System/Settlement/BattleSettlementManager.cs | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 150 insertions(+), 0 deletions(-)
diff --git a/Main/System/Settlement/BattleSettlementManager.cs b/Main/System/Settlement/BattleSettlementManager.cs
index d477cf8..a11396b 100644
--- a/Main/System/Settlement/BattleSettlementManager.cs
+++ b/Main/System/Settlement/BattleSettlementManager.cs
@@ -264,7 +264,157 @@
}
+ #region 鎴樻枟缁撴灉璇︽儏
+ public BattleDetailMsg msg = new BattleDetailMsg();
+ public string BattleDetailBattleName = string.Empty;
+ public string BattleDetailMyName = string.Empty;
+ public string BattleDetailEnemyName = string.Empty;
+ public bool isMyStartBattleDetail = false; // 鏄惁鏄垜鏂瑰彂璧风殑鎴樻枟
+ // isMyStart 鏄惁鏄垜鏂瑰彂璧风殑鎴樻枟
+ public void OpenBattleDetailWin(string battleName, bool isMyStart = true)
+ {
+ if (UIManager.Instance.IsOpened<BattleDetailWin>())
+ return;
+
+ JsonData battleSettlement = GetBattleSettlement(battleName);
+ if (battleSettlement == null)
+ return;
+
+ msg = ParserBattleDetail(battleSettlement);
+ if (msg == null)
+ return;
+
+ BattleDetailBattleName = battleName;
+ this.isMyStartBattleDetail = isMyStart;
+ UIManager.Instance.OpenWindow<BattleDetailWin>();
+ }
+
+ //鎴樻枟缁撴灉璇︽儏鐣岄潰鑾峰彇 鎴戞柟鍙戣捣鐨勬垬鏂楃殑涓晫鏂瑰悕瀛�
+ public string GetBattleDetailEnemyNameByMyStart(string battleName)
+ {
+ string detailName = string.Empty;
+ BattleField battleField = BattleManager.Instance.GetActiveBattleFieldByName(battleName);
+ if (battleField == null)
+ return detailName;
+
+ switch (battleName)
+ {
+ // 鏁屾柟鍚嶅瓧鏄疊oss鍚嶅瓧
+ case BattleConst.StoryBossBattleField:
+ case BattleConst.BoneBattleField:
+ case BattleConst.TianziBillboradBattleField:
+ BattleObject bossBattleObject = battleField.FindBoss();
+ if (bossBattleObject == null || bossBattleObject.teamHero == null)
+ return detailName;
+ detailName = bossBattleObject.teamHero.name;
+ break;
+ // 鏁屾柟鍚嶅瓧鏄鏂圭帺瀹跺悕瀛�
+ case BattleConst.ArenaBattleField:
+ if (!ArenaManager.Instance.TryGetPlayerInfo(ArenaManager.Instance.atkPlayerId, out ArenaMatchInfo info) || info == null)
+ return detailName;
+ detailName = info.PlayerName;
+ break;
+ }
+ return detailName;
+ }
+
+ public BattleDetailMsg ParserBattleDetail(JsonData jsonMsg)
+ {
+ if (jsonMsg == null)
+ return null;
+ try
+ {
+ string jsonStr = jsonMsg.ToJson();
+ BattleDetailMsg result = JsonMapper.ToObject<BattleDetailMsg>(jsonStr);
+ return result;
+ }
+ catch (Exception ex)
+ {
+ Debug.Log("瑙f瀽鎴樻枟鏁版嵁寮傚父: " + ex.Message);
+ }
+ return null;
+ }
+
+ public List<BattleDetailHeroInfo> GetHeroInfo(BattleDetailMsg msg, bool isMyStart, string battleName, bool isWin)
+ {
+ if (msg == null || msg.statInfo.IsNullOrEmpty())
+ return null;
+
+ int winFaction = msg.winFaction; // 鑾疯儨闃佃惀
+ Dictionary<string, Dictionary<string, BattleDetailHeroInfo>> lineupInfo = new Dictionary<string, Dictionary<string, BattleDetailHeroInfo>>();
+ string statInfoKey = string.Empty;
+
+ if (isMyStart)
+ {
+ // 澶╁瓙鎴樺満鐜╁涓嶄細杈�
+ if (battleName == BattleConst.TianziBillboradBattleField)
+ {
+ statInfoKey = isWin ? msg.statInfo.Keys.FirstOrDefault(key => key != winFaction.ToString()) : winFaction.ToString();
+ }
+ else
+ {
+ statInfoKey = isWin ? winFaction.ToString() : msg.statInfo.Keys.FirstOrDefault(key => key != winFaction.ToString());
+ }
+ }
+
+ if (!msg.statInfo.TryGetValue(statInfoKey, out lineupInfo) || lineupInfo.IsNullOrEmpty())
+ return null;
+ var lineupInfoKeyList = lineupInfo.Keys.ToList();
+ if (lineupInfoKeyList.IsNullOrEmpty())
+ return null;
+
+ // 鐩墠鍙彇绗竴涓樀瀹圭殑淇℃伅
+ string key = lineupInfoKeyList[0];
+ if (!lineupInfo.TryGetValue(key, out var heroInfoDict) || heroInfoDict.IsNullOrEmpty())
+ return null;
+
+ var heroInfoKeyList = heroInfoDict.Keys.ToList();
+ heroInfoKeyList = heroInfoKeyList
+ .OrderBy(key => int.Parse(key)) // 灏嗗瓧绗︿覆閿В鏋愪负鏁存暟鍚庤繘琛屾帓搴�
+ .ToList(); // 灏嗘帓搴忓悗鐨勭粨鏋滆浆鍥� List<string>
+
+ List<BattleDetailHeroInfo> res = new List<BattleDetailHeroInfo>();
+ foreach (var heroInfoKey in heroInfoKeyList)
+ {
+ if (!heroInfoDict.TryGetValue(heroInfoKey, out var heroInfo))
+ continue;
+ res.Add(heroInfo);
+ }
+ return res;
+ }
+
+ #endregion
}
+public class BattleDetailMsg
+{
+ public List<BattleDetailRewardItem> itemInfo;
+
+ public int winFaction;
+
+ // 瀵瑰簲 "statInfo"
+ // 缁撴瀯锛�<闃佃惀缂栧彿, <闃靛缂栧彿, <绔欎綅缂栧彿, 姝﹀皢鏁版嵁>>>
+ // 娉ㄦ剰锛欽SON涓殑閿� "1", "2" 鏄瓧绗︿覆锛屾墍浠ュ瓧鍏� Key 鐢� string
+ public Dictionary<string, Dictionary<string, Dictionary<string, BattleDetailHeroInfo>>> statInfo;
+}
+public class BattleDetailHeroInfo
+{
+ public int ObjID; // 瀹炰緥ID
+ public int HeroID; // 鐜╁闃靛姝﹀皢ID
+ public int NPCID; // NPCID
+ public int LV; // 姝﹀皢绛夌骇
+ public int Star; // 姝﹀皢鏄熺骇
+ public int Skin; // 姝﹀皢鐨偆ID
+ public ulong DefHurt; // 鎬绘壙浼�
+ public ulong CureHP; // 鎬绘不鐤�
+ public ulong AtkHurt; // 鎬昏緭鍑�
+ public int Dead; // 鏄惁闃典骸
+}
+
+public class BattleDetailRewardItem
+{
+ public int ItemID;
+ public int Count;
+}
\ No newline at end of file
--
Gitblit v1.8.0