//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, July 18, 2018 //-------------------------------------------------------- using Snxxz.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(); } } //要显示的购买档位 public List gifts = new List(); public event Action selectUpdate; //记录助力礼包通知状态,1为已通知 public Dictionary DicBuyPackage = new Dictionary(); public event Action UpdateSuperUPPackageItem; public event Action 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 GetGiftsForSale(bool refreshState=false) { List gifts = new List(); 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; } }