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/CrossServerOneVsOneModel.cs |   95 ++++++++++++++++++++++++++++-------------------
 1 files changed, 57 insertions(+), 38 deletions(-)

diff --git a/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs b/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
index 24b1fcc..01b27ee 100644
--- a/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
+++ b/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
@@ -10,7 +10,7 @@
 {
     
     
-    public class CrossServerOneVsOneModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, ISwitchAccount, IPlayerLoginOk
+    public class CrossServerOneVsOneModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk
     {
         public string PkResultLocalSaveKey { get; private set; }
         public List<CrossServerOneVsOnePkResult> localSaveResults { get; private set; }
@@ -18,29 +18,20 @@
         public event Action UpdateDayAwardsEvent;
         public const int CrossServerDataMapId = 32010;
         DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
-        public bool isClickCoolTime { get; set; }
-        public event Action UpdateMatchStateEvent;
-        private bool _isMatching;
-        public bool IsMatching {
-            get { return _isMatching; }
-            set {
-                _isMatching = value;
-                if (UpdateMatchStateEvent != null)
-                {
-                    UpdateMatchStateEvent();
-                }
-            }
-        }
-        public DateTime matchStartTime { get; set; }
+
         public DateTime roundEndTime { get; private set; }
         StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
         public string LocalSaveThirdTypeKey = string.Empty;
         private int recordDataMapId;
         private int loadSecond;
 
+        // 璺ㄦ湇绔炴妧鍦烘敼鎴愬尮閰�3涓璞★紝杩涜閫夋嫨鎸戞垬
+        public List<HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer> matchPlayers = new List<HC001_tagGCCrossRealmPKMatchOK.tagGCCrossRealmPKMatchPlayer>();
+        public event Action UpdateMatchPlayersEvent;
+        public bool loginQueryMatch = false;
+
         public override void Init()
         {
-            IsMatching = false;
             ParseFuncConfig();
             SetHonorRedpoint();
         }
@@ -59,6 +50,7 @@
             dungeonModel.updateMissionEvent -= UpdateFBHelp;
             rewardModel.CrossRealmPKAwardStateUpdate -= UpdateDayAwardState;
             CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdateDayAwardState;
+            TimeMgr.Instance.OnDayEvent -= OnDay;
             InitData();
         }
 
@@ -70,10 +62,6 @@
             GetLocalSaveData();
         }
 
-        public void OnSwitchAccount()
-        {
-            IsMatching = false;
-        }
 
         public void OnPlayerLoginOk()
         {
@@ -88,13 +76,9 @@
             rewardModel.CrossRealmPKAwardStateUpdate += UpdateDayAwardState;
             CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdateDayAwardState;
             dungeonModel.updateMissionEvent += UpdateFBHelp;
+            TimeMgr.Instance.OnDayEvent += OnDay;
             UpdateServerOpenDay();
             UpdateDayAwardState();
-            if (IsMatching && CrossServerOneVsOnePKSeason.Instance.InOpenTime())
-            {
-                SendCrossMatch(1);
-            }
-
             UpdateCrossDayAwardsRedpoint();
             UpdateCrossMatchRedpoint();
             UpdateCanBuyRedpoint();
@@ -111,6 +95,11 @@
             CrossServerOneVsOnePlayerInfo.Instance.InitData();
             pkResultInfo = new CrossServerOneVsOnePkResult();
             oneVsOneHistoryDict.Clear();
+        }
+
+        void OnDay()
+        {
+            loginQueryMatch = false;
         }
 
         private void UpdateSecond()
@@ -143,13 +132,6 @@
         private void UpdateMinute()
         {
             UpdateCrossMatchRedpoint();
-            if (!IsMatching) return;
-
-            if (!CrossServerOneVsOnePKSeason.Instance.isSatisfyMatch)
-            {
-                IsMatching = false;
-                SendCrossMatch(0);
-            }
         }
 
         public void UpdateDayAwardState()
@@ -292,12 +274,23 @@
         }
 
         #region 琛ㄦ暟鎹�
