//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, November 01, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
//用于非副本的vip次数购买,原来只用于飘渺,已改成通用
|
//functionOrder为日常类型 DailyQuestType
|
public class HazyRegionBuyTimesWin : 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;
|
|
string costFormula = string.Empty;
|
|
VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
|
DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
|
HazyRegionModel hazyModel { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } }
|
|
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;
|
dailyQuestModel.dailyQuestProgressUpdateEvent += DailyQuestProgressUpdateEvent;
|
vipModel.OnVipTimeEvent += OnVipTimeEvent;
|
Display();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
|
}
|
|
protected override void OnPreClose()
|
{
|
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshInfoEvent;
|
vipModel.OnVipTimeEvent -= OnVipTimeEvent;
|
dailyQuestModel.dailyQuestProgressUpdateEvent -= DailyQuestProgressUpdateEvent;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
private void OnVipTimeEvent()
|
{
|
Display();
|
}
|
|
private void PlayerDataRefreshInfoEvent(PlayerDataType refreshType)
|
{
|
if (refreshType == PlayerDataType.VIPLv)
|
{
|
Display();
|
}
|
}
|
|
int dayUseItemTimes = 0;
|
int dayBuyTimes = 0;
|
void Display()
|
{
|
DailyQuestTimes dailyQuestTimes;
|
|
dayUseItemTimes = 0;
|
dayBuyTimes = 0;
|
|
if (dailyQuestModel.TryGetDailyQuestTimes(functionOrder, out dailyQuestTimes))
|
{
|
dayUseItemTimes = dailyQuestTimes.dayUseItemTimes;
|
dayBuyTimes = dailyQuestTimes.dayBuyTimes;
|
}
|
|
var config = DailyQuestConfig.Get(functionOrder);
|
var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID);
|
|
m_DungeonName.text = config.Title;
|
int vipBuyTimes = 0;
|
int nextVipLv = -1;
|
if (dailyQuestOpenTime.BuyTimesPrivilegeID != 0)
|
{
|
vipBuyTimes = vipModel.GetVipPrivilegeCnt((VipPrivilegeType)dailyQuestOpenTime.BuyTimesPrivilegeID);
|
nextVipLv = vipModel.GetPrivilegeVipLv((VipPrivilegeType)dailyQuestOpenTime.BuyTimesPrivilegeID, vipBuyTimes);
|
}
|
var surplusTimes = vipBuyTimes + dailyQuestOpenTime.DayBuyTimes - dayBuyTimes;
|
var canBuyTimes = surplusTimes > 0;
|
|
var surplusTimeDisplay = UIHelper.AppendColor(surplusTimes > 0 ? TextColType.Green : TextColType.Red, surplusTimes.ToString(), true);
|
m_TodayBuyTimes.text = Language.Get("TimesBuyLanguage1", surplusTimeDisplay, vipBuyTimes + dailyQuestOpenTime.DayBuyTimes);
|
|
bool displayUp = nextVipLv != -1;
|
m_ContainerVipUp.SetActive(displayUp);
|
m_GotoRecharge.SetActive(nextVipLv != -1 && !canBuyTimes);
|
|
if (displayUp)
|
{
|
var _buyTimes = VipPrivilegeConfig.GetVipPrivilegeData((VipPrivilegeType)dailyQuestOpenTime.BuyTimesPrivilegeID, nextVipLv);
|
var upTimes = _buyTimes - vipBuyTimes;
|
m_VipUpRemind.text = Language.Get("TimesBuyLanguage2", nextVipLv, upTimes);
|
}
|
if (dailyQuestOpenTime.MoneyType == 4)
|
{
|
m_CostRemind.text = Language.Get("TimesBuyLanguage4", dailyQuestOpenTime.BuyNeedMoney[Math.Min(dayBuyTimes, dailyQuestOpenTime.BuyNeedMoney.Length - 1)]);
|
}
|
else
|
{
|
m_CostRemind.text = Language.Get("TimesBuyLanguage3", dailyQuestOpenTime.BuyNeedMoney[Math.Min(dayBuyTimes, dailyQuestOpenTime.BuyNeedMoney.Length - 1)]);
|
}
|
|
m_BuyTimes.SetActive(canBuyTimes);
|
m_GotoRecharge.SetActive(!canBuyTimes && nextVipLv != -1);
|
m_ContainerBuylimit.SetActive(!canBuyTimes && nextVipLv == -1);
|
}
|
|
private void BuyTimes()
|
{
|
var config = DailyQuestConfig.Get(functionOrder);
|
var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID);
|
var limitTimes = dailyQuestOpenTime.DayTimes;
|
|
var totalTimes = dailyQuestModel.GetDailyQuestTotalTimes(functionOrder);
|
var completedTimes = dailyQuestModel.GetDailyQuestCompletedTimes(functionOrder);
|
var times = Mathf.Clamp(totalTimes - completedTimes, 0, limitTimes);
|
|
if (times >= limitTimes)
|
{
|
SysNotifyMgr.Instance.ShowTip("OpenHazyAddTimesError_1");
|
return;
|
}
|
|
if (UIHelper.GetMoneyCnt(dailyQuestOpenTime.MoneyType) < (ulong)dailyQuestOpenTime.BuyNeedMoney[Math.Min(dayBuyTimes, dailyQuestOpenTime.BuyNeedMoney.Length - 1)])
|
{
|
RechargeTipWin.moneyType = dailyQuestOpenTime.MoneyType;
|
WindowCenter.Instance.Open<RechargeTipWin>();
|
return;
|
}
|
|
var pak = new CA525_tagCMBuyDailyActionCnt();
|
pak.AddType = 0;
|
pak.ActionID = (uint)config.RelatedID;
|
GameNetSystem.Instance.SendInfo(pak);
|
}
|
|
private void DailyQuestProgressUpdateEvent(int id)
|
{
|
Display();
|
|
}
|
private void GotoRecharge()
|
{
|
WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.VipRechargeFunc1);
|
}
|
}
|
|
}
|
|
|