using vnxbqy.UI;
|
using System;
|
using System.Collections.Generic;
|
using UnityEngine.UI;
|
using System.Linq;
|
using LitJson;
|
|
|
public class NewGuyGiftModel : ILModel<NewGuyGiftModel>
|
{
|
//上一档位购买后才显示下一档位,记录上一档位的购买时间 和当前档位的剩余时间
|
VipModel vipModel { get { return ModelCenter.Instance.GetModelEx<VipModel>(); } }
|
public List<int> ctgIDs = new List<int>();
|
List<int> showAfterTimes = new List<int>(); //上一档位结束后多久显示下一档位
|
int buyShowSeconds = 24 * 3600; //档位显示的最长时间
|
public int buyPlayerID = 0; //记录购买的玩家ID, 防切账号导致问题(充值是切出应用外太久会导致掉线)
|
public int buyCTGID = 0;
|
public List<int> salePerInfo = new List<int>();
|
protected override void Init()
|
{
|
GameEvent.afterPlayerDataInitializeEvent += OnAfterPlayerDataInitialize;
|
vipModel.rechargeCountEvent += RechargeCountEvent;
|
var config = FuncConfigConfig.Get("newguygift");
|
ctgIDs = JsonMapper.ToObject<List<int>>(config.Numerical1);
|
showAfterTimes = JsonMapper.ToObject<List<int>>(config.Numerical2);
|
buyShowSeconds = int.Parse(config.Numerical3);
|
salePerInfo = JsonMapper.ToObject<List<int>>(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()
|
{
|
return 0;
|
if (PlayerDatas.Instance.baseData.LV < 70)
|
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<MainInterfaceWin>() && !NewBieCenter.Instance.inGuiding
|
&& !WindowCenter.Instance.ExistAnyFullScreenOrMaskWin() && !StageLoad.Instance.isLoading
|
&& !ModelCenter.Instance.GetModel<TreasureModel>().newGotShowing)
|
{
|
WindowCenter.Instance.OpenIL<NewGuyGiftWin>();
|
}
|
}
|
|
public int GetShowCTGTime()
|
{
|
return Math.Max(buyShowSeconds - (TimeUtility.AllSeconds - LocalSave.GetInt("showxrlb" + PlayerDatas.Instance.PlayerId)), 0);
|
}
|
|
}
|
|