From ab921746b5329925e5b4dc722accfb0292a7a29c Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期四, 01 十一月 2018 21:05:35 +0800
Subject: [PATCH] 4505【前端】【1.2】VIP体验流程修改

---
 System/Vip/VipModel.cs |  127 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 123 insertions(+), 4 deletions(-)

diff --git a/System/Vip/VipModel.cs b/System/Vip/VipModel.cs
index 5a690c9..5af710a 100644
--- a/System/Vip/VipModel.cs
+++ b/System/Vip/VipModel.cs
@@ -31,6 +31,7 @@
         private bool waitingJump = false;
 
         PlayerDeadModel deadModel { get { return ModelCenter.Instance.GetModel<PlayerDeadModel>(); } }
+        PlayerPackModel packModel { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
 
         public override void Init()
         {
@@ -49,11 +50,23 @@
             WindowCenter.Instance.windowAfterOpenEvent += WindowAfterOpenEvent;
             TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh;
             TreasureNewGotWin.CloseTreasureNewGotWinEvent += CloseTreasureNewGotWinEvent;
+            NewBieCenter.Instance.guideCompletedEvent += GuideCompletedEvent;
+            packModel.RefreshItemCountAct += RefreshItemCountAct;
+            StageManager.Instance.onStageLoadFinish += OnStageLoadFinish;
         }
 
         public override void UnInit()
         {
-
+            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent;
+            SDKUtility.Instance.onFreePlatformPayCancel -= OnChargeFail;
+            SDKUtility.Instance.onFreePlatformPayFail -= OnChargeFail;
+            SDKUtility.Instance.onFreePlatformPayOk -= OnChargeComplete;
+            WindowCenter.Instance.windowAfterOpenEvent -= WindowAfterOpenEvent;
+            TimeUtility.OnServerOpenDayRefresh -= OnServerOpenDayRefresh;
+            TreasureNewGotWin.CloseTreasureNewGotWinEvent -= CloseTreasureNewGotWinEvent;
+            NewBieCenter.Instance.guideCompletedEvent -= GuideCompletedEvent;
+            packModel.RefreshItemCountAct -= RefreshItemCountAct;
+            StageManager.Instance.onStageLoadFinish -= OnStageLoadFinish;
         }
 
         public void OnBeforePlayerDataInitialize()
@@ -200,6 +213,8 @@
             get; private set;
         }
 
+        public int vipExperienceItemId { get; private set; }
+
         public int gotoVipLv { get; set; }
 
         private bool m_ChargeReset = true;
@@ -216,6 +231,8 @@
             m_VipExperienceDic = ConfigParse.GetDic<int, int>(cfg.Numerical1);
             cfg = Config.Instance.Get<FuncConfigConfig>("PayRMB");
             vipExpMoney = int.Parse(cfg.Numerical1);
+            cfg = Config.Instance.Get<FuncConfigConfig>("VIPExperienceCard");
+            vipExperienceItemId = int.Parse(cfg.Numerical1);
         }
 
         private void ParseVipGift()
@@ -521,8 +538,16 @@
             if (_experienceTime > 0)
             {
                 TimeMgr.Instance.Register(TimeMgr.SyntonyType.VipExperirnceOverdue, _experienceTime);
+                if (serverInited)
+                {
+                    popExperienceWindow = true;
+                    CheckAutoPopExperienceWin();
+                }
             }
-            if (OnVipTimeEvent != null) OnVipTimeEvent();
+            if (OnVipTimeEvent != null)
+            {
+                OnVipTimeEvent();
+            }
         }
 
         public bool IsVipActive()
@@ -535,6 +560,66 @@
             int surplusTime = Mathf.Max(0, (int)(vipExperienceOverdue - TimeUtility.ServerNow).TotalSeconds);
             return surplusTime > 0;
         }
