From dfc9cc25d07b7fc8a2c82c8cfddbda793c6c72b7 Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期四, 17 一月 2019 01:05:15 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 Core/GameEngine/Login/LoginStage.cs                                               |    4 
 System/GatheringSoul/GatheringSoulModel.cs                                        |   24 ++++
 System/KnapSack/New/RoleEquipWin.cs                                               |   37 +++++--
 System/Dungeon/TrialDungeonEntranceWin.cs                                         |   42 ++++++++
 System/KnapSack/Logic/PlayerPackModels.cs                                         |   27 +++-
 Core/NetworkPackage/DTCFile/ServerPack/HA7_Arena/DTCA709_tagObjInfoListRefresh.cs |   26 +++--
 System/Store/StoreModel.cs                                                        |   35 +++++-
 System/Compose/New/ComposeWinModel.cs                                             |   24 +++-
 Core/GameEngine/Model/Player/PlayerDatas.cs                                       |   14 ++
 System/Treasure/TreasureModel.cs                                                  |   19 +++
 System/FairyAu/FairyGrabBossModel.cs                                              |    9 +
 System/Dungeon/NormalDungeonEntranceWin.cs                                        |    1 
 System/Rune/RuneModel.cs                                                          |   19 +++
 13 files changed, 232 insertions(+), 49 deletions(-)

diff --git a/Core/GameEngine/Login/LoginStage.cs b/Core/GameEngine/Login/LoginStage.cs
index a1800c9..ff24a6d 100644
--- a/Core/GameEngine/Login/LoginStage.cs
+++ b/Core/GameEngine/Login/LoginStage.cs
@@ -15,7 +15,7 @@
 
         WindowCenter.Instance.Close<FightingPKWin>();
         WindowCenter.Instance.Open<LaunchBackGroundWin>(true);
