From bf9d063af5655f93db17578cfe52d8abbb60c596 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 03 十二月 2025 17:42:40 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/Settlement/BattleSettlementManager.cs |  135 +++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 129 insertions(+), 6 deletions(-)

diff --git a/Main/System/Settlement/BattleSettlementManager.cs b/Main/System/Settlement/BattleSettlementManager.cs
index 6f29276..169607e 100644
--- a/Main/System/Settlement/BattleSettlementManager.cs
+++ b/Main/System/Settlement/BattleSettlementManager.cs
@@ -1,13 +1,18 @@
 锘�
 
+using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Text;
 using LitJson;
+using UnityEngine;
 
 public partial class BattleSettlementManager : GameSystemManager<BattleSettlementManager>
 {
     //缁撶畻鍚庨渶娓呴櫎 <battleName,JsonData>
     Dictionary<string, JsonData> battleSettlementDic = new Dictionary<string, JsonData>();
+    Dictionary<string, JsonData> battleAwardDic = new Dictionary<string, JsonData>();   //B431 鍙﹀閫氭姤濂栧姳
+
 
     // public string notifyGuid = string.Empty;
 
@@ -28,6 +33,7 @@
     public void OnBeforePlayerDataInitialize()
     {
         battleSettlementDic.Clear();
+        battleAwardDic.Clear();
     }
 
     public void AddPop(string battleName, int result)
@@ -35,13 +41,13 @@
         bool isWin = result == 1;
         switch (battleName)
         {
-            case "ArenaBattleField":
+            case BattleConst.ArenaBattleField:
                 PopupWindowsProcessor.Instance.Add(isWin ? "ArenaBattleVictoryWin" : "ArenaBattleFailWin", false);
                 break;
-            case "BoneBattleField":
+            case BattleConst.BoneBattleField:
                 PopupWindowsProcessor.Instance.Add(isWin ? "BoneBattleVictoryWin" : "BoneBattleFailWin", false);
                 break;
-            case "TianziBillboradBattleField":
+            case BattleConst.TianziBillboradBattleField:
                 PopupWindowsProcessor.Instance.Add("TianziBillboradVictoryWin", false);
                 break;
             default:
@@ -55,7 +61,7 @@
         bool isWin = result == 1;
         switch (battleName)
         {
-            case "ArenaBattleField":
+            case BattleConst.ArenaBattleField:
                 if (isWin)
                 {
                     UIManager.Instance.OpenWindow<ArenaBattleVictoryWin>();
@@ -65,7 +71,7 @@
                     UIManager.Instance.OpenWindow<ArenaBattleFailWin>();
                 }
                 break;
-            case "BoneBattleField":
+            case BattleConst.BoneBattleField:
                 if (isWin)
                 {
                     UIManager.Instance.OpenWindow<BoneBattleVictoryWin>();
@@ -75,7 +81,7 @@
                     UIManager.Instance.OpenWindow<BoneBattleFailWin>();
                 }
                 break;
-            case "TianziBillboradBattleField":
+            case BattleConst.TianziBillboradBattleField:
                 TianziBillboradManager.Instance.isSweepVictory = false;
                 UIManager.Instance.OpenWindow<TianziBillboradVictoryWin>();
                 break;
@@ -107,6 +113,15 @@
             return;
         var battleName = battle.ToString();
         battleSettlementDic[battleName] = _data;
+        if (battleAwardDic.ContainsKey(battleName))
+        {
+            //鍚堝苟鎴樻姤鍜岀粨绠楁暟鎹�
+            JsonData extendData = battleAwardDic[battleName];
+            foreach (var key in extendData.Keys)
+            {
+                _data[key] = extendData[key];
+            }
+        }
 
         string activeBattleName = BattleManager.Instance.GetActiveBattleName();
 
@@ -129,6 +144,7 @@
     public void WinShowOver(string battleName)
     {
         battleSettlementDic.Remove(battleName);
+        battleAwardDic.Remove(battleName);
 
         var battle = BattleManager.Instance.GetActiveBattleFieldByName(battleName);
         if (battle != null)
@@ -143,5 +159,112 @@
         }
         return battleSettlementDic[battleName];
     }
+
+    public JsonData GetBattleSettlementByMapID(int mapID)
+    {
+        if (BattleConst.mapIDToBattleNameDic.ContainsKey(mapID))
+        {
+            return GetBattleSettlement(BattleConst.mapIDToBattleNameDic[mapID]);
+        }
+        return null;
+    }
+
+    public void UpdateSettlementData(HB431_tagSCTurnFightRet netData)
+    {
+        // 鍏堣幏寰楁垬鏂楃粨鏋滐紝濡傛灉闇�瑕佸睍绀烘垬鏂楋紝鍒欒姹傛垬鎶� 锛堝鏈変簺璺宠繃鎴樻枟琛ㄧ幇鐩存帴缁撶畻锛�
+        bool needBattleData = true;
+        var guid = UIHelper.ServerStringTrim(netData.GUID);
+        var mapID = (int)netData.MapID;
+        JsonData extendData2 = JsonMapper.ToObject(netData.AwardMsg);
+
+        battleAwardDic[BattleConst.mapIDToBattleNameDic[mapID]] = extendData2;
+
+        if (needBattleData)
+        {
+            Debug.Log("鎴樻枟鏃跺簭 鏀跺埌B431 骞惰姹備笅杞芥垬鎶�" + Time.time);
+            var date = UIHelper.ServerStringTrim(netData.PathDate);
+            RequestTurnFightData(guid, date, mapID);
+        }
+        else
+        {
+            JsonData extendData1 = JsonMapper.ToObject(netData.BatStatMsg);
+
+            JsonData turnFightStateData = new JsonData();
+            foreach (var key in extendData1.Keys)
+            {
+                turnFightStateData[key] = extendData1[key];
+            }
+            foreach (var key in extendData2.Keys)
+            {
+                turnFightStateData[key] = extendData2[key];
+            }
+
+            EventBroadcast.Instance.Broadcast<string, JsonData>(EventName.BATTLE_END, guid, turnFightStateData);
+        }
+
+    }
+    public void RequestTurnFightData(string guid, string date, int mapID)
+    {
+        //mobile.secondworld.net.cn:53080\S9006\20251202\3042602\5b11338f-cf2c-11f0-a0a0-000c29b22418.tfr
+        var serverID = UIHelper.GetServerIDByAccount(PlayerDatas.Instance.baseData.AccID);
+        
+        var url = ServerListCenter.Instance.GetServerUrl(serverID);
+        string assetVersionUrl = string.Empty;
+        
+        if (string.IsNullOrEmpty(date))
+        {
+            //鍏叡鎴樻姤  璺緞锛� C:\TurnFightReport\S鏈嶅姟鍣ㄧ紪鍙穃鍔熻兘鍦板浘ID\鎴樻姤GUID
+            assetVersionUrl = $"{url}/S{serverID}/{mapID}/{guid}.tfr";
+        }
+        else
+        {
+            //涓汉鎴樻姤  璺緞锛� C:\TurnFightReport\S鏈嶅姟鍣ㄧ紪鍙穃鏃ユ湡\鐜╁ID\鍔熻兘鍦板浘ID\鎴樻姤GUID
+            assetVersionUrl = $"{url}/S{serverID}/{date}/{PlayerDatas.Instance.baseData.PlayerID}/{mapID}/{guid}.tfr";
+        }
+
+        HttpRequest.Instance.UnityWebRequestTurnFightGet(assetVersionUrl, guid, 3, OnGetTurnFightData);
+    }
+
+    void OnGetTurnFightData(bool _ok, string guid, byte[] _result)
+    {
+        if (_ok)
+        {
+            ReadTurnFightInfo(_result);
+        }
+    }
+
+    //鎴樻姤瀛樺偍鐨勬槸B430灏佸寘锛屾墍浠ラ渶瑕佽浆鍙態430灏佸寘
+    private void ReadTurnFightInfo(byte[] vBytes)
+    {
+        try
+        {
+            byte[] vPackBytes = vBytes;
+            GameNetPackBasic vNetpack;
+            byte[] vCmdBytes = new byte[2];
+            ServerType socketType = ServerType.B430;
+
+            Array.Copy(vPackBytes, 0, vCmdBytes, 0, 2);
+            var cmd = (ushort)((ushort)(vCmdBytes[0] << 8) + vCmdBytes[1]);
+
+            // 澶勭悊涓诲伐绋嬬殑灏佸寘
+            if (PackageRegedit.Contain(cmd))
+            {
+                vNetpack = PackageRegedit.TransPack(socketType, cmd, vPackBytes);
+                if (vNetpack != null)
+                {
+                    GameNetSystem.Instance.PushPackage(vNetpack, socketType);
+                }
+            }
+
+        }
+        catch (Exception ex)
+        {
+            Debug.LogErrorFormat("ReadTurnFightInfo 鍒嗘瀽鎴樻姤寮傚父锛歿0}", ex);
+        }
+
+    }
+
+
+
 }
 

--
Gitblit v1.8.0