-        public int freeMaxMatchNum { get; private set; } //姣忔棩鍏嶈垂鍖归厤娆℃暟
-        public int buyMaxMatchNum { get; private set; } //姣忔棩鍙喘涔版鏁�
-        public string priceFormula { get; private set; } //璐拱鍖归厤娆℃暟闇�瑕佷环鏍煎叕寮�
+        //鎸戞垬
+        public int freeMaxMatchNum { get; private set; } //姣忔棩鍏嶈垂鍖归厤娆℃暟(鎸戞垬)
+        public int buyMaxMatchNum { get; private set; } //姣忔棩鍙喘涔版鏁�(鎸戞垬)
+        public string priceFormula { get; private set; } //璐拱鍖归厤娆℃暟闇�瑕佷环鏍煎叕寮�(鎸戞垬)
+
+        //鍒锋柊鍖归厤
+        public int freeMaxMatchRefreshNum { get; private set; } //姣忔棩鍏嶈垂鍒锋柊鍖归厤娆℃暟(鍒锋柊)
+        public int buyMaxMatchRefreshNum { get; private set; } //姣忔棩鍙喘涔板埛鏂版鏁�(鍒锋柊)
+        public string priceRefreshFormula { get; private set; } //璐拱鍒锋柊鍖归厤娆℃暟闇�瑕佷环鏍煎叕寮�(鍒锋柊)
+        public int refreshMoneyType { get; private set; } //鍒锋柊鍖归厤娆℃暟娑堣�楄揣甯佺被鍨�(鍒锋柊)
+
+        public int[] winConstScoreArr { get; private set; } //鑳滃埄鍥哄畾绉垎
         public string winStreakScoreFormula { get; private set; } //杩炶儨绉垎鍏紡
         public List<AwardType> dayAwardTypelist { get; private set; }
         public int afterOpenDayOpenCross { get; private set; }
+
+
         private void ParseFuncConfig()
         {
             var CrossRealmPKAward = FuncConfigConfig.Get("CrossRealmPKAward");
@@ -367,7 +360,14 @@
             buyMaxMatchNum = int.Parse(CrossRealmPKMatchCount.Numerical2);
             priceFormula = CrossRealmPKMatchCount.Numerical3;
 
-            var CrossRealmPKScore = FuncConfigConfig.Get("CrossRealmPKScore");
+            var CrossRealmPKRefreshCount = FuncConfigConfig.Get("CrossRealmPKMatchRefresh");
+            freeMaxMatchRefreshNum = int.Parse(CrossRealmPKRefreshCount.Numerical1);
+            buyMaxMatchRefreshNum = int.Parse(CrossRealmPKRefreshCount.Numerical2);
+            priceRefreshFormula = CrossRealmPKRefreshCount.Numerical3;
+            refreshMoneyType = int.Parse(CrossRealmPKRefreshCount.Numerical4);
+
+            var CrossRealmPKScore = FuncConfigConfig.Get("CrossRealmPKScore2");
+            winConstScoreArr = JsonMapper.ToObject<int[]>(CrossRealmPKScore.Numerical1);
             winStreakScoreFormula = CrossRealmPKScore.Numerical3;
 
             var CrossRealmCfg = FuncConfigConfig.Get("CrossRealmCfg");
@@ -449,14 +449,33 @@
             }
         }
 
+        public void UpdateOneVSOneMatch(HC001_tagGCCrossRealmPKMatchOK package)
+        {
+            matchPlayers.Clear();
+            for (int i = 0; i < package.MatchPlayerCount; i++)
+            {
+                matchPlayers.Add(package.MatchPlayer[i]);
+                //鏈嶅姟绔病鏈変富鍔ㄦ帹閫佺殑璇濓紝杩欓噷闇�瑕佽姹備竴娆$帺瀹剁紦瀛樻暟鎹�
+            }
+
+            UpdateMatchPlayersEvent?.Invoke();
+        }
+
+
         BuffModel buffDatas { get { return ModelCenter.Instance.GetModel<BuffModel>(); } }
         /// <summary>
-        ///0-鍙栨秷鍖归厤; 1-杩涜鍖归厤
+        /// 0-鏌ヨ鍖归厤锛�1-鍒锋柊鍖归厤
         /// </summary>
         /// <param name="type"></param>
         public void SendCrossMatch(int type)
         {
-            if (type == 1 && TryGetMatchTip()) return;
+            if (type == 0)
+            {
+                if (loginQueryMatch)
+                    return;
+                else
+                    loginQueryMatch = true;
+            }
 
             var match = new CC101_tagCMCrossRealmPKMatch();
             match.Type = (byte)type;

--
Gitblit v1.8.0