//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, November 01, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class DungeonBuyTimesWin : Window
|
{
|
[SerializeField] Button m_Close;
|
[SerializeField] Text m_DungeonName;
|
[SerializeField] Text m_TodayBuyTimes;
|
[SerializeField] Text m_CostRemind;
|
[SerializeField] RectTransform m_ContainerVipUp;
|
[SerializeField] Text m_VipUpRemind;
|
[SerializeField] RectTransform m_ContainerBuylimit;
|
[SerializeField] Button m_BuyTimes;
|
[SerializeField] Button m_GotoRecharge;
|
|
DungeonRecord dungeonRecord;
|
string costFormula = string.Empty;
|
|
DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
|
|
protected override void BindController()
|
{
|
|
}
|
|
protected override void AddListeners()
|
{
|
m_Close.onClick.AddListener(CloseClick);
|
m_BuyTimes.onClick.AddListener(BuyTimes);
|
m_GotoRecharge.onClick.AddListener(GotoRecharge);
|
}
|
|
protected override void OnPreOpen()
|
{
|
PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshInfoEvent;
|
vipModel.OnVipTimeEvent += OnVipTimeEvent;
|
model.updateDungeonBuyCnt += UpdateDungeonBuyCnt;
|
if (model.TryGetRecord(model.currentDungeon.mapId, out dungeonRecord))
|
{
|
Display();
|
}
|
else
|
{
|
CloseImmediately();
|
}
|
}
|
|
protected override void OnAfterOpen()
|
{
|
|
}
|
|
protected override void OnPreClose()
|
{
|
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshInfoEvent;
|
vipModel.OnVipTimeEvent -= OnVipTimeEvent;
|
model.updateDungeonBuyCnt -= UpdateDungeonBuyCnt;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
private void OnVipTimeEvent()
|
{
|
Display();
|
}
|
|
private void PlayerDataRefreshInfoEvent(PlayerDataType refreshType)
|
{
|
if (refreshType == PlayerDataType.VIPLv)
|
{
|
Display();
|
}
|
}
|
|
private void UpdateDungeonBuyCnt()
|
{
|
Display();
|
}
|
|
void Display()
|
{
|
var openTimeConfig = DungeonOpenTimeConfig.Get(model.currentDungeon.mapId);
|
|
m_DungeonName.text = openTimeConfig.FBName;
|
|
int defaultTimes = VipPrivilegeConfig.GetVipPrivilegeData((VipPrivilegeType)openTimeConfig.BuyTimesID, 0);
|
int vipBuyTimes = vipModel.GetVipPrivilegeCnt((VipPrivilegeType)openTimeConfig.BuyTimesID) - defaultTimes;
|
var totalTimes = defaultTimes + vipBuyTimes;
|
var surplusTimes = totalTimes - dungeonRecord.buyTimes;
|
var canBuyTimes = defaultTimes > dungeonRecord.buyTimes || surplusTimes > 0;
|
|
var surplusTimeDisplay = UIHelper.AppendColor(surplusTimes > 0 ? TextColType.Green : TextColType.Red, surplusTimes.ToString(), true);
|
|
m_TodayBuyTimes.text = Language.Get("TimesBuyLanguage1", surplusTimeDisplay, totalTimes);
|
int nextVipLv = vipModel.GetPrivilegeVipLv((VipPrivilegeType)openTimeConfig.BuyTimesID, totalTimes);
|
|
var currentVipLv = PlayerDatas.Instance.baseData.VIPLv;
|
int vipHasTimesLv = vipModel.GetPrivilegeVipLv((VipPrivilegeType)openTimeConfig.BuyTimesID, defaultTimes);
|
|
bool displayUp = (currentVipLv >= vipHasTimesLv && nextVipLv != -1) || (currentVipLv < vipHasTimesLv && surplusTimes == 0 && nextVipLv != -1);
|
m_ContainerVipUp.SetActive(displayUp);
|
m_GotoRecharge.SetActive(nextVipLv != -1 && !canBuyTimes);
|
|
if (displayUp)
|
{
|
var _buyTimes = VipPrivilegeConfig.GetVipPrivilegeData((VipPrivilegeType)openTimeConfig.BuyTimesID, nextVipLv);
|
var upTimes = _buyTimes - totalTimes;
|
m_VipUpRemind.text = Language.Get("TimesBuyLanguage2", nextVipLv, upTimes);
|
}
|
if (model.TryGetBuyCountCost(model.currentDungeon.mapId, out costFormula))
|
{
|
Equation.Instance.Clear();
|
Equation.Instance.AddKeyValue("hasBuyCnt", dungeonRecord.buyTimes);
|
int _cost = Equation.Instance.Eval<int>(costFormula);
|
m_CostRemind.text = Language.Get("TimesBuyLanguage3", _cost);
|
}
|
|
m_BuyTimes.SetActive(canBuyTimes);
|
m_GotoRecharge.SetActive(!canBuyTimes && nextVipLv != -1);
|
m_ContainerBuylimit.SetActive(!canBuyTimes && nextVipLv == -1);
|
}
|
|
private void BuyTimes()
|
{
|
if (!CheckSpecialDungeon())
|
{
|
return;
|
}
|
Equation.Instance.Clear();
|
Equation.Instance.AddKeyValue("hasBuyCnt", dungeonRecord.buyTimes);
|
model.TryGetBuyCountCost(model.currentDungeon.mapId, out costFormula);
|
int _cost = Equation.Instance.Eval<int>(costFormula);
|
if (PlayerDatas.Instance.baseData.diamond >= _cost)
|
{
|
model.RequestBuyEnterCount(model.currentDungeon.mapId);
|
}
|
else
|
{
|
if (VersionConfig.Get().isBanShu)
|
{
|
SysNotifyMgr.Instance.ShowTip("GoldErr");
|
return;
|
}
|
|
WindowCenter.Instance.Open<RechargeTipWin>();
|
}
|
}
|
|
private bool CheckSpecialDungeon()
|
{
|
if (DemonJarModel.DATA_MAPID == model.currentDungeon.mapId)
|
{
|
var _totalTimes = model.GetTotalTimes(DemonJarModel.DATA_MAPID);
|
var _enterTimes = model.GetEnterTimes(DemonJarModel.DATA_MAPID);
|
if ((_totalTimes - _enterTimes) >= DemonJarModel.TOTALTIME_LIMIT)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("DemonJar18"));
|
return false;
|
}
|
}
|
else if (JadeDynastyBossModel.JADEDYNASTY_MAP == model.currentDungeon.mapId)
|
{
|
var _totalTimes = model.GetTotalTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
|
var _enterTimes = model.GetEnterTimes(JadeDynastyBossModel.JADEDYNASTY_MAP);
|
var jadeDynastyBossModel = ModelCenter.Instance.GetModel<JadeDynastyBossModel>();
|
if ((_totalTimes - _enterTimes) >= jadeDynastyBossModel.challengeLimitCount)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("DemonJar18"));
|
return false;
|
}
|
var mapId = PlayerDatas.Instance.baseData.MapID;
|
var dataMapId = model.GetDataMapIdByMapId(mapId);
|
if (dataMapId == JadeDynastyBossModel.JADEDYNASTY_MAP)
|
{
|
SysNotifyMgr.Instance.ShowTip("JadeDynastyBossBuyTimesError");
|
return false;
|
}
|
}
|
return true;
|
}
|
|
private void GotoRecharge()
|
{
|
WindowCenter.Instance.Close<FindPreciousFrameWin>();
|
WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.VipRechargeFunc1);
|
}
|
}
|
|
}
|
|
|
|
|