//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Thursday, May 10, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using TableConfig;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI {
|
|
public class OpenServerGiftWin : Window
|
{
|
[SerializeField] RectTransform m_ContainerDisplay;
|
[SerializeField] Button[] m_CloseBtns;
|
[SerializeField] OSGiftBehaviour[] m_OSGifts;
|
[SerializeField] RectTransform m_ContainerTime;
|
[SerializeField] Text m_Overdue;
|
[SerializeField] Text m_Timer;
|
StoreModel m_Model;
|
StoreModel model
|
{
|
get
|
{
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<StoreModel>());
|
}
|
}
|
|
int currentSelectId = 0;
|
|
OSGiftModel giftModel { get { return ModelCenter.Instance.GetModel<OSGiftModel>(); } }
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
for (int i = 0; i < m_CloseBtns.Length; i++)
|
{
|
m_CloseBtns[i].onClick.AddListener(OnCloseClick);
|
}
|
}
|
|
protected override void OnPreOpen()
|
{
|
WindowCenter.Instance.windowAfterOpenEvent += WindowAfterOpenEvent;
|
WindowCenter.Instance.windowAfterCloseEvent += windowAfterCloseEvent;
|
model.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent;
|
TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh;
|
GlobalTimeEvent.Instance.secondEvent += SecondEvent;
|
giftModel.timeLimitUpdate += TimeLimitUpdate;
|
giftModel.SetDayRemind();
|
Display();
|
|
m_ContainerDisplay.gameObject.SetActive(!WindowCenter.Instance.CheckOpen<OffLineOnHookWin>());
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
WindowCenter.Instance.windowAfterOpenEvent -= WindowAfterOpenEvent;
|
WindowCenter.Instance.windowAfterCloseEvent -= windowAfterCloseEvent;
|
model.RefreshBuyShopLimitEvent -= RefreshBuyShopLimitEvent;
|
TimeUtility.OnServerOpenDayRefresh -= OnServerOpenDayRefresh;
|
GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
|
giftModel.timeLimitUpdate -= TimeLimitUpdate;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
|
private void WindowAfterOpenEvent(Window _win)
|
{
|
if(_win is OffLineOnHookWin)
|
{
|
m_ContainerDisplay.gameObject.SetActive(false);
|
}
|
}
|
|
private void windowAfterCloseEvent(Window _win)
|
{
|
if (_win is OffLineOnHookWin)
|
{
|
m_ContainerDisplay.gameObject.SetActive(true);
|
}
|
}
|
|
private void RefreshBuyShopLimitEvent()
|
{
|
Display();
|
}
|
|
private void OnServerOpenDayRefresh()
|
{
|
Display();
|
}
|
|
private void SecondEvent()
|
{
|
DisplayTimer();
|
}
|
|
private void TimeLimitUpdate()
|
{
|
Display();
|
}
|
|
void DisplayTimer()
|
{
|
var seconds = (int)(giftModel.overDueTime - TimeUtility.ServerNow).TotalSeconds;
|
if (giftModel.IsGiftOverdue(currentSelectId) || seconds <= 0)
|
{
|
m_ContainerTime.gameObject.SetActive(false);
|
m_Overdue.gameObject.SetActive(true);
|
}
|
else
|
{
|
m_ContainerTime.gameObject.SetActive(true);
|
m_Overdue.gameObject.SetActive(false);
|
m_Timer.text = TimeUtility.SecondsToDHMSCHS(seconds);
|
m_Timer.color = UIHelper.GetUIColor(TextColType.Green);
|
}
|
}
|
|
private void Display()
|
{
|
List<StoreConfig> _list = null;
|
StoreConfig.TryGetStoreConfigs((int)StoreFunc.OSGift, out _list);
|
var _index = 0;
|
for (int i = 0; i < _list.Count; i++)
|
{
|
if (!giftModel.IsGiftOverdue(_list[i].ID))
|
{
|
var _storeConfig = Config.Instance.Get<StoreConfig>(_list[i].ID);
|
var _limit = model.GetBuyShopLimit((uint)_list[i].ID);
|
if (_limit == null || _limit.BuyCnt < _storeConfig.PurchaseNumber[0])
|
{
|
_index = i;
|
currentSelectId = _list[i].ID;
|
m_OSGifts[i].Display(_list[i].ID);
|
break;
|
}
|
}
|
_index = i;
|
}
|
for (int i = 0; i < m_OSGifts.Length; i++)
|
{
|
m_OSGifts[i].gameObject.SetActive(_index == i);
|
}
|
DisplayTimer();
|
}
|
|
private void OnCloseClick()
|
{
|
CloseImmediately();
|
}
|
}
|
|
}
|
|
|
|
|