+
+        #region 鑷姩寮瑰嚭Vip浣撻獙鐣岄潰
+        bool popExperienceWindow = false;
+        public void CheckAutoPopExperienceWin()
+        {
+            if (!popExperienceWindow)
+            {
+                return;
+            }
+            if (!(StageManager.Instance.CurrentStage is DungeonStage))
+            {
+                return;
+            }
+            if (!WindowCenter.Instance.IsOpen<MainInterfaceWin>()
+                || WindowCenter.Instance.ExitAnyFullScreenOrMaskWin()
+                || NewBieCenter.Instance.inGuiding
+                || WindowCenter.Instance.IsOpen<VipExperienceWin>())
+            {
+                return;
+            }
+            popExperienceWindow = false;
+            WindowCenter.Instance.Open<VipExperienceWin>();
+        }
+
+        private void RefreshItemCountAct(PackType packType, int _index, int itemId)
+        {
+            if (serverInited && itemId == vipExperienceItemId)
+            {
+                CheckUseVipExperienceCard();
+            }
+        }
+
+        private void CheckUseVipExperienceCard()
+        {
+            if (PlayerDatas.Instance.baseData.VIPLv > 0)
+            {
+                return;
+            }
+            if (IsVipExperience())
+            {
+                return;
+            }
+            var singlepack = packModel.GetSinglePackModel(PackType.rptItem);
+            if (singlepack != null)
+            {
+                List<ItemModel> list = null;
+                var count = singlepack.GetItemCountByID(vipExperienceItemId, out list);
+                if (count > 0 && list != null && list.Count > 0)
+                {
+                    var itemModel = list[0];
+                    CA323_tagCMUseItems pak = new CA323_tagCMUseItems();
+                    pak.ItemIndex = (byte)itemModel.itemInfo.ItemPlace;
+                    pak.UseCnt = 1;
+                    pak.ExData = 0;
+                    GameNetSystem.Instance.SendInfo(pak);
+                }
+            }
+        }
+        #endregion
+
         #region 鎵撳紑Vip鐣岄潰
         public void OpenVipPayUI(VipWinType type)
         {
@@ -620,6 +705,7 @@
             }
             return -1;
         }
+
         #region 鍏呭��
         public Dictionary<int, int> firstRechargeWeapon { get; private set; }
         public Dictionary<int, List<AwardItem>> m_RechargeGainItemDict { get; private set; }
@@ -778,10 +864,26 @@
         {
             if (_win is MainInterfaceWin)
             {
-                if (!firstChargeRewardGet)
+                if (!firstChargeRewardGet || popExperienceWindow)
                 {
                     SnxxzGame.Instance.StartCoroutine(Co_Load());
                 }
+            }
+        }
+
+        private void OnStageLoadFinish()
+        {
+            if (!(StageManager.Instance.CurrentStage is DungeonStage))
+            {
+                popExperienceWindow = false;
+            }
+        }
+
+        private void GuideCompletedEvent(int _id)
+        {
+            if (popExperienceWindow)
+            {
+                SnxxzGame.Instance.StartCoroutine(Co_CheckPopExperienceWin());
             }
         }
 
@@ -815,7 +917,23 @@
         IEnumerator Co_Load()
         {
             yield return WaitingForSecondConst.WaitMS500;
-            CheckOpenFirstRechargeWin();
+            if (!firstChargeRewardGet)
+            {
+                CheckOpenFirstRechargeWin();
+            }
+            if (popExperienceWindow)
+            {
+                CheckAutoPopExperienceWin();
+            }
+        }
+
+        IEnumerator Co_CheckPopExperienceWin()
+        {
+            yield return WaitingForSecondConst.WaitMS500;
+            if (popExperienceWindow)
+            {
+                CheckAutoPopExperienceWin();
+            }
         }
 
         private void CheckOpenFirstRechargeWin()
@@ -1014,6 +1132,7 @@
                 ResetGiftRedpoint = true;
             }
             UpdateGiftRedpoint();
+            CheckUseVipExperienceCard();
         }
         #endregion
     }

--
Gitblit v1.8.0