using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class FlashSaleCoolDown : MonoBehaviour { [SerializeField] TimerBehaviour m_Time; [SerializeField] RectTransform m_ContainerAdvance; [SerializeField] Text m_AdvanceTime; private void OnEnable() { SecondEvent(); GlobalTimeEvent.Instance.secondEvent -= SecondEvent; GlobalTimeEvent.Instance.secondEvent += SecondEvent; OperationTimeHepler.Instance.dayResetEvent -= DayResetEvent; OperationTimeHepler.Instance.dayResetEvent += DayResetEvent; } private void DayResetEvent(int resetType) { SecondEvent(); } private void SecondEvent() { OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.FlashSale, out operationBase)) { var operation = (operationBase as OperationFlashSale); bool inAdvance = false; var seconds = 0; if (operation.InAdvanceTime(TimeUtility.ServerNow)) { inAdvance = true; seconds = operation.GetSecondsBeforeStart(TimeUtility.ServerNow); } else { seconds = operation.GetResetSurplusTime(); } m_ContainerAdvance.SetActive(inAdvance); if (inAdvance) { if (m_Time.gameObject.activeSelf) { DisplayTime(0); } DisplayAdvance(seconds); } else { if (seconds * TimeSpan.TicksPerSecond >= TimeSpan.TicksPerDay || seconds <= 0) { if (m_Time.gameObject.activeSelf) { DisplayTime(0); } } else { m_Time.timeShow.color = seconds > 3600 ? UIHelper.GetUIColor(TextColType.Green) : UIHelper.GetUIColor(TextColType.Red); if (!m_Time.gameObject.activeSelf) { DisplayTime(seconds); } } } } } private void OnDisable() { GlobalTimeEvent.Instance.secondEvent -= SecondEvent; OperationTimeHepler.Instance.dayResetEvent -= DayResetEvent; m_Time.SetActive(false); } void DisplayTime(int seconds) { m_Time.timeShow.color = seconds > 3600 ? UIHelper.GetUIColor(TextColType.Green) : UIHelper.GetUIColor(TextColType.Red); m_Time.Begin(seconds); } void DisplayAdvance(int seconds) { m_AdvanceTime.text = Language.Get("OperationAdvanceOpen", TimeUtility.SecondsToHMS(seconds)); } } }