-        
+
         var backGroundWin = WindowCenter.Instance.Get<LaunchBackGroundWin>();
         if (backGroundWin != null)
         {
@@ -47,7 +47,7 @@
                     if (!loginModel.sdkLogined)
                     {
                         if (SDKUtility.Instance.ChannelPlatform != SDKUtility.E_ChannelPlatform.Yj
-                         || !SDKUtility.Yj_AppID.Equals("yybgame"))
+                         || SDKUtility.Yj_AppID.Equals("yybgame"))
                         {
                             SDKUtility.Instance.FreePlatformLogin();
                         }
diff --git a/Core/GameEngine/Model/Player/PlayerDatas.cs b/Core/GameEngine/Model/Player/PlayerDatas.cs
index 5b4eb6a..7763466 100644
--- a/Core/GameEngine/Model/Player/PlayerDatas.cs
+++ b/Core/GameEngine/Model/Player/PlayerDatas.cs
@@ -110,6 +110,20 @@
 
         for (int i = 0; i < vNetData.Count; i++)
         {
+            if (CrossServerUtility.IsCrossServer())
+            {
+                if (vNetData.socketType == GameNetSystem.SocketType.Main)
+                {
+                    if (vNetData.RefreshType[i].RefreshType == (int)PlayerDataRefresh.HP
+                     || vNetData.RefreshType[i].RefreshType == (int)PlayerDataRefresh.MaxHP
+                     || vNetData.RefreshType[i].RefreshType == (int)PlayerDataRefresh.MaxProDef
+                     || vNetData.RefreshType[i].RefreshType == (int)PlayerDataRefresh.ExAttr4)
+                    {
+                        continue;
+                    }
+                }
+            }
+
             var data = new H0418_tagObjInfoRefresh();
             data.ObjID = vNetData.ObjID;
             data.ObjType = vNetData.ObjType;
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HA7_Arena/DTCA709_tagObjInfoListRefresh.cs b/Core/NetworkPackage/DTCFile/ServerPack/HA7_Arena/DTCA709_tagObjInfoListRefresh.cs
index 1676b36..fd2ef18 100644
--- a/Core/NetworkPackage/DTCFile/ServerPack/HA7_Arena/DTCA709_tagObjInfoListRefresh.cs
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HA7_Arena/DTCA709_tagObjInfoListRefresh.cs
@@ -27,17 +27,7 @@
 
         if (objId == PlayerDatas.Instance.PlayerId)
         {
-            if (CrossServerUtility.IsCrossServer())
-            {
-                if (vNetDatas.socketType == GameNetSystem.SocketType.CrossSever)
-                {
-                    PlayerDatas.Instance.RefreshPlayerData(vNetDatas);
-                }
-            }
-            else
-            {
-                PlayerDatas.Instance.RefreshPlayerData(vNetDatas);
-            }
+            PlayerDatas.Instance.RefreshPlayerData(vNetDatas);
         }
         else
         {
@@ -45,6 +35,20 @@
             {
                 var vNetData = vNetDatas.RefreshType[i];
 
+                if (CrossServerUtility.IsCrossServer())
+                {
+                    if (vNetDatas.socketType == GameNetSystem.SocketType.Main)
+                    {
+                        if (vNetData.RefreshType == (int)PlayerDataRefresh.HP
+                         || vNetData.RefreshType == (int)PlayerDataRefresh.MaxHP
+                         || vNetData.RefreshType == (int)PlayerDataRefresh.MaxProDef
+                         || vNetData.RefreshType == (int)PlayerDataRefresh.ExAttr4)
+                        {
+                            continue;
+                        }
+                    }
+                }
+
                 switch ((PlayerDataRefresh)vNetData.RefreshType)
                 {
                     case PlayerDataRefresh.HP:
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/Dungeon/NormalDungeonEntranceWin.cs b/System/Dungeon/NormalDungeonEntranceWin.cs
index ef5cd9a..9fd6b6a 100644
--- a/System/Dungeon/NormalDungeonEntranceWin.cs
+++ b/System/Dungeon/NormalDungeonEntranceWin.cs
@@ -393,6 +393,7 @@
                     ModelCenter.Instance.GetModel<GetItemPathModel>().SetChinItemModel(dungeonConfig.TicketID);
                     break;
                 case 6:
+                    SysNotifyMgr.Instance.ShowTip("CrossMap10");
                     break;
             }
         }
diff --git a/System/Dungeon/TrialDungeonEntranceWin.cs b/System/Dungeon/TrialDungeonEntranceWin.cs
index 3d26549..b163332 100644
--- a/System/Dungeon/TrialDungeonEntranceWin.cs
+++ b/System/Dungeon/TrialDungeonEntranceWin.cs
@@ -304,7 +304,47 @@
             }
 
             var error = 0;
-            return model.TestChallange(model.selectedTrialDungeon, out error);
+            if (!model.TestChallange(model.selectedTrialDungeon, out error))
+            {
+                if (requireTip)
+                {
+                    ProcessEnterDungeonError(error);
+                }
+                return false;
+            }
+            return true;
+        }
+
+        private void ProcessEnterDungeonError(int _error)
+        {
+            var dungeonId = model.GetDungeonId(model.selectedTrialDungeon);
+            var dungeonConfig = Config.Instance.Get<DungeonConfig>(dungeonId);
+            switch (_error)
+            {
+                case 1:
+                    SysNotifyMgr.Instance.ShowTip("DungeoninCoolTime");
+                    break;
+                case 2:
+                    SysNotifyMgr.Instance.ShowTip("DemonJar_Text2");
+                    break;
+                case 4:
+                    if (dungeonConfig == null)
+                    {
+                        return;
+                    }
+                    SysNotifyMgr.Instance.ShowTip("GeRen_chenxin_268121", dungeonConfig.MapID);
+                    break;
+                case 5:
+                    if (dungeonConfig == null)
+                    {
+                        return;
+                    }
+                    ModelCenter.Instance.GetModel<GetItemPathModel>().SetChinItemModel(dungeonConfig.TicketID);
+                    break;
+                case 6:
+                    SysNotifyMgr.Instance.ShowTip("CrossMap10");
+                    break;
+            }
         }
 
         bool RequireDisplaySweep()
diff --git a/System/FairyAu/FairyGrabBossModel.cs b/System/FairyAu/FairyGrabBossModel.cs
index b06a712..c765164 100644
--- a/System/FairyAu/FairyGrabBossModel.cs
+++ b/System/FairyAu/FairyGrabBossModel.cs
@@ -609,6 +609,12 @@
                 return false;
             }
 
+            if (CrossServerUtility.IsCrossServer())
+            {
+                _error = 7;
+                return false;
+            }
+
             _error = 0;
             return true;
         }
@@ -671,6 +677,9 @@
                 case 6:
                     SysNotifyMgr.Instance.ShowTip("Map_Delivery");
                     break;
+                case 7:
+                    SysNotifyMgr.Instance.ShowTip("CrossMap10");
+                    break;
             }
         }
 
diff --git a/System/GatheringSoul/GatheringSoulModel.cs b/System/GatheringSoul/GatheringSoulModel.cs
index e829fbb..cfd6259 100644
--- a/System/GatheringSoul/GatheringSoulModel.cs
+++ b/System/GatheringSoul/GatheringSoulModel.cs
@@ -101,6 +101,8 @@
         VirtualPackModel virtualPack { get { return ModelCenter.Instance.GetModel<VirtualPackModel>(); } }
         GatherSoulComposeModel composeModel { get { return ModelCenter.Instance.GetModel<GatherSoulComposeModel>(); } }
 
