using vnxbqy.UI; using System; using System.Collections.Generic; using UnityEngine.UI; using System.Linq; using LitJson; public class NewGuyGiftModel : ILModel { //上一档位购买后才显示下一档位,记录上一档位的购买时间 和当前档位的剩余时间 VipModel vipModel { get { return ModelCenter.Instance.GetModelEx(); } } public List ctgIDs = new List(); List showAfterTimes = new List(); //上一档位结束后多久显示下一档位 int buyShowSeconds = 24 * 3600; //档位显示的最长时间 public int buyPlayerID = 0; //记录购买的玩家ID, 防切账号导致问题(充值是切出应用外太久会导致掉线) public int buyCTGID = 0; public List salePerInfo = new List(); protected override void Init() { GameEvent.afterPlayerDataInitializeEvent += OnAfterPlayerDataInitialize; vipModel.rechargeCountEvent += RechargeCountEvent; var config = FuncConfigConfig.Get("newguygift"); ctgIDs = JsonMapper.ToObject>(config.Numerical1); showAfterTimes = JsonMapper.ToObject>(config.Numerical2); buyShowSeconds = int.Parse(config.Numerical3); salePerInfo = JsonMapper.ToObject>(config.Numerical4); } protected override void UnInit() { GameEvent.afterPlayerDataInitializeEvent -= OnAfterPlayerDataInitialize; vipModel.rechargeCountEvent -= RechargeCountEvent; } public void OnAfterPlayerDataInitialize() { if (buyPlayerID != PlayerDatas.Instance.PlayerId) { buyPlayerID = 0; buyCTGID = 0; } } private void RechargeCountEvent(int id) { if (buyPlayerID == PlayerDatas.Instance.PlayerId && buyCTGID == id) { VipModel.RechargeCount rechargeCount; vipModel.TryGetRechargeCount(id, out rechargeCount); if (rechargeCount.totalCount > 0) { LocalSave.SetInt("xrlbbuy" + PlayerDatas.Instance.PlayerId, TimeUtility.AllSeconds); LocalSave.SetInt("showxrlb" + PlayerDatas.Instance.PlayerId, 0); buyPlayerID = 0; buyCTGID = 0; } } } //获取当前要显示的充值档位 0表示不显示 //xrlbbuy 记录上一档位的购买时间 //showxrlb 记录上一次开始显示的时间 //xrlbPassIndex 记录当前显示的档位 public int RefreshShowCtgID() { if (PlayerDatas.Instance.baseData.LV < 3) return 0; int index = LocalSave.GetInt("xrlbPassIndex" + PlayerDatas.Instance.PlayerId); //当前显示的档位 index--; if (index >= ctgIDs.Count) return 0; int buyIndex = -1; //重置数据 VipModel.RechargeCount rechargeCount; for (int i = 0; i < ctgIDs.Count; i++) { if (vipModel.TryGetRechargeCount(ctgIDs[i], out rechargeCount)) { if (rechargeCount.totalCount == 0) { buyIndex = i; break; } } } if (buyIndex == -1) { //全部已购买 LocalSave.SetInt("xrlbPassIndex" + PlayerDatas.Instance.PlayerId, ctgIDs.Count + 1); return 0; } if (buyIndex > index) { //已购买的档位大于当前显示的档位,更新显示档位 index = buyIndex; LocalSave.SetInt("xrlbPassIndex" + PlayerDatas.Instance.PlayerId, index + 1); } //判断是否到可显示时间 if (TimeUtility.AllSeconds - LocalSave.GetInt("xrlbbuy" + PlayerDatas.Instance.PlayerId) >= showAfterTimes[index]) { if (LocalSave.GetInt("showxrlb" + PlayerDatas.Instance.PlayerId) == 0) { //开始显示 LocalSave.SetInt("showxrlb" + PlayerDatas.Instance.PlayerId, TimeUtility.AllSeconds); AutoOpen(); } else if (TimeUtility.AllSeconds - LocalSave.GetInt("showxrlb" + PlayerDatas.Instance.PlayerId) >= buyShowSeconds) { //过期进入下一档位的显示流程 index++; LocalSave.SetInt("xrlbbuy" + PlayerDatas.Instance.PlayerId, TimeUtility.AllSeconds); LocalSave.SetInt("showxrlb" + PlayerDatas.Instance.PlayerId, 0); LocalSave.SetInt("xrlbPassIndex" + PlayerDatas.Instance.PlayerId, index + 1); if (index >= ctgIDs.Count) { //全部已购买 return 0; } } return ctgIDs[index]; } if (LocalSave.GetInt("showxrlb" + PlayerDatas.Instance.PlayerId) != 0) { LocalSave.SetInt("showxrlb" + PlayerDatas.Instance.PlayerId, 0); } //还未到显示时间 return 0; } void AutoOpen() { if (WindowCenter.Instance.IsOpen() && !NewBieCenter.Instance.inGuiding && !WindowCenter.Instance.ExistAnyFullScreenOrMaskWin() && !StageLoad.Instance.isLoading && !ModelCenter.Instance.GetModel().newGotShowing) { WindowCenter.Instance.OpenIL(); } } public int GetShowCTGTime() { return Math.Max(buyShowSeconds - (TimeUtility.AllSeconds - LocalSave.GetInt("showxrlb" + PlayerDatas.Instance.PlayerId)), 0); } }