From 4c4eeb432666df3353baabe5fdacea99dbddc7b3 Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期三, 16 一月 2019 23:49:23 +0800
Subject: [PATCH] 3335  玩家升级性能优化

---
 System/Store/StoreModel.cs                |   35 +++++++++--
 System/Compose/New/ComposeWinModel.cs     |   24 ++++++-
 System/KnapSack/New/RoleEquipWin.cs       |   37 +++++++++---
 System/KnapSack/Logic/PlayerPackModels.cs |   27 ++++++--
 4 files changed, 92 insertions(+), 31 deletions(-)

diff --git a/System/Compose/New/ComposeWinModel.cs b/System/Compose/New/ComposeWinModel.cs
index 73153e0..23f42f2 100644
--- a/System/Compose/New/ComposeWinModel.cs
+++ b/System/Compose/New/ComposeWinModel.cs
@@ -31,7 +31,7 @@
     {
         get { return _itemPathModel ?? (_itemPathModel = ModelCenter.Instance.GetModel<GetItemPathModel>()); }
     }
-
+    private bool isUpdatePlayerLv;
     public override void Init()
     {
         ParseFuncConfig();
@@ -46,15 +46,19 @@
 
     public void OnBeforePlayerDataInitialize()
     {
+        isUpdatePlayerLv = false;
         secondType = 0;
         thirdType = 0;
+        GlobalTimeEvent.Instance.secondEvent -= UpdateSecond;
+        playerPack.RefreshItemCountAct -= OnItemCntRefresh;
+        PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerLvUpdate;
+
     }
 
     public void OnPlayerLoginOk()
     {
-        playerPack.RefreshItemCountAct -= OnItemCntRefresh;
+        GlobalTimeEvent.Instance.secondEvent += UpdateSecond;
         playerPack.RefreshItemCountAct += OnItemCntRefresh;
-        PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerLvUpdate;
         PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerLvUpdate;
         UpdateComposeDataByLevel();
         RefreshComposeRed();
@@ -68,12 +72,22 @@
         }
     }
 
+
+    private void UpdateSecond()
+    {
+        if(isUpdatePlayerLv)
+        {
+            UpdateComposeDataByLevel();
+            RefreshComposeRed();
+            isUpdatePlayerLv = false;
+        }
+    }
+
     private void PlayerLvUpdate(PlayerDataRefresh type)
     {
         if (type != PlayerDataRefresh.LV) return;
 
-        UpdateComposeDataByLevel();
-        RefreshComposeRed();
+        isUpdatePlayerLv = true;
     }
 
     #region 瑙f瀽鏈湴鏁版嵁
diff --git a/System/KnapSack/Logic/PlayerPackModels.cs b/System/KnapSack/Logic/PlayerPackModels.cs
index e4026b3..ef5a7fc 100644
--- a/System/KnapSack/Logic/PlayerPackModels.cs
+++ b/System/KnapSack/Logic/PlayerPackModels.cs
@@ -26,7 +26,7 @@
         BlastFurnaceModel FurnaceModel { get { return ModelCenter.Instance.GetModel<BlastFurnaceModel>(); } }
         public List<int> LocalSavePlaceArray { get; private set; }
         public Dictionary<int, List<int>> ShareUseCntItemDict { get; private set;}
-
+        private bool isUpdatePlayerLv = false;
         public override void Init()
         {
             ParseConfig();
@@ -107,6 +107,7 @@
 
         public void OnBeforePlayerDataInitialize()
         {
+            GlobalTimeEvent.Instance.secondEvent -= UpdateSecond;
             PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= UpdatePlayerLv;
             LocalSave.DeleteKey(RecordKnapsackTitle);
             cacheMapId = 0;
@@ -146,9 +147,9 @@
             {
                 LocalSavePlaceArray = null;
             }
-
+            GlobalTimeEvent.Instance.secondEvent += UpdateSecond;
             PlayerDatas.Instance.PlayerDataRefreshInfoEvent += UpdatePlayerLv;
-            UpdatePlayerLv(PlayerDataRefresh.LV);
+            isUpdatePlayerLv = true;
         }
 
         public override void UnInit()
@@ -699,14 +700,24 @@
             return 0;
         }
 
