//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, November 06, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class HolidayDaySumRechargeWin : Window
|
{
|
[SerializeField] Text m_Money;
|
[SerializeField] ItemCell[] m_Items;
|
[SerializeField] Image[] m_ItemGotSigns;
|
[SerializeField] Text m_Recharge;
|
[SerializeField] Button m_Func;
|
[SerializeField] Button m_GetReward;
|
[SerializeField] Text m_GetRewardBtnTxt;
|
[SerializeField] ScrollerController m_ScrollerControl;
|
|
[SerializeField] RectTransform m_ContaienrOpen;
|
[SerializeField] RectTransform m_ConatinerOverdue;
|
[SerializeField] Text m_Time;
|
|
HolidayDaySumRechargeModel model
|
{
|
get { return ModelCenter.Instance.GetModel<HolidayDaySumRechargeModel>(); }
|
}
|
|
PackModel packModel
|
{
|
get { return ModelCenter.Instance.GetModel<PackModel>(); }
|
}
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_Func.onClick.AddListener(OnFunc);
|
m_GetReward.onClick.AddListener(GetReward);
|
m_ScrollerControl.OnRefreshCell += OnRefreshCell;
|
}
|
|
protected override void OnPreOpen()
|
{
|
model.selectIndex = GetSelect();
|
model.selectUpdate += SelectUpdate;
|
model.accumulateRechargeUpdate += AccumulateRechargeUpdate;
|
OperationTimeHepler.Instance.dayResetEvent += DayResetEvent;
|
TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh;
|
OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
|
OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
|
|
Dipslay();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
model.selectUpdate -= SelectUpdate;
|
model.accumulateRechargeUpdate -= AccumulateRechargeUpdate;
|
OperationTimeHepler.Instance.dayResetEvent -= DayResetEvent;
|
TimeUtility.OnServerOpenDayRefresh -= OnServerOpenDayRefresh;
|
OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent;
|
OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
|
private void Dipslay()
|
{
|
DisplayMoney(model.selectIndex);
|
DisplayItems(model.selectIndex);
|
DisplayFunc(model.selectIndex);
|
DisplayRecharge();
|
DisplayRewards();
|
DisplayTime();
|
}
|
|
private void OnFunc()
|
{
|
WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.VipRechargeFunc1);
|
}
|
|
private void GetReward()
|
{
|
OperationBase operationBase;
|
OperationAccumulateRecharge.Recharge recharge = null;
|
if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.HolidayAccumulateRecharge, out operationBase))
|
{
|
OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
|
var reward = operation.GetReward(TimeUtility.ServerNow);
|
if (model.selectIndex >= 0 && model.selectIndex < reward.recharges.Count)
|
{
|
recharge = reward.recharges[model.selectIndex];
|
}
|
}
|
if (recharge != null)
|
{
|
var count = packModel.GetEmptyGridCount(PackType.Item);
|
if (count < recharge.items.Count)
|
{
|
SysNotifyMgr.Instance.ShowTip("BagFull");
|
return;
|
}
|
if (model.SatisfyGetReward(recharge))
|
{
|
model.GetAccumulateRechargeReward(recharge);
|
}
|
}
|
}
|
|
private int GetSelect()
|
{
|
OperationBase operationBase;
|
if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.HolidayAccumulateRecharge, out operationBase))
|
{
|
OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
|
var reward = operation.GetReward(TimeUtility.ServerNow);
|
for (int i = 0; i < reward.recharges.Count; i++)
|
{
|
var recharge = reward.recharges[i];
|
if (model.SatisfyGetReward(recharge))
|
{
|
return i;
|
}
|
}
|
for (int i = 0; i < reward.recharges.Count; i++)
|
{
|
var recharge = reward.recharges[i];
|
if (!model.IsRewardGot(recharge) && !model.SatisfyGetReward(recharge))
|
{
|
return i;
|
}
|
}
|
}
|
return 0;
|
}
|
|
private void DisplayMoney(int index)
|
{
|
OperationBase operationBase;
|
if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.HolidayAccumulateRecharge, out operationBase))
|
{
|
OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
|
var reward = operation.GetReward(TimeUtility.ServerNow);
|
if (index >= 0 && index < reward.recharges.Count)
|
{
|
var recharge = reward.recharges[index];
|
m_Money.text = UIHelper.GetMoneyFormat(recharge.requireGold);
|
}
|
}
|
}
|
|
private void DisplayItems(int index)
|
{
|
OperationBase operationBase;
|
OperationAccumulateRecharge.Recharge recharge = null;
|
if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.HolidayAccumulateRecharge, out operationBase))
|
{
|
OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
|
var reward = operation.GetReward(TimeUtility.ServerNow);
|
if (index >= 0 && index < reward.recharges.Count)
|
{
|
recharge = reward.recharges[index];
|
}
|
}
|
for (int i = 0; i < m_Items.Length; i++)
|
{
|
m_Items[i].button.RemoveAllListeners();
|
if (recharge != null && i < recharge.items.Count)
|
{
|
var item = recharge.items[i];
|
m_Items[i].SetActive(true);
|
ItemCellModel itemCellModel = new ItemCellModel(item.id, true, (ulong)item.count);
|
m_Items[i].Init(itemCellModel);
|
m_Items[i].button.AddListener(() =>
|
{
|
ItemTipUtility.Show( item.id);
|
});
|
}
|
else
|
{
|
m_Items[i].SetActive(false);
|
}
|
}
|
}
|
|
private void DisplayRecharge()
|
{
|
m_Recharge.text = Language.Get("rechargeYet", UIHelper.GetMoneyFormat(model.rechargeTotal));
|
}
|
|
private void DisplayFunc(int index)
|
{
|
OperationBase operationBase;
|
OperationAccumulateRecharge.Recharge recharge = null;
|
if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.HolidayAccumulateRecharge, out operationBase))
|
{
|
OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
|
var reward = operation.GetReward(TimeUtility.ServerNow);
|
if (index >= 0 && index < reward.recharges.Count)
|
{
|
recharge = reward.recharges[index];
|
}
|
}
|
for (int i = 0; i < m_ItemGotSigns.Length; i++)
|
{
|
m_ItemGotSigns[i].SetActive(recharge != null && model.IsRewardGot(recharge));
|
}
|
m_GetReward.SetActive(true);
|
m_Func.SetActive(true);
|
if (recharge == null)
|
{
|
m_GetReward.SetActive(false);
|
return;
|
}
|
if (model.IsRewardGot(recharge))
|
{
|
m_GetReward.SetInteractable(m_GetRewardBtnTxt, false);
|
m_GetRewardBtnTxt.text = Language.Get("AccumulateRecharge_Got");
|
m_Func.SetActive(false);
|
return;
|
}
|
if (model.SatisfyGetReward(recharge))
|
{
|
m_GetReward.SetInteractable(m_GetRewardBtnTxt, true);
|
m_GetRewardBtnTxt.color = UIHelper.GetUIColor(TextColType.LightYellow);
|
m_Func.SetActive(false);
|
m_GetRewardBtnTxt.text = Language.Get("AccumulateRecharge_GetReward");
|
}
|
else
|
{
|
m_GetReward.SetActive(false);
|
}
|
}
|
|
private void DisplayRewards()
|
{
|
OperationBase operationBase;
|
OperationAccumulateRecharge.Reward reward = null;
|
if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.HolidayAccumulateRecharge, out operationBase))
|
{
|
OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
|
reward = operation.GetReward(TimeUtility.ServerNow);
|
}
|
|
if (reward != null)
|
{
|
m_ScrollerControl.Refresh();
|
for (int i = 0; i < reward.recharges.Count; i++)
|
{
|
m_ScrollerControl.AddCell(ScrollerDataType.Header, i);
|
}
|
m_ScrollerControl.Restart();
|
m_ScrollerControl.JumpIndex(model.selectIndex);
|
}
|
}
|
|
private void DisplayTime()
|
{
|
m_ContaienrOpen.SetActive(model.IsOpen);
|
m_ConatinerOverdue.SetActive(!model.IsOpen);
|
OperationBase operationBase;
|
if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.HolidayAccumulateRecharge, out operationBase))
|
{
|
OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
|
m_Time.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"),
|
UIHelper.AppendColor(TextColType.Green, operation.ToDisplayTime()));
|
}
|
}
|
|
private void SelectUpdate(int index)
|
{
|
DisplayMoney(index);
|
DisplayItems(index);
|
DisplayFunc(index);
|
}
|
|
private void AccumulateRechargeUpdate()
|
{
|
DisplayRecharge();
|
DisplayFunc(model.selectIndex);
|
}
|
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var accumulateRechargeCell = cell as HolidayDaySumRechargeCell;
|
accumulateRechargeCell.Display(cell.index);
|
}
|
|
private void DayResetEvent(int resetType)
|
{
|
OperationBase operationBase;
|
if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.HolidayAccumulateRecharge, out operationBase))
|
{
|
if (resetType == operationBase.resetType)
|
{
|
model.selectIndex = GetSelect();
|
Dipslay();
|
}
|
}
|
}
|
|
private void OperationEndEvent(Operation operation, int state)
|
{
|
if (operation == Operation.HolidayAccumulateRecharge && state == 0)
|
{
|
DisplayTime();
|
}
|
}
|
|
private void OperationStartEvent(Operation operation, int state)
|
{
|
if (operation == Operation.HolidayAccumulateRecharge && state == 0)
|
{
|
model.selectIndex = GetSelect();
|
Dipslay();
|
}
|
}
|
|
private void OnServerOpenDayRefresh()
|
{
|
model.selectIndex = GetSelect();
|
Dipslay();
|
}
|
}
|
|
}
|