From 65fb6364670f86e21adfab1ae0b42a7be8dc07f4 Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期六, 08 十二月 2018 15:52:37 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/Store/StoreModel.cs |  171 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 171 insertions(+), 0 deletions(-)

diff --git a/System/Store/StoreModel.cs b/System/Store/StoreModel.cs
index 2e50561..224138c 100644
--- a/System/Store/StoreModel.cs
+++ b/System/Store/StoreModel.cs
@@ -43,6 +43,7 @@
     bool isLogin = true;
 
     RuneModel runeModel { get { return ModelCenter.Instance.GetModel<RuneModel>(); } }
+    PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
 
     ItemTipsModel _itemTipsModel;
     ItemTipsModel itemTipsModel
@@ -83,6 +84,7 @@
         RefreshTCBPlayerDataEvent -= RefreshPlayerLv;
         TimeMgr.Instance.OnHourEvent -= RefreshServerHour;
         NewBieCenter.Instance.guideBeginEvent -= GuidBegin;
+        playerPack.RefreshItemCountAct -= UpdateFairyEquip;
         shopItemlimitDict.Clear();
         petAndMountPushlist.Clear();
         ClearPushData();
@@ -110,6 +112,7 @@
         WindowCenter.Instance.windowAfterOpenEvent += windowAfterOpen;
         WindowCenter.Instance.windowAfterCloseEvent += windowAfterClose;
         NewBieCenter.Instance.guideBeginEvent += GuidBegin;
+        playerPack.RefreshItemCountAct += UpdateFairyEquip;
         UpdateShowStore();
         SetIsMustBuyDay();
         ControllerRedPoint();
@@ -626,9 +629,13 @@
             case PlayerDataRefresh.VIPLv:
             case PlayerDataRefresh.Gold:
             case PlayerDataRefresh.GoldPaper:
+                UpdateFreeShopRedpoint();
+                UpdateCanBuyRedpoint();
+                break;
             case PlayerDataRefresh.FBHelpPoint:
                 UpdateFreeShopRedpoint();
                 UpdateCanBuyRedpoint();
+                UpdateFairyEquipRedpoint();
                 break;
         }
     }
@@ -708,6 +715,7 @@
             UpdateCanBuyRedpoint();
             UpdateMustBuyRedpoint();
             UpdatePetAndMountPutAwayRedpoint();
+            UpdateFairyEquipRedpoint();
         }
         if (RefreshBuyShopLimitEvent != null)
             RefreshBuyShopLimitEvent();
@@ -992,6 +1000,7 @@
         UpdateCanBuyRedpoint();
         UpdateMustBuyRedpoint();
         UpdatePetAndMountPutAwayRedpoint();
+        UpdateFairyEquipRedpoint();
     }
 
     public bool IsNewDay(string recordKey)
@@ -1245,6 +1254,155 @@
         }
     }
 