+        private void UpdateSecond()
+        {
+            if(isUpdatePlayerLv)
+            {
+                for (int i = 1; i < 13; i++)
+                {
+                    CheckRoleEquipByPlace((RoleEquipType)i);
+                }
+                UpdateRoleEquipRed();
+                isUpdatePlayerLv = false;
+            }
+        }
+
         private void UpdatePlayerLv(PlayerDataRefresh type)
         {
             if (type != PlayerDataRefresh.LV) return;
-            for (int i = 1; i < 13; i++)
-            {
-                CheckRoleEquipByPlace((RoleEquipType)i);
-            }
-            UpdateRoleEquipRed();
+
+            isUpdatePlayerLv = true;
         }
 
         public bool IsShowAddEquipByPlace(int equipPlace)
diff --git a/System/KnapSack/New/RoleEquipWin.cs b/System/KnapSack/New/RoleEquipWin.cs
index 7f18be5..eb662ae 100644
--- a/System/KnapSack/New/RoleEquipWin.cs
+++ b/System/KnapSack/New/RoleEquipWin.cs
@@ -64,7 +64,7 @@
         {
             get { return _modelInterface ?? (_modelInterface = ModelCenter.Instance.GetModel<PackModelInterface>()); }
         }
-
+        private bool isUpdatePlayerLv;
         protected override void BindController()
         {
             _oneKeySellBtn.onClick.AddListener(OnClickOneKeySell);
@@ -78,14 +78,14 @@
 
         protected override void OnPreOpen()
         {
+            isUpdatePlayerLv = false;
             UI3DModelExhibition.Instance.ShowPlayer(RoleShowBG, PlayerDatas.Instance.baseData.Job);
             playerPack.RefreshAttrActiveAct += ControlEffect;
             playerPack.ItemCntAddAct += PutOnEquip;
             playerPack.ItemCntReduceAct += PutOffEquip;
             PlayerDatas.Instance.PlayerDataRefreshInfoEvent += UpdatePlayerLv;
-            PlayerDatas.Instance.RefreshPlayerInfoEvent += OnFrenshBagInfo;
             WindowCenter.Instance.windowBeforeCloseEvent += BeforeWindowClose;
-         
+            GlobalTimeEvent.Instance.secondEvent += UpdateSecond;
             TimeDownMgr.CoolTimeData data;
             if (TimeDownMgr.Instance.Get(TimeDownMgr.CoolTimeType.BagSort, out data))
             {
@@ -105,7 +105,6 @@
             UIEventTrigger.Get(_equipIntensifyBtn.gameObject).OnDown = OnClickEquipIntensify;
             OnFrenshBagInfo();
         }
-
         private void BeforeWindowClose(Window window)
         {
             if (typeof(PetMatInfoWin).Name != window.name && typeof(ItemInfoWin).Name != window.name) return;
@@ -130,9 +129,9 @@
 
         protected override void OnPreClose()
         {
+            GlobalTimeEvent.Instance.secondEvent -= UpdateSecond;
             playerPack.ItemCntAddAct -= PutOnEquip;
             playerPack.ItemCntReduceAct -= PutOffEquip;
-            PlayerDatas.Instance.RefreshPlayerInfoEvent -= OnFrenshBagInfo;
             WindowCenter.Instance.windowBeforeCloseEvent -= BeforeWindowClose;
             PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= UpdatePlayerLv;
             UI3DModelExhibition.Instance.StopShow();
@@ -143,6 +142,18 @@
             
         }
 
+
+        private void UpdateSecond()
+        {
+            if (isUpdatePlayerLv)
+            {
+                for (int i = 1; i < 13; i++)
+                {
+                    UpdateRoleEquip(i);
+                }
+                isUpdatePlayerLv = false;
+            }
+        }
 
         private void ControlEffect(int type, bool isActive)
         {
@@ -185,6 +196,7 @@
             UI3DModelExhibition.Instance.ShowPlayer(RoleShowBG, PlayerDatas.Instance.baseData.Job);
         }
 
+
         public void PutOnEquip(PackType type,int index, int Id)
         {
             //涓存椂鏉′欢鍒ゆ柇
@@ -202,12 +214,17 @@
 
         private void UpdatePlayerLv(PlayerDataRefresh type)
         {
-            if (type != PlayerDataRefresh.LV) return;
-
-         
-            for (int i = 1; i < 13; i++)
+            switch (type)
             {
-                UpdateRoleEquip(i);
+                case PlayerDataRefresh.LV:
+                    isUpdatePlayerLv = true;
+                    break;
+                case PlayerDataRefresh.Gold:
+                case PlayerDataRefresh.GoldPaper:
+                case PlayerDataRefresh.Silver:
+                case PlayerDataRefresh.ExAttr6:
+                    OnFrenshBagInfo();
+                    break;
             }
         }
 
diff --git a/System/Store/StoreModel.cs b/System/Store/StoreModel.cs
index fe3615d..083e955 100644
--- a/System/Store/StoreModel.cs
+++ b/System/Store/StoreModel.cs
@@ -53,6 +53,7 @@
             return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
         }
     }
+    private bool isUpdatePlayerLv;
 
     public override void Init()
     {
@@ -72,6 +73,7 @@
 
     public void OnBeforePlayerDataInitialize()
     {
+        isUpdatePlayerLv = false;
         IsMustBuyDay = false;
         isLogin = true;
         ClearJumpModel();
@@ -81,8 +83,9 @@
         WindowCenter.Instance.windowAfterCloseEvent -= windowAfterClose;
         PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= RefreshServerHour;
         PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= RefreshFamilyLv;
-        RefreshTCBPlayerDataEvent -= RefreshPlayerLv;
+        RefreshTCBPlayerDataEvent -= RefreshPlayerData;
         TimeMgr.Instance.OnHourEvent -= RefreshServerHour;
+        GlobalTimeEvent.Instance.secondEvent -= UpdateSecond;
         NewBieCenter.Instance.guideBeginEvent -= GuidBegin;
         playerPack.RefreshItemCountAct -= UpdateFairyEquip;
         shopItemlimitDict.Clear();
@@ -106,8 +109,9 @@
         PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += RefreshFamilyLv;
         PlayerDatas.Instance.fairyData.OnRefreshFairyMine += RefreshServerHour;
         FuncOpen.Instance.OnFuncStateChangeEvent += FuncStateChange;
-        RefreshTCBPlayerDataEvent += RefreshPlayerLv;
+        RefreshTCBPlayerDataEvent += RefreshPlayerData;
         TimeMgr.Instance.OnHourEvent += RefreshServerHour;
+        GlobalTimeEvent.Instance.secondEvent += UpdateSecond;
         StageManager.Instance.onStageLoadFinish += OnStageLoadFinish;
         WindowCenter.Instance.windowAfterOpenEvent += windowAfterOpen;
         WindowCenter.Instance.windowAfterCloseEvent += windowAfterClose;
@@ -615,16 +619,31 @@
         return remainSecond;
     }
 
-    private void RefreshPlayerLv(PlayerDataRefresh type)
+
+    private void UpdateSecond()
+    {
+        if(isUpdatePlayerLv)
+        {
+            UpdatePlayerLv();
+            isUpdatePlayerLv = false;
+        }
+    }
+
+    private void UpdatePlayerLv()
+    {
+        UpdateShowStore();
+        UpdateFreeShopRedpoint();
+        UpdateCanBuyRedpoint();
+        UpdateMustBuyRedpoint();
+        UpdatePetAndMountPutAwayRedpoint();
+    }
+
+    private void RefreshPlayerData(PlayerDataRefresh type)
     {
         switch(type)
         {
             case PlayerDataRefresh.LV:
-                UpdateShowStore();
-                UpdateFreeShopRedpoint();
-                UpdateCanBuyRedpoint();
-                UpdateMustBuyRedpoint();
-                UpdatePetAndMountPutAwayRedpoint();
+                isUpdatePlayerLv = true;
                 break;
             case PlayerDataRefresh.VIPLv:
             case PlayerDataRefresh.Gold:

--
Gitblit v1.8.0