From ad3f66509d2e61d8dc6630558153b71b774df20c Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 21 二月 2025 01:40:56 +0800
Subject: [PATCH] 0312 10349 【越南】【英文】【BT】【砍树】跨服竞技场优化 - 第一版

---
 System/CrossServerOneVsOne/CrossServerOneVsOneRewardModel.cs |  175 ++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 98 insertions(+), 77 deletions(-)

diff --git a/System/CrossServerOneVsOne/CrossServerOneVsOneRewardModel.cs b/System/CrossServerOneVsOne/CrossServerOneVsOneRewardModel.cs
index 820c0d2..786efcf 100644
--- a/System/CrossServerOneVsOne/CrossServerOneVsOneRewardModel.cs
+++ b/System/CrossServerOneVsOne/CrossServerOneVsOneRewardModel.cs
@@ -4,6 +4,7 @@
 //--------------------------------------------------------
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using vnxbqy.UI;
 //璺ㄦ湇PK濂栧姳淇℃伅
 
@@ -61,9 +62,10 @@
 public class CrossServerOneVsOneRewardModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
 {
     CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
+    RankModel rankModel { get { return ModelCenter.Instance.GetModel<RankModel>(); } }
     public Dictionary<int, SeasonAwardClass> SegmentRewardDic = new Dictionary<int, SeasonAwardClass>();//娈典綅濂栧姳
     public ImpactRankModel.RankAwardItem SeasonRewardDic = new ImpactRankModel.RankAwardItem();//璧涘濂栧姳
-    public Dictionary<int, List<Item_Class>> SeasonRewardConfigDic = new Dictionary<int, List<Item_Class>>(); //璧涘濂栧姳
+    public Dictionary<int, List<Item_Class>> SeasonRewardConfigDic = new Dictionary<int, List<Item_Class>>(); //璧涘鐨勬浣嶅鍔憋紙搴熷純锛�
     public Dictionary<ZoneRankingStruct, Dictionary<int, RankingInformationClass>> ZoneRankingDic = new Dictionary<ZoneRankingStruct, Dictionary<int, RankingInformationClass>>();
     private List<CrossRealmPKDanAwardConfig> CrossRealmPKDanAwardList = new List<CrossRealmPKDanAwardConfig>();
     public Action CrossRealmPKAwardStateUpdate;//棰嗗彇濂栧姳鍒锋柊
@@ -85,12 +87,20 @@
     public string ZoneName = string.Empty;//璧涘尯鍚�
     private int currentId = 0;//鑾峰彇褰撳墠璧涘尯ID
     private string crossZoneName = string.Empty;//璧涘尯缂栧彿
+    public const int rankType = 165;
+
+
     public override void Init()
     {
 
         var config = FuncConfigConfig.Get("CrossServerIcon").Numerical1;
         MianOpenLV = int.Parse(config);
         CrossRealmPKDanAwardList = CrossRealmPKDanAwardConfig.GetValues();
+
+        rankModel.onRankRefresh -= OnRefreshRankList;
+        rankModel.onRankRefresh += OnRefreshRankList;
+        rankModel.onMyRankRefresh -= RankModel_onMyRankRefresh;
+        rankModel.onMyRankRefresh += RankModel_onMyRankRefresh;
     }
 
     public void OnBeforePlayerDataInitialize()
@@ -117,10 +127,9 @@
         GetZoneName();
         RedPointSeg();
         RedPointSea();
-        bool isbool = IsAwardState(CrossRealmPKAwardStateEnum.SeasonAwardState, -1);
         if (CrossServerOneVsOnePKSeason.Instance.SeasonState == 2)
         {
-            ViewCrossPKBillboard(CrossServerOneVsOnePKSeason.Instance.ZoneID, CrossServerOneVsOnePKSeason.Instance.SeasonID);//鍏充簬璧涘鏌ヨ
+            ViewCrossPKBillboard(CrossServerOneVsOnePKSeason.Instance.ZoneID, CrossServerOneVsOnePKSeason.Instance.SeasonID, true);//鍏充簬璧涘鏌ヨ
         }
     }
 
@@ -137,6 +146,24 @@
 
 
     }
+
+
+    void OnRefreshRankList(int type)
+    {
+        if (type % 1000 == rankType)
+        {
+            CrossRealmPKBillboardInfo(type);
+        }
+    }
+
+    private void RankModel_onMyRankRefresh(int type)
+    {
+        if (type % 1000 == rankType)
+        {
+            CrossRealmPKBillboardInfo(type);
+        }
+    }
+
 
     public override void UnInit()
     {
@@ -169,9 +196,8 @@
             WindowCenter.Instance.Open<CrossServerSettlementWin>();
         }
     }
-    public void GetSeasonAward()//娈典綅濂栧姳鏁版嵁鑾峰彇
+    public void GetSeasonAward()//璧涘濂栧姳鏁版嵁鑾峰彇
     {
-
         var seasonID = CrossServerOneVsOnePKSeason.Instance.SeasonID;
         var configPK = CrossRealmPKDanAwardList;
         var result2 = false;
@@ -186,7 +212,6 @@
                     result2 = true;
                 }
             }