+    private void UpdateFairyEquip(PackType type, int index, int id)
+    {
+        if (type != PackType.rptEquip 
+            && (index != (int)RoleEquipType.retFairyCan || index != (int)RoleEquipType.retFairyCan2)) return;
+
+        ClearAllFairyEquipRedpoint();
+
+    }
+
+    public void UpdateFairyEquipRedpoint()
+    {
+        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Store)) return;
+
+        foreach (var key in showStoreTypeDict.Keys)
+        {
+            var storeDatas = showStoreTypeDict[key];
+            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 == 5)
+                {
+
+                    string fairySaveKey = string.Empty;
+                    bool isGetSave = TryGetFairySaveKey(storeConfig,out fairySaveKey);
+                    int remainNum = 0;
+                    if (!TryGetIsSellOut(storeConfig, out remainNum))
+                    {
+                        if (UIHelper.GetMoneyCnt(storeConfig.MoneyType) >= (ulong)storeConfig.MoneyNumber)
+                        {
+                            if (isGetSave)
+                            {
+                                shopRedDict[storeData.shopId].state = RedPointState.Simple;
+                                LocalSave.SetBool(fairySaveKey, true);
+                            }
+                            else
+                            {
+                                shopRedDict[storeData.shopId].state = RedPointState.None;
+                            }
+                        }
+                        else
+                        {
+                            if(shopRedDict[storeData.shopId].state != RedPointState.None)
+                            {
+                                LocalSave.SetBool(fairySaveKey,false);
+                                shopRedDict[storeConfig.ID].state = RedPointState.None;
+                            }
+                        }
+                    }
+                    else
+                    {
+                        shopRedDict[storeConfig.ID].state = RedPointState.None;
+                    }
+                }
+            }
+
+        }
+    }
+
+    public void ClearFairyEquipRedpoint(StoreConfig storeConfig)
+    {
+        int type = 0;
+        TryGetRedTypeByShopId(storeConfig.ID, out type);
+        if (type == 5)
+        {
+            if (shopRedDict[storeConfig.ID].state != RedPointState.None)
+            {
+                shopRedDict[storeConfig.ID].state = RedPointState.None;
+                string key1 = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "ShopId", storeConfig.ID, "EquipPlace:", 9);
+                string key2 = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "ShopId", storeConfig.ID, "EquipPlace:", 10);
+                if (LocalSave.GetBool(key1))
+                {
+                    LocalSave.SetBool(key1, false);
+                }
+                else if (LocalSave.GetBool(key2))
+                {
+                    LocalSave.SetBool(key2, false);
+                }
+            }
+        }
+    }
+
+    public void SwitchFuncTitleClearRedpoint(StoreFunc storeFunc)
+    {
+        if (storeFuncType == StoreFunc.IntegralStore && storeFunc != StoreFunc.IntegralStore)
+        {
+            ClearAllFairyEquipRedpoint();
+        }
+    }
+
+    private void ClearAllFairyEquipRedpoint()
+    {
+        foreach (var key in shopRedDict.Keys)
+        {
+            StoreConfig storeConfig = Config.Instance.Get<StoreConfig>(key);
+            ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(storeConfig.ItemID);
+            int type = 0;
+            TryGetRedTypeByShopId(storeConfig.ID, out type);
+            if (type == 5)
+            {
+                if (shopRedDict[key].state != RedPointState.None)
+                {
+                    shopRedDict[key].state = RedPointState.None;
+                    string key1 = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "ShopId", key, "EquipPlace:", 9);
+                    string key2 = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "ShopId", key, "EquipPlace:", 10);
+
+                    if(LocalSave.GetBool(key1))
+                    {
+                        LocalSave.SetBool(key1, false);
+                    }
+                    else if(LocalSave.GetBool(key2))
+                    {
+                        LocalSave.SetBool(key2, false);
+                    }
+                }
+            }
+        }
+    }
+
+    public bool TryGetFairySaveKey(StoreConfig config,out string fairySaveKey)
+    {
+        fairySaveKey = string.Empty;
+        if (config == null) return false;
+
+        ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(config.ItemID);
+        if(itemConfig.EquipPlace == (int)RoleEquipType.retFairyCan)
+        {
+            string key1 = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "ShopId",config.ID,"EquipPlace:",9);
+            string key2 = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "ShopId", config.ID, "EquipPlace:",10);
+            ItemModel itemModel1 = playerPack.GetItemModelByIndex(PackType.rptEquip,9);
+            ItemModel itemModel2 = playerPack.GetItemModelByIndex(PackType.rptEquip, 10);
+            if(itemModel1 == null
+                && (!PlayerPrefs.HasKey(key1) || LocalSave.GetBool(key1)))
+            {
+                fairySaveKey = key1;
+                return true;
+            }
+            else if(itemModel2 == null
+                 && (!PlayerPrefs.HasKey(key2) || LocalSave.GetBool(key2)))
+            {
+                fairySaveKey = key2;
+                return true;
+            }
+        }
+        return false;
+    }
+
     public void UpdateMustBuyRedpoint()
     {
         if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Store)) return;
@@ -1423,6 +1581,19 @@
         }
 
     }
+
+    public void CloseRedPoint(StoreConfig storeConfig)
+    {
+        ClearMustBuyRedpoint(storeConfig);
+        ClearPetAndMountRedpoint(storeConfig);
+        ClearFairyEquipRedpoint(storeConfig);
+    }
+
+    public void CloseAllRedpoint(StoreFunc storeFunc)
+    {
+        ClearAllPetAndMountRedpoint(storeFunc);
+        SwitchFuncTitleClearRedpoint(storeFunc);
+    }
     #endregion
 
     #region 鍧愰獞鐏靛疇鎺ㄩ��

--
Gitblit v1.8.0