少年修仙传客户端代码仓库
client_linchunjie
2018-11-01 ab921746b5329925e5b4dc722accfb0292a7a29c
4505【前端】【1.2】VIP体验流程修改
2个文件已修改
196 ■■■■ 已修改文件
System/Vip/VipExperienceWin.cs 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipModel.cs 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipExperienceWin.cs
@@ -10,28 +10,19 @@
using UnityEngine.UI;
using Snxxz.UI;
namespace Snxxz.UI {
namespace Snxxz.UI
{
    public class VipExperienceWin : Window
    {
        [SerializeField] Button m_CloseBtn;
        [SerializeField] Button m_ExperienceBtn;
        [SerializeField] Text m_ContentTxt;
        [SerializeField] Button m_Known;
        [SerializeField] Text m_KnownTxt;
        [SerializeField] Text m_Content;
        [SerializeField] float m_ViewDuration = 15f;
        [SerializeField] float m_CountDownSeconds = 5f;
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel
        {
            get
            {
                return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
            }
        }
        PlayerPackModel _playerPack;
        PlayerPackModel playerPack
        {
            get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); }
        }
        float viewTime = 0f;
        float countDownTime = 0f;
        #region Built-in
        protected override void BindController()
@@ -40,21 +31,25 @@
        protected override void AddListeners()
        {
            m_CloseBtn.onClick.AddListener(CloseClick);
            m_ExperienceBtn.onClick.AddListener(OnExperienceBtn);
            m_Known.onClick.AddListener(CloseClick);
        }
        protected override void OnPreOpen()
        {
            m_ContentTxt.text = Language.Get("VipExperience3");
        }
            m_Content.text = Language.Get("VipExperience3");
            m_KnownTxt.text = Language.Get("VipCard4");
            viewTime = Time.time + m_ViewDuration;
            countDownTime = viewTime + m_CountDownSeconds;
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
        {
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
        }
        protected override void OnAfterClose()
@@ -65,14 +60,26 @@
            }
        }
        #endregion
        private void OnExperienceBtn()
        {
            if (PackSendQuestMgr.Instance.useItemModel != null)
            {
                PackSendQuestMgr.Instance.CheckUseCondition(PackSendQuestMgr.Instance.useItemModel);
            }
            CloseImmediately();
        protected override void LateUpdate()
        {
            base.LateUpdate();
            if (Time.time >= countDownTime)
            {
                if (WindowCenter.Instance.IsOpen<VipExperienceWin>())
                {
                    WindowCenter.Instance.CloseImmediately<VipExperienceWin>();
                }
            }
        }
        private void SecondEvent()
        {
            var seconds = Mathf.CeilToInt(countDownTime - Time.time);
            if (seconds <= m_CountDownSeconds)
            {
                m_KnownTxt.text = StringUtility.Contact(Language.Get("VipCard4"), "\n(", seconds, ")");
            }
        }
    }
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
    }