//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, July 18, 2018
|
//--------------------------------------------------------
|
using vnxbqy.UI;
|
using System;
|
using System.Collections.Generic;
|
using UnityEngine;
|
|
|
public class SuperUPGiftModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IOpenServerActivity
|
{
|
//超级助力 前端纯显示控制活动
|
int regeistCode = 25;
|
int m_SelectIndex = 0;
|
public int selectIndex
|
{
|
get { return m_SelectIndex; }
|
set
|
{
|
if (m_SelectIndex != value)
|
{
|
m_SelectIndex = value;
|
if (selectUpdate != null)
|
{
|
selectUpdate(value);
|
}
|
}
|
}
|
}
|
|
VipModel vipModel
|
{
|
get { return ModelCenter.Instance.GetModel<VipModel>(); }
|
}
|
|
//要显示的购买档位
|
public List<int> gifts = new List<int>();
|
|
public event Action<int> selectUpdate;
|
//记录助力礼包通知状态,1为已通知
|
public Dictionary<int, int> DicBuyPackage = new Dictionary<int, int>();
|
public event Action UpdateSuperUPPackageItem;
|
public event Action<int> onStateUpdate;
|
public override void Init()
|
{
|
ParseConfig();
|
OpenServerActivityCenter.Instance.Register(regeistCode, this);
|
PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
|
FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChange;
|
|
}
|
private const int Redpoint_key1 = 20925;
|
public Redpoint redPointStre1 = new Redpoint(209, Redpoint_key1);
|
public bool IsOpen
|
{
|
get
|
{
|
//判断是否有可购买礼包
|
var gifts = GetGiftsForSale();
|
return gifts.Count > 0;
|
}
|
}
|
|
public bool priorityOpen
|
{
|
get
|
{
|
return false;
|
}
|
}
|
|
public bool IsAdvance
|
{
|
get
|
{
|
return false;
|
}
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
DicBuyPackage.Clear();
|
}
|
public override void UnInit()
|
{
|
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
|
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChange;
|
}
|
|
bool isLoginOK = false;
|
public void OnPlayerLoginOk()
|
{
|
onStateUpdate(regeistCode);
|
m_hasNewGift = !DayRemind.Instance.GetDayRemind(DayRemind.SUPERUPGIFTS);
|
isLoginOK = true;
|
}
|
|
|
private void ParseConfig()
|
{
|
//初始化所有礼包为最新,在玩家登录后刷新,1为已通知
|
foreach (var ctgID in SuperUpRechargeConfig.GetKeys())
|
{
|
DicBuyPackage[int.Parse(ctgID)] = 0;
|
}
|
|
|
}
|
|
private void PlayerDataRefreshEvent(PlayerDataType refreshType)
|
{
|
switch (refreshType)
|
{
|
case PlayerDataType.LV:
|
case PlayerDataType.RealmLevel:
|
hasNewGift = hasNewGiftForSale();
|
break;
|
}
|
|
}
|
|
private void OnFuncStateChange(int obj)
|
{
|
if (isLoginOK)
|
{
|
hasNewGift = hasNewGiftForSale();
|
}
|
}
|
|
|
public static Action OnSuperUPGiftRefresh;
|
|
//主界面通知
|
bool m_hasNewGift = false;
|
public bool hasNewGift {
|
get {
|
return m_hasNewGift;
|
}
|
|
set {
|
m_hasNewGift = value;
|
if (m_hasNewGift == true)
|
{
|
if (OnSuperUPGiftRefresh != null)
|
{
|
OnSuperUPGiftRefresh();
|
}
|
}
|
}
|
}
|
|
|
//是否有新物品出售
|
private bool hasNewGiftForSale()
|
{
|
foreach(var item in SuperUpRechargeConfig.GetValues())
|
{
|
if (DicBuyPackage.ContainsKey(item.CTGID) && DicBuyPackage[item.CTGID] == 1)
|
{
|
continue;
|
}
|
if (PlayerDatas.Instance.baseData.LV >= item.LV &&
|
PlayerDatas.Instance.baseData.realmLevel >= item.RealmLV &&
|
(item.FuncID == 0 || FuncOpen.Instance.IsFuncOpen(item.FuncID)))
|
{
|
return true;
|
}
|
}
|
|
return false;
|
|
}
|
|
//获取可出售礼包,打开界面刷新礼包通知状态
|
public List<int> GetGiftsForSale(bool refreshState=false)
|
{
|
|
List<int> gifts = new List<int>();
|
foreach(var item in SuperUpRechargeConfig.GetValues())
|
{
|
if (PlayerDatas.Instance.baseData.LV >= item.LV &&
|
PlayerDatas.Instance.baseData.realmLevel >= item.RealmLV &&
|
(item.FuncID == 0 || FuncOpen.Instance.IsFuncOpen(item.FuncID)))
|
{
|
if (refreshState)
|
{
|
DicBuyPackage[item.CTGID] = 1;
|
}
|
VipModel.RechargeCount _rechargeCount;
|
var config = CTGConfig.Get(item.CTGID);
|
if (config == null)
|
{
|
continue;
|
}
|
|
if (vipModel.TryGetRechargeCount(item.CTGID, out _rechargeCount))
|
{
|
if (_rechargeCount.totalCount >= config.TotalBuyCount)
|
{
|
continue;
|
}
|
|
gifts.Add(item.CTGID);
|
}
|
}
|
}
|
return gifts;
|
}
|
|
}
|