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