-
         }
         if (CrossServerOneVsOnePKSeason.Instance.CrossZoneName != null && result2)
         {
@@ -236,7 +261,7 @@
         }
         currentId = seasonID;
     }
-    public void GetSegmentReward()//璧涘濂栧姳
+    public void GetSegmentReward()//娈典綅濂栧姳
     {
         var seasonID = CrossServerOneVsOnePKSeason.Instance.SeasonID;
         var configPK = CrossRealmPKDanAwardList;
@@ -261,7 +286,7 @@
         {
             seasonID += 1;
         }
-        if (currentId == seasonID && SeasonRewardConfigDic.Count != 0)
+        if (currentId == seasonID && SeasonRewardDic.AwardDic.Count != 0)
         {
             return;
         }
@@ -285,34 +310,33 @@
                 }
                 SeasonRewardDic = _award;
             }
-
         }
         //---
-        SeasonRewardConfigDic.Clear();
+        //SeasonRewardConfigDic.Clear();
 
-        for (int i = 0; i < configPK.Count; i++)
-        {
-            var _config = configPK[i];
-            bool result = crossZoneName.Equals(_config.CrossZoneName);
-            if (!SeasonRewardConfigDic.ContainsKey(_config.DanLV) && _config.SeasonID == seasonID && result)
-            {
-                var _jsonDataC = LitJson.JsonMapper.ToObject(_config.SeasonAwardList);
-                List<Item_Class> itemClassList = new List<Item_Class>();
-                for (int j = 0; j < _jsonDataC.Count; j++)
-                {
-                    Item_Class itemClass = new Item_Class();
-                    itemClass.ItemId = int.Parse((_jsonDataC[j][0]).ToString());
-                    itemClass.ItemNumber = int.Parse((_jsonDataC[j][1]).ToString());
-                    itemClass.Isbind = int.Parse((_jsonDataC[j][2]).ToString());
-                    itemClassList.Add(itemClass);
-                }
-                if (itemClassList.Count <= 0)
-                {
-                    continue;
-                }
-                SeasonRewardConfigDic.Add(_config.DanLV, itemClassList);
-            }
-        }
+        //for (int i = 0; i < configPK.Count; i++)
+        //{
+        //    var _config = configPK[i];
+        //    bool result = crossZoneName.Equals(_config.CrossZoneName);
+        //    if (!SeasonRewardConfigDic.ContainsKey(_config.DanLV) && _config.SeasonID == seasonID && result)
+        //    {
+        //        var _jsonDataC = LitJson.JsonMapper.ToObject(_config.SeasonAwardList);
+        //        List<Item_Class> itemClassList = new List<Item_Class>();
+        //        for (int j = 0; j < _jsonDataC.Count; j++)
+        //        {
+        //            Item_Class itemClass = new Item_Class();
+        //            itemClass.ItemId = int.Parse((_jsonDataC[j][0]).ToString());
+        //            itemClass.ItemNumber = int.Parse((_jsonDataC[j][1]).ToString());
+        //            itemClass.Isbind = int.Parse((_jsonDataC[j][2]).ToString());
+        //            itemClassList.Add(itemClass);
+        //        }
+        //        if (itemClassList.Count <= 0)
+        //        {
+        //            continue;
+        //        }
+        //        SeasonRewardConfigDic.Add(_config.DanLV, itemClassList);
+        //    }
+        //}
         currentId = seasonID;
     }
     public void CrossRealmPKAwardState(HC102_tagMCCrossRealmPKAwardState info)//c102璺ㄦ湇PK鐜╁濂栧姳璁板綍
@@ -369,12 +393,12 @@
         GameNetSystem.Instance.SendInfo(c103);
     }
 
-    public void ViewCrossPKBillboard(int ZoneID, int SeasonID)//(璧涘尯锛岃禌瀛�) 鏌ョ湅璺ㄦ湇绔炴妧鍦鸿禌瀛f帓琛屾 
+    public void ViewCrossPKBillboard(int ZoneID, int SeasonID, bool isQuerySelf = false)//(璧涘尯锛岃禌瀛�) 鏌ョ湅璺ㄦ湇绔炴妧鍦鸿禌瀛f帓琛屾 
     {
         ZoneRankingStruct zoneRanking = new ZoneRankingStruct();
         zoneRanking.ZoneID = ZoneID;
         zoneRanking.SeasonID = SeasonID;
-        int seasonIDNow = CrossServerOneVsOnePKSeason.Instance.SeasonID;
+        //int seasonIDNow = CrossServerOneVsOnePKSeason.Instance.SeasonID;
         if (ZoneRankingDic.ContainsKey(zoneRanking))
         {
             if (RankInformationUpdate != null)
@@ -382,56 +406,53 @@
                 RankInformationUpdate();
             }
         }
