using vnxbqy.UI;
|
using System;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
|
public class MergeServerFlashRushToBuyWin : ILWindow
|
{
|
ScrollerController saleTimeCtrl;
|
ScrollerController saleItemCtrl;
|
Text opreationTimeText;
|
Text moneyNumText;
|
Transform activityOpenObj;
|
Transform activityCloseObj;
|
|
StoreModel storeModel { get { return ModelCenter.Instance.GetModelEx<StoreModel>(); } }
|
MergeServerFlashRushToBuyModel rushToBuyModel = MergeServerFlashRushToBuyModel.Instance;
|
OperationFlashRushToBuy operation = null;
|
#region Built-in
|
protected override void BindController()
|
{
|
saleTimeCtrl = proxy.GetWidgtEx<ScrollerController>("FalshSaleTimeCtrl");
|
saleItemCtrl = proxy.GetWidgtEx<ScrollerController>("Container_FlashSales");
|
opreationTimeText = proxy.GetWidgtEx<Text>("Text_OperationTime");
|
moneyNumText = proxy.GetWidgtEx<Text>("Txt_MoneyValue1");
|
activityOpenObj = proxy.GetWidgtEx<Transform>("ActivityOpen");
|
activityCloseObj = proxy.GetWidgtEx<Transform>("ActivityClose");
|
}
|
|
protected override void AddListeners()
|
{
|
}
|
|
protected override void OnPreOpen()
|
{
|
rushToBuyModel.SetDefaultSelectSaleTime();
|
OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
|
OperationTimeHepler.Instance.operationTimeUpdateEvent += OperationTimeUpdateEvent;
|
rushToBuyModel.UpdateSelectSaleTimeEvent += UpdateSelectSaleTime;
|
rushToBuyModel.UpdatePresentFlashShopCloseEvent += UpdatePresentFlashShopClose;
|
storeModel.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent;
|
saleTimeCtrl.OnRefreshCell += OnRefreshTimeCell;
|
saleItemCtrl.OnRefreshCell += OnRefreshItemCell;
|
GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
|
|
rushToBuyModel.UpdateAllAppointmentEvent += UpdateItemCell;
|
|
SetDisplayModel();
|
|
}
|
|
protected override void OnAfterOpen()
|
{
|
Display();
|
rushToBuyModel.SetDayRemind();
|
CreateSaleItem();
|
}
|
|
protected override void OnPreClose()
|
{
|
rushToBuyModel.UpdatePresentFlashShopCloseEvent -= UpdatePresentFlashShopClose;
|
rushToBuyModel.UpdateSelectSaleTimeEvent -= UpdateSelectSaleTime;
|
OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
|
OperationTimeHepler.Instance.operationTimeUpdateEvent -= OperationTimeUpdateEvent;
|
storeModel.RefreshBuyShopLimitEvent -= RefreshBuyShopLimitEvent;
|
saleTimeCtrl.OnRefreshCell -= OnRefreshTimeCell;
|
saleItemCtrl.OnRefreshCell -= OnRefreshItemCell;
|
|
rushToBuyModel.UpdateAllAppointmentEvent -= UpdateItemCell;
|
rushToBuyModel.ResetFlashShop();
|
}
|
|
#endregion
|
|
void OnSecondEvent()
|
{
|
saleTimeCtrl.m_Scorller.RefreshActiveCellViews();
|
}
|
|
void UpdateItemCell()
|
{
|
saleItemCtrl.m_Scorller.RefreshActiveCellViews();
|
}
|
|
|
void OnRefreshTimeCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetILBehaviour<MergeServerFlashRushToBuyTimeCell>();
|
_cell.Refresh(cell);
|
}
|
|
|
void OnRefreshItemCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetILBehaviour<MergeServerFlashRushToBuyItemCell>();
|
_cell.SetDisplayModel(cell.index);
|
}
|
|
|
private void SetDisplayModel()
|
{
|
operation = null;
|
OperationBase operationBase;
|
if (OperationTimeHepler.Instance.TryGetOperationTime(rushToBuyModel.operationType, out operationBase))
|
{
|
operation = operationBase as OperationFlashRushToBuy;
|
}
|
}
|
|
private void Display()
|
{
|
if (rushToBuyModel.presentFlashShop == null || operation == null) return;
|
|
opreationTimeText.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), UIHelper.AppendColor(TextColType.Green, operation.ToDisplayTime()));
|
UpdateMoneyInfo();
|
activityOpenObj.SetActive(true);
|
activityCloseObj.SetActive(false);
|
CreateOperationTimes();
|
}
|
|
|
private void RefreshBuyShopLimitEvent()
|
{
|
UpdateMoneyInfo();
|
saleItemCtrl.m_Scorller.RefreshActiveCellViews();
|
}
|
|
private void UpdateMoneyInfo()
|
{
|
if (rushToBuyModel.presentFlashShop == null || operation == null) return;
|
|
moneyNumText.text = UIHelper.GetMoneyCnt(1).ToString();
|
|
}
|
|
private void UpdateSelectSaleTime()
|
{
|
CreateSaleItem();
|
saleTimeCtrl.m_Scorller.RefreshActiveCellViews();
|
}
|
|
|
private void UpdatePresentFlashShopClose()
|
{
|
if (rushToBuyModel.presentFlashShop != null)
|
{
|
activityOpenObj.SetActive(true);
|
activityCloseObj.SetActive(false);
|
CreateOperationTimes();
|
CreateSaleItem();
|
}
|
else
|
{
|
activityOpenObj.SetActive(false);
|
activityCloseObj.SetActive(true);
|
}
|
|
}
|
|
private void CreateOperationTimes()
|
{
|
if (operation == null) return;
|
|
saleTimeCtrl.Refresh();
|
for (int i = 0; i < operation.flashShops.Count; i++)
|
{
|
var saleShop = operation.flashShops[i];
|
int seconds = 0;
|
int buyState = operation.GetBuyTimeState(TimeUtility.ServerNow, saleShop.dayIndex, saleShop.timeIndex, out seconds);
|
if (buyState != 1)
|
{
|
int index = saleShop.dayIndex * 100 + saleShop.timeIndex;
|
saleTimeCtrl.AddCell(ScrollerDataType.Header, index);
|
}
|
}
|
saleTimeCtrl.Restart();
|
}
|
|
|
public void CreateSaleItem()
|
{
|
var flashItems = rushToBuyModel.presentFlashShop.items;
|
saleItemCtrl.Refresh();
|
for (int i = 0; i < flashItems.Length; i++)
|
{
|
saleItemCtrl.AddCell(ScrollerDataType.Header, i);
|
}
|
saleItemCtrl.Restart();
|
//需要跳转预约
|
int seconds = 0;
|
int buyState = operation.GetBuyTimeState(TimeUtility.ServerNow, rushToBuyModel.presentFlashShop.dayIndex,
|
rushToBuyModel.presentFlashShop.timeIndex, out seconds);
|
|
if (buyState == 0)
|
{
|
for (int i = 0; i < flashItems.Length; i++)
|
{
|
if (flashItems[i].isAppointment == 1)
|
{
|
saleItemCtrl.JumpIndex(i);
|
break;
|
}
|
}
|
}
|
}
|
|
private void OperationTimeUpdateEvent(Operation type)
|
{
|
if (type == Operation.FlashRushToBuy)
|
{
|
Display();
|
}
|
}
|
|
private void OperationStartEvent(Operation type, int state)
|
{
|
if (type == Operation.FlashRushToBuy && state == 0)
|
{
|
Display();
|
}
|
}
|
}
|