+        bool playerLevelRefresh = false;
+
         public override void Init()
         {
             ParseConfig();
@@ -110,11 +112,26 @@
             virtualPack.virtualPackRefresh += VirtualPackRefresh;
             PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
             FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
+
+            GlobalTimeEvent.Instance.secondEvent += PerSecond;
+        }
+
+        private void PerSecond()
+        {
+            if (serverInited)
+            {
+                if (playerLevelRefresh)
+                {
+                    UpdateRedpoint();
+                    playerLevelRefresh = false;
+                }
+            }
         }
 
         public void OnBeforePlayerDataInitialize()
         {
             serverInited = false;
+            playerLevelRefresh = false;
             packIndexs.Clear();
             topBestSoulIndexs.Clear();
             gatherSoulHoleDict.Clear();
@@ -144,11 +161,14 @@
 
         private void PlayerDataRefreshInfoEvent(PlayerDataRefresh refreshType)
         {
-            if (refreshType == PlayerDataRefresh.CDBPlayerRefresh_SoulDust
-                || refreshType == PlayerDataRefresh.LV)
+            if (refreshType == PlayerDataRefresh.CDBPlayerRefresh_SoulDust)
             {
                 UpdateRedpoint();
             }
+            if (refreshType == PlayerDataRefresh.LV)
+            {
+                playerLevelRefresh = true;
+            }
         }
 
         void ParseConfig()
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/Rune/RuneModel.cs b/System/Rune/RuneModel.cs
index 127b09f..ba92f06 100644
--- a/System/Rune/RuneModel.cs
+++ b/System/Rune/RuneModel.cs
@@ -18,6 +18,8 @@
             }
         }
 
+        bool playerLevelRefresh = false;
+
         public override void Init()
         {
             ParseConfig();
@@ -31,6 +33,19 @@
             FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
             PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
             StageManager.Instance.onStageLoadFinish += OnStageLoadFinish;
+            GlobalTimeEvent.Instance.secondEvent += PerSecond;
+        }
+
+        private void PerSecond()
+        {
+            if (serverInited)
+            {
+                if (playerLevelRefresh)
+                {
+                    UpdateSpecialHoleRedpoint();
+                    playerLevelRefresh = false;
+                }
+            }
         }
 
         private void OnFuncStateChangeEvent(int func)
@@ -50,6 +65,7 @@
         {
             ClearRuneData();
             serverInited = false;
+            playerLevelRefresh = false;
         }
 
         private void OnStageLoadFinish()
@@ -63,6 +79,7 @@
         public void OnPlayerLoginOk()
         {
             serverInited = true;
+            UpdateSpecialHoleRedpoint();
         }
 
         #region 閰嶇疆
@@ -148,7 +165,7 @@
         {
             if (refreshType == PlayerDataRefresh.LV)
             {
-                UpdateSpecialHoleRedpoint();
+                playerLevelRefresh = true;
             }
         }
 
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:
diff --git a/System/Treasure/TreasureModel.cs b/System/Treasure/TreasureModel.cs
index 4406602..ee1ef2d 100644
--- a/System/Treasure/TreasureModel.cs
+++ b/System/Treasure/TreasureModel.cs
@@ -206,6 +206,8 @@
             }
         }
 
+        bool playerLevelRefresh = false;
+
         public override void Init()
         {
             ParseConfigs();
@@ -224,6 +226,7 @@
             WindowCenter.Instance.windowAfterCloseEvent += OnWindowClose;
             NewBieCenter.Instance.guideCompletedEvent += GuideComplete;
             StageManager.Instance.onStageLoadFinish += OnStageLoadFinish;
+            GlobalTimeEvent.Instance.secondEvent += PerSecond;
         }
 
         public override void UnInit()
@@ -240,6 +243,19 @@
             WindowCenter.Instance.windowAfterOpenEvent -= OnWindowOpen;
             WindowCenter.Instance.windowAfterCloseEvent -= OnWindowClose;
             StageManager.Instance.onStageLoadFinish -= OnStageLoadFinish;
+            GlobalTimeEvent.Instance.secondEvent -= PerSecond;
+        }
+
+        private void PerSecond()
+        {
+            if (serverInited)
+            {
+                if (playerLevelRefresh)
+                {
+                    UpdateAchievementRedpoints();
+                    playerLevelRefresh = false;
+                }
+            }
         }
 
         public void OnAfterPlayerDataInitialize()
@@ -251,6 +267,7 @@
         public void OnBeforePlayerDataInitialize()
         {
             serverInited = false;
+            playerLevelRefresh = false;
             needDisplayReguluLevelUp = false;
             potentialFuncOpen = false;
             treasureUnlockShowDict.Clear();
@@ -804,7 +821,7 @@
                     UpdateSkillLevelUpRedpoints();
                     break;
                 case PlayerDataRefresh.LV:
-                    UpdateAchievementRedpoints();
+                    playerLevelRefresh = true;
                     break;
                 case PlayerDataRefresh.FightPoint:
                 case PlayerDataRefresh.FightPower:

--
Gitblit v1.8.0