using System;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
public class HolidayFlashRushToBuyWin : Window
|
{
|
[SerializeField] ScrollerController saleTimeCtrl;
|
[SerializeField] Text opreationTimeText;
|
[SerializeField] Image moneyIcon;
|
[SerializeField] Text moneyNumText;
|
[SerializeField] GameObject activityOpenObj;
|
[SerializeField] GameObject activityCloseObj;
|
[SerializeField] List<HolidayFlashRushSaleItemCell> flashSaleItems = new List<HolidayFlashRushSaleItemCell>();
|
[SerializeField] RectTransform saleItemsContent;
|
|
StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
|
HolidayFlashRushToBuyModel rushToBuyModel { get { return ModelCenter.Instance.GetModel<HolidayFlashRushToBuyModel>(); } }
|
OperationFlashRushToBuy operation = null;
|
Vector3 startPos = Vector3.zero;
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
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;
|
SetDisplayModel();
|
Display();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
startPos = saleItemsContent.anchoredPosition3D;
|
rushToBuyModel.SetDayRemind();
|
CreateSaleItem();
|
}
|
|
protected override void OnPreClose()
|
{
|
rushToBuyModel.UpdatePresentFlashShopCloseEvent -= UpdatePresentFlashShopClose;
|
rushToBuyModel.UpdateSelectSaleTimeEvent -= UpdateSelectSaleTime;
|
OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
|
OperationTimeHepler.Instance.operationTimeUpdateEvent -= OperationTimeUpdateEvent;
|
storeModel.RefreshBuyShopLimitEvent -= RefreshBuyShopLimitEvent;
|
saleItemsContent.anchoredPosition3D = startPos;
|
rushToBuyModel.ResetFlashShop();
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
|
private void SetDisplayModel()
|
{
|
operation = null;
|
OperationBase operationBase;
|
if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.HolidayFlashRushToBuy, 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();
|
}
|
|
private void UpdateMoneyInfo()
|
{
|
if (rushToBuyModel.presentFlashShop == null || operation == null) return;
|
|
if (rushToBuyModel.presentFlashShop.items.Length > 0)
|
{
|
var moneyType = rushToBuyModel.presentFlashShop.items[0].moneyType;
|
moneyIcon.SetIconWithMoneyType(moneyType);
|
moneyNumText.text = UIHelper.GetMoneyCnt(moneyType).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()
|
{
|
saleItemsContent.anchoredPosition3D = startPos;
|
var flashItems = rushToBuyModel.presentFlashShop.items;
|
for(int i = 0; i < flashSaleItems.Count; i++)
|
{
|
if(i < flashItems.Length)
|
{
|
flashSaleItems[i].SetActive(true);
|
flashSaleItems[i].SetDisplayModel(i);
|
}
|
else
|
{
|
flashSaleItems[i].SetActive(false);
|
}
|
}
|
|
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)
|
{
|
if (i > 2)
|
{
|
float offsetX = 224 * (i - 2) + 10 * (i - 3);
|
float posX = saleItemsContent.anchoredPosition3D.x - offsetX;
|
saleItemsContent.anchoredPosition3D = new Vector3(posX,saleItemsContent.anchoredPosition3D.y,0);
|
}
|
break;
|
}
|
}
|
}
|
}
|
|
private void OperationTimeUpdateEvent(Operation type)
|
{
|
if (type == Operation.HolidayFlashRushToBuy)
|
{
|
Display();
|
}
|
}
|
|
private void OperationStartEvent(Operation type, int state)
|
{
|
if (type == Operation.HolidayFlashRushToBuy && state == 0)
|
{
|
Display();
|
}
|
}
|
}
|
}
|