From 9715a9e2eec264da4bf295a8cb6833c55c56fb91 Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期四, 03 一月 2019 17:38:08 +0800
Subject: [PATCH] 5668 【前端】【1.4.100】荣誉商店新增红点逻辑

---
 System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs |  123 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 122 insertions(+), 1 deletions(-)

diff --git a/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs b/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
index 1a8f2d9..01e1250 100644
--- a/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
+++ b/System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
@@ -4,6 +4,7 @@
 using System.Text;
 using TableConfig;
 using LitJson;
+using UnityEngine;
 
 namespace Snxxz.UI
 {
@@ -33,14 +34,18 @@
         }
         public DateTime matchStartTime { get; set; }
         public DateTime roundEndTime { get; private set; }
+        StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
+
         public override void Init()
         {
             IsMatching = false;
             ParseFuncConfig();
+            SetHonorRedpoint();
         }
 
         public void OnBeforePlayerDataInitialize()
         {
+            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= UpdatePlayerData;
             CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdatePlayerInfo;
             CrossServerOneVsOnePKSeason.Instance.updateSelfSeasonEvent -= UpdateSeason;
             TimeMgr.Instance.OnMinuteEvent -= UpdateMinute;
@@ -49,7 +54,7 @@
             CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdateDayAwardState;
             InitData();
         }
-
+     
         public void OnAfterPlayerDataInitialize()
         {
             int playerId = (int)PlayerDatas.Instance.baseData.PlayerID;
@@ -64,6 +69,7 @@
 
         public void OnPlayerLoginOk()
         {
+            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += UpdatePlayerData;
             CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdatePlayerInfo;
             CrossServerOneVsOnePKSeason.Instance.updateSelfSeasonEvent += UpdateSeason;
             TimeMgr.Instance.OnMinuteEvent += UpdateMinute;
@@ -78,6 +84,7 @@
 
             UpdateCrossDayAwardsRedpoint();
             UpdateCrossMatchRedpoint();
+            UpdateCanBuyRedpoint();
         }
 
         public override void UnInit()
@@ -136,6 +143,7 @@
         private void UpdateSeason()
         {
             UpdateCrossMatchRedpoint();
+            UpdateCanBuyRedpoint();
         }
 
         private void UpdatePlayerInfo()
@@ -567,6 +575,119 @@
                 crossServerRedpoint.count = 0;
             }
         }
+
+        #region 鑽h獕鍟嗗簵绾㈢偣
+        public const int CrossHonorStoreRedKey = 2130104;
+        public Redpoint crossHonorStoreRedpoint = new Redpoint(CrossOneVsOneRedKey, CrossHonorStoreRedKey);
+        private Dictionary<int, Redpoint> honorRedpointDict = new Dictionary<int, Redpoint>();
+        public void SetHonorRedpoint()
+        {
+            honorRedpointDict.Clear();
+            List<StoreConfig> storelist = Config.Instance.GetAllValues<StoreConfig>();
+            for (int i = 0; i < storelist.Count; i++)
+            {
+                StoreConfig storeConfig = storelist[i];
+                int redKey = 0;
+                Redpoint redpoint = null;
+                if(storeConfig.ShopType == (int)StoreFunc.CrossOneVsOneHonor)
+                {
+                    redKey = CrossHonorStoreRedKey *100 + storeConfig.ID;
+                    redpoint = new Redpoint(CrossHonorStoreRedKey, redKey);
+                    honorRedpointDict.Add(storeConfig.ID, redpoint);
+                }
+            }
+        }
+
+        public Redpoint GetRedpointById(int shopId)
+        {
+            Redpoint redpoint = null;
+            honorRedpointDict.TryGetValue(shopId,out redpoint);
+            return redpoint;
+        }
+
+        private void UpdatePlayerData(PlayerDataRefresh type)
+        {
+            switch(type)
+            {
+                case PlayerDataRefresh.CDBPlayerRefresh_Honor:
+                    UpdateCanBuyRedpoint();
+                    break;
+            }
+
+        }
+
+        public void UpdateCanBuyRedpoint()
+        {
+            var pkSeason = CrossServerOneVsOnePKSeason.Instance;
+            if (!pkSeason.IsEnterCrossServer()) return;
+
+            List<StoreModel.StoreData> storeDatas = storeModel.TryGetStoreDatas((int)StoreFunc.CrossOneVsOneHonor);
+            if(storeDatas != null)
+            {
+                for(int i = 0; i < storeDatas.Count; i++)
+                {
+                    var storeData = storeDatas[i];
+                    var storeConfig = storeData.storeConfig;
+                    int type = 0;
+                    TryGetRedTypeByShopId(storeConfig.ID, out type);
+                    if (type == 6)
+                    {
+                        string key = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "ShopId", storeData.shopId);
+                        int remainNum = 0;
+                        honorRedpointDict[storeConfig.ID].state = RedPointState.None;
+                        if (!storeModel.TryGetIsSellOut(storeConfig, out remainNum))
+                        {
+                            if(!PlayerPrefs.HasKey(key))
+                            {
+                                if (UIHelper.GetMoneyCnt(storeConfig.MoneyType) >= (ulong)storeConfig.MoneyNumber)
+                                {
+                                    honorRedpointDict[storeConfig.ID].state = RedPointState.Simple;
+                                    LocalSave.SetBool(key, true);
+                                }
+                            }
+                            else
+                            {
+                                if(LocalSave.GetBool(key))
+                                {
+                                    if (UIHelper.GetMoneyCnt(storeConfig.MoneyType) >= (ulong)storeConfig.MoneyNumber)
+                                    {
+                                        honorRedpointDict[storeConfig.ID].state = RedPointState.Simple;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        public bool TryGetRedTypeByShopId(int shopId, out int type)
+        {
+            type = 0;
+            var ruleDict = storeModel.storeRedRuleDict;
+            foreach (var key in ruleDict.Keys)
+            {
+                List<int> idlist = ruleDict[key];
+                if (idlist.Contains(shopId))
+                {
+                    type = key;
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        public void ClearRedpoint(int shopId)
+        {
+            string record = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "ShopId", shopId);
+            if(honorRedpointDict[shopId].state != RedPointState.None)
+            {
+                honorRedpointDict[shopId].state = RedPointState.None;
+                LocalSave.SetBool(record, false);
+            }
+        }
+        #endregion
+
         #endregion
     }
 }

--
Gitblit v1.8.0