using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; namespace Snxxz.UI { public class LoginAdModel : Model, IPlayerLoginOk,IBeforePlayerDataInitialize { FairyJadeInvestmentModel moneyInvestModel { get { return ModelCenter.Instance.GetModel(); } } VipInvestModel vipInvestModel { get { return ModelCenter.Instance.GetModel(); } } ImpactRankModel impactRankModel { get { return ModelCenter.Instance.GetModel(); } } public override void Init() { } public override void UnInit() { } public void OnBeforePlayerDataInitialize() { if (!(StageManager.Instance.CurrentStage is DungeonStage)) { login = true; } else { login = false; } } public void OnPlayerLoginOk() { } private bool login = false; public bool todayRemind { get { return LocalSave.GetBool(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "_LoginAd"), true); } set { LocalSave.SetBool(StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "_LoginAd"), value); } } public int presentAdId { get; set; } public bool CheckOpen() { if (CheckOpenLoginAd()) { DayRemind.Instance.SetDayRemind(DayRemind.LOGIN_AD_TIP, true); SnxxzGame.Instance.StartCoroutine(Co_OpenAd()); login = false; return true; } login = false; return false; } public bool CheckOpenLoginAd() { if (!login) { return false; } if (IsDungeon()) { return false; } if (!todayRemind && DayRemind.Instance.GetDayRemind(DayRemind.LOGIN_AD_TIP)) { return false; } if (!FuncOpen.Instance.IsFuncOpen(129)) { return false; } var _id = 0; if (!TryGetLoginAd(-1, out _id)) { return false; } return true; } public bool TryGetLoginAd(int _presentId, out int _id) { _id = 0; var configs = Config.Instance.GetAllValues(); for (int i = 0; i < configs.Count; i++) { var config = configs[i]; if (config.condition != null && config.condition.Length > 0) { switch ((LoginAdCondition)config.condition[0]) { case LoginAdCondition.MoneyInvest: if (moneyInvestModel.InvestmentGrade > 0 || PlayerDatas.Instance.baseData.LV >= 300) { continue; } break; case LoginAdCondition.VipInvest: if (vipInvestModel.GetInvestInfoByType(2).investGold > 0) { continue; } break; case LoginAdCondition.ImpactRank: if (!OpenServerActivityCenter.Instance.IsActivityOpen(0)) { continue; } break; } } if (config.id > _presentId) { _id = config.id; return true; } } return false; } private bool IsDungeon() { var mapId = PlayerDatas.Instance.baseData.MapID; var mapConfig = Config.Instance.Get(mapId); return mapConfig != null && mapConfig.MapFBType != 0; } public void Goto(int _id) { var config = Config.Instance.Get(_id); if (config != null) { WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)config.jump); } } IEnumerator Co_OpenAd() { yield return null; var _id = 0; if (TryGetLoginAd(-1, out _id)) { presentAdId = _id; todayRemind = true; WindowCenter.Instance.Open(); } } public enum LoginAdCondition { MoneyInvest, VipInvest, ImpactRank, } } }