From c8a1770aae86bf00ebfdc89734e3d55866e0476b Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期三, 19 十二月 2018 15:06:40 +0800
Subject: [PATCH] 5398  【前端】【1.4】跨服竞技场开发

---
 System/CrossServerOneVsOne/CrossServerModel.cs |   77 +++++++++++++++++++++++++++++++++++++-
 1 files changed, 75 insertions(+), 2 deletions(-)

diff --git a/System/CrossServerOneVsOne/CrossServerModel.cs b/System/CrossServerOneVsOne/CrossServerModel.cs
index 5121c14..491cca5 100644
--- a/System/CrossServerOneVsOne/CrossServerModel.cs
+++ b/System/CrossServerOneVsOne/CrossServerModel.cs
@@ -11,6 +11,9 @@
     [XLua.LuaCallCSharp]
     public class CrossServerModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk
     {
+        public string PkResultLocalSaveKey { get; private set; }
+        public List<PkResultInfo> localSaveResults { get; private set; }
+
         public override void Init()
         {
             ParseFuncConfig();
@@ -23,7 +26,9 @@
 
         public void OnAfterPlayerDataInitialize()
         {
-
+            int playerId = (int)PlayerDatas.Instance.baseData.PlayerID;
+            PkResultLocalSaveKey = StringUtility.Contact("PkResultLocalSaveKey", playerId);
+            GetLocalSaveData();
         }
 
         public void OnPlayerLoginOk()
@@ -64,6 +69,17 @@
             return Equation.Instance.Eval<int>(priceFormula);
         }
 
+        public bool TryGetWinStreakScore(out int score)
+        {
+            score = 0;
+            if (pkResultInfo.WinStreak < 2) return false;
+
+            Equation.Instance.Clear();
+            Equation.Instance.AddKeyValue("cWinCount",pkResultInfo.WinStreak);
+            score = Equation.Instance.Eval<int>(winStreakScoreFormula);
+            return true;
+        }
+
         public List<AwardType> sortDayAwardslist = new List<AwardType>();
         public void SortDayAwardsList()
         {
@@ -89,6 +105,7 @@
         public int freeMaxMatchNum { get; private set; } //姣忔棩鍏嶈垂鍖归厤娆℃暟
         public int buyMaxMatchNum { get; private set; } //姣忔棩鍙喘涔版鏁�
         public string priceFormula { get;private set;} //璐拱鍖归厤娆℃暟闇�瑕佷环鏍煎叕寮�
+        public string winStreakScoreFormula { get; private set; } //杩炶儨绉垎鍏紡
         public List<AwardType> dayAwardTypelist { get; private set; }
         private void ParseFuncConfig()
         {
@@ -152,6 +169,9 @@
             freeMaxMatchNum = int.Parse(CrossRealmPKMatchCount.Numerical1);
             buyMaxMatchNum = int.Parse(CrossRealmPKMatchCount.Numerical2);
             priceFormula = CrossRealmPKMatchCount.Numerical3;
+
+            var CrossRealmPKScore = Config.Instance.Get<FuncConfigConfig>("CrossRealmPKScore");
+            winStreakScoreFormula = CrossRealmPKScore.Numerical3;
         }
 
         public class AwardType
@@ -222,6 +242,7 @@
         public event Action UpdatePkResultEvent;
         public void UpdatePKResultInfo(HC003_tagGCCrossRealmPKOverInfo pKOverInfo)
         {
+            pkResultInfo = new PkResultInfo();
             pkResultInfo.PkEndTime = pKOverInfo.TimeStr;
             pkResultInfo.OverType = pKOverInfo.OverType;
             pkResultInfo.WinnerID = (int)pKOverInfo.WinnerID;
@@ -232,6 +253,7 @@
             pkResultInfo.DanLV = pKOverInfo.DanLV;
             pkResultInfo.WinStreak = pKOverInfo.CWinCnt;
             pkResultInfo.VsPlayerName = pKOverInfo.TagName;
+            SetPkInfoLocalSave(pkResultInfo);
             if(UpdatePkResultEvent != null)
             {
                 UpdatePkResultEvent();
@@ -244,7 +266,7 @@
 
             public int OverType;    // 0-姝e父锛�1-鏈変汉绂荤嚎
 
-            public int WinnerID;    // 鑳滄柟ID
+            public int WinnerID;    // 鑳滄柟ID(鏈鎴樻枟缁撴潫锛屼笉鏄洖鍚堢粨鏉�)
 
             public int RoundCount;    // PK鍥炲悎鏁�
 
@@ -281,6 +303,22 @@
         }
 
         /// <summary>
+        /// 1 鑷繁绂荤嚎 2 瀵规墜绂荤嚎
+        /// </summary>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        public bool TryGetOffLine(out int type)
+        {
+            type = 0;
+            int playerId = (int)PlayerDatas.Instance.baseData.PlayerID;
+            if(pkResultInfo.OverType != 0)
+            {
+                type = playerId == pkResultInfo.WinnerID ? 2 : 1;
+            }
+            return pkResultInfo.OverType != 0;
+        }
+
+        /// <summary>
         ///0-鍙栨秷鍖归厤; 1-杩涜鍖归厤
         /// </summary>
         /// <param name="type"></param>
@@ -291,6 +329,41 @@
             GameNetSystem.Instance.SendInfo(match);
         }
         #endregion
+
+        #region 鍖归厤璁板綍
+    
+        private void GetLocalSaveData()
+        {
+            localSaveResults = new List<PkResultInfo>();
+            string[] localJsons = LocalSave.GeStringArray(PkResultLocalSaveKey);
+            if(localJsons != null)
+            {
+                for(int i = 0; i < localJsons.Length; i++)
+                {
+                    PkResultInfo resultInfo = JsonMapper.ToObject<PkResultInfo>(localJsons[i]);
+                    localSaveResults.Add(resultInfo);
+                }
+            }
+        }
+
+        public void SetPkInfoLocalSave(PkResultInfo resultInfo)
+        {
+            if (localSaveResults.Count >= 30)
+            {
+                localSaveResults.RemoveAt(localSaveResults.Count - 1);
+            }
+            localSaveResults.Insert(0,resultInfo);
+            string[] localJsons = new string[localSaveResults.Count];
+            for(int i = 0; i < localJsons.Length; i++)
+            {
+                string json = JsonMapper.ToJson(localSaveResults[i]);
+                localJsons[i] = json;
+            }
+            LocalSave.SetStringArray(PkResultLocalSaveKey,localJsons);
+        }
+
+        #endregion
+
         #region 绾㈢偣
         #endregion
 

--
Gitblit v1.8.0