//--------------------------------------------------------  
 | 
//    [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<StoreModel>(); } }  
 | 
        FlashSaleModel model { get { return ModelCenter.Instance.GetModel<FlashSaleModel>(); } }  
 | 
  
 | 
        #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");  
 | 
            }  
 | 
        }  
 | 
  
 | 
    }  
 | 
  
 | 
}  
 | 
  
 | 
  
 | 
  
 | 
  
 |