//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, July 18, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class FlashSaleWin : Window { [SerializeField] Text m_OpreationTime; [SerializeField] Text m_RefreshGiftTime; [SerializeField] Text m_SurplusTime; [SerializeField] Image m_MoneyIcon; [SerializeField] Text m_MoneyValue; [SerializeField] FlashSaleBehaviour[] m_FlashSaleBehaviours; StoreModel storeModel { get { return ModelCenter.Instance.GetModel(); } } FlashSaleModel model { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { GlobalTimeEvent.Instance.secondEvent += SecondEvent; TimeMgr.Instance.OnDayEvent += OnDayEvent; OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent; storeModel.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent; OperationTimeHepler.Instance.operationTimeUpdateEvent += OperationTimeUpdateEvent; Display(); } protected override void OnAfterOpen() { model.SetDayRemind(); } protected override void OnPreClose() { GlobalTimeEvent.Instance.secondEvent -= SecondEvent; TimeMgr.Instance.OnDayEvent -= OnDayEvent; OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent; storeModel.RefreshBuyShopLimitEvent -= RefreshBuyShopLimitEvent; OperationTimeHepler.Instance.operationTimeUpdateEvent -= OperationTimeUpdateEvent; } protected override void OnAfterClose() { } #endregion private void OperationTimeUpdateEvent(Operation type) { if (type == Operation.FlashSale) { Display(); } } private void RefreshBuyShopLimitEvent() { Display(); } private void Display() { OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.FlashSale, out operationBase)) { OperationFlashSale operation = operationBase as OperationFlashSale; m_OpreationTime.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), operation.ToDisplayTime()); m_RefreshGiftTime.gameObject.SetActive(operation.allDay); var index = operation.IndexOfFlashShop(); if (index != -1 && index < operation.flashShops.Count) { var flashSale = operation.flashShops[index]; if (flashSale.gifts.Length > 0) { var moneyType = flashSale.gifts[0].moneyType; m_MoneyIcon.SetIconWithMoneyType(moneyType); m_MoneyValue.text = UIHelper.GetMoneyCnt(moneyType).ToString(); } for (int i = 0; i < m_FlashSaleBehaviours.Length; i++) { if (i < flashSale.gifts.Length) { m_FlashSaleBehaviours[i].gameObject.SetActive(true); m_FlashSaleBehaviours[i].Display(index, flashSale.gifts[i].id); } else { m_FlashSaleBehaviours[i].gameObject.SetActive(false); } } } } DisplaySurplusTime(); } private void OperationStartEvent(Operation type, int state) { if (type == Operation.FlashSale && state == 0) { Display(); } } private void SecondEvent() { DisplaySurplusTime(); } private void OnDayEvent() { Display(); } private void DisplaySurplusTime() { OperationBase operationBase; OperationTimeHepler.Instance.TryGetOperationTime(Operation.FlashSale, out operationBase); var seconds = 0; if (operationBase != null) { OperationFlashSale operation = operationBase as OperationFlashSale; seconds = operation.GetSurplusTime(operation.IndexOfFlashShop()); } if (seconds > 0) { m_SurplusTime.text = Language.Get("LimitGift1", TimeUtility.SecondsToDHMSCHS(seconds)); } else { m_SurplusTime.text = Language.Get("ActivityEnd"); } } } }