-        CC001_tagCGViewCrossPKBillboard c001 = new CC001_tagCGViewCrossPKBillboard();
-        c001.ZoneID = (byte)ZoneID;
-        c001.SeasonID = (byte)SeasonID;
-        GameNetSystem.Instance.SendInfo(c001);
+        //CC001_tagCGViewCrossPKBillboard c001 = new CC001_tagCGViewCrossPKBillboard();
+        //c001.ZoneID = (byte)ZoneID;
+        //c001.SeasonID = (byte)SeasonID;
+        //GameNetSystem.Instance.SendInfo(c001);
+        if (isQuerySelf)
+            rankModel.QueryCrossRank(rankType, ZoneID, watchID: (int)PlayerDatas.Instance.baseData.PlayerID, forceQuery: true, groupValue2:SeasonID);
+        else
+        {
+            rankModel.ResetQueryParam();
+            rankModel.QueryCrossRank(rankType, ZoneID, groupValue2: SeasonID);
+        }
     }
 
-    public void CrossRealmPKBillboardInfo(HC005_tagGCCrossRealmPKBillboardInfo info)//璺ㄦ湇PK璧涘鎺掕姒�
+    public void CrossRealmPKBillboardInfo(int type)//璺ㄦ湇PK璧涘鎺掕姒�
     {
+        var datas = rankModel.GetRankPageDatas(type);
+
         Dictionary<int, RankingInformationClass> RankInformationDic = new Dictionary<int, RankingInformationClass>();
-        if (info.Count > 0)
+        ZoneRankingStruct zoneRank = new ZoneRankingStruct();
+        if (datas.Count > 0)
         {
-            for (int i = 0; i < info.Count; i++)
+            var keys = datas.Keys.ToList();
+            for (int i = 0; i < keys.Count; i++)
             {
-                if (!RankInformationDic.ContainsKey(i))
-                {
-                    RankingInformationClass RankingInformation = new RankingInformationClass();
-                    RankingInformation.PlayerID = (int)info.PKBillboardList[i].PlayerID;
-                    RankingInformation.PlayerName = info.PKBillboardList[i].PlayerName;
-                    RankingInformation.Job = info.PKBillboardList[i].Job;
-                    RankingInformation.Face = (int)info.PKBillboardList[i].Face;
-                    RankingInformation.FacePic = (int)info.PKBillboardList[i].FacePic;
-                    RankingInformation.Power = (int)info.PKBillboardList[i].FightPower;
-                    RankingInformation.Realm = (int)info.PKBillboardList[i].RealmLV;
-                    RankingInformation.DanLv = (int)info.PKBillboardList[i].DanLV;
-                    RankingInformation.PkScore = (int)info.PKBillboardList[i].PKScore;
-                    RankInformationDic.Add(i, RankingInformation);
-                    if (PlayerDatas.Instance.baseData.PlayerID == info.PKBillboardList[i].PlayerID)
-                    {
-                        MyRank = i;
-                    }
-                }
-                else
-                {
-                    RankingInformationClass RankingInformation = new RankingInformationClass();
-                    RankingInformation.PlayerID = (int)info.PKBillboardList[i].PlayerID;
-                    RankingInformation.PlayerName = info.PKBillboardList[i].PlayerName;
-                    RankingInformation.Job = info.PKBillboardList[i].Job;
-                    RankingInformation.Face = (int)info.PKBillboardList[i].Face;
-                    RankingInformation.FacePic = (int)info.PKBillboardList[i].FacePic;
-                    RankingInformation.Power = (int)info.PKBillboardList[i].FightPower;
-                    RankingInformation.Realm = (int)info.PKBillboardList[i].RealmLV;
-                    RankingInformation.DanLv = (int)info.PKBillboardList[i].DanLV;
-                    RankingInformation.PkScore = (int)info.PKBillboardList[i].PKScore;
-                    RankInformationDic[i] = RankingInformation;
-                }
+                int index = keys[i];
+                var info = datas[index];
+                RankingInformationClass RankingInformation = new RankingInformationClass();
+                RankingInformation.PlayerID = (int)info.id;
+                RankingInformation.PlayerName = info.name1;
+                RankingInformation.Job = info.subType;
+                RankingInformation.Face = (int)info.value3;
+                RankingInformation.FacePic = (int)info.value4;
+                RankingInformation.Power = 0;
+                RankingInformation.Realm = (int)info.value1;
+                RankingInformation.DanLv = (int)info.value2;
+                RankingInformation.PkScore = (int)info.cmpValue;
+                RankInformationDic[index] = RankingInformation;
             }
         }
-        ZoneRankingStruct zoneRank = new ZoneRankingStruct();
-        zoneRank.ZoneID = info.ZoneID;
-        zoneRank.SeasonID = info.SeasonID;
+
+        var myData = rankModel.GetMyRank(type);
+        MyRank = myData != null ? myData.index : -1;
+
+        //璧涘尯3浣�+璧涘3浣�+鎺掕姒滅被鍨�3浣�
+        zoneRank.ZoneID = type / 1000000;
+        zoneRank.SeasonID = type/1000 % 1000;
+
         if (!ZoneRankingDic.ContainsKey(zoneRank))
         {
             ZoneRankingDic.Add(zoneRank, RankInformationDic);

--
Gitblit v1.8.0