//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, July 18, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.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.SetActive(operation.allDay && operation.dayReset); OperationFlashSale.FlashSale flashSale; if (operation.TryGetFlashSale(TimeUtility.ServerNow, out flashSale)) { 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].SetActive(true); m_FlashSaleBehaviours[i].Display(flashSale.gifts[i]); } else { m_FlashSaleBehaviours[i].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; var inAdvance = false; if (operationBase != null) { if (operationBase.InAdvanceTime(TimeUtility.ServerNow)) { inAdvance = true; seconds = operationBase.GetSecondsBeforeStart(TimeUtility.ServerNow); } else { OperationFlashSale operation = operationBase as OperationFlashSale; seconds = operation.GetResetSurplusTime(); } } if (seconds > 0) { if (inAdvance) { m_SurplusTime.text = Language.Get("OperationAdvanceOpen", TimeUtility.SecondsToDHMSCHS(seconds)); } else { m_SurplusTime.text = Language.Get("LimitGift1", TimeUtility.SecondsToDHMSCHS(seconds)); } } else { m_SurplusTime.text = Language.Get("ActivityEnd"); } } } }