//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, September 15, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class DungeonEndCoolDownWin : Window { [SerializeField] Transform m_CoolDownContainer; [SerializeField] Text m_CoolDown; float timer = 0f; DateTime endTime = DateTime.Now; DungeonModel model { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { timer = 0f; endTime = model.GetCoolDownEndTime(DungeonCoolDownType.TowerTake); model.dungeonCoolDownEvent += OnEndTimeEvent; var surplusTime = (int)((endTime - DateTime.Now).TotalSeconds); m_CoolDownContainer.gameObject.SetActive(surplusTime > 0); if (surplusTime > 0) { m_CoolDown.text = TimeUtility.SecondsToHMS(surplusTime); } } protected override void OnAfterOpen() { } protected override void OnPreClose() { model.dungeonCoolDownEvent -= OnEndTimeEvent; } protected override void OnAfterClose() { } #endregion private void OnEndTimeEvent(DungeonCoolDownType _type) { if (_type != DungeonCoolDownType.TowerTake && _type != DungeonCoolDownType.PickUpTime) { return; } var pickUpEndTime = model.GetCoolDownEndTime(DungeonCoolDownType.PickUpTime); if (pickUpEndTime > DateTime.Now) { endTime = DateTime.Now; } else { endTime = model.GetCoolDownEndTime(DungeonCoolDownType.TowerTake); } var surplusTime = (int)((endTime - DateTime.Now).TotalSeconds); if (surplusTime < 0) { surplusTime = 0; } m_CoolDown.text = TimeUtility.SecondsToHMS(surplusTime); } protected override void LateUpdate() { base.LateUpdate(); if (endTime > DateTime.Now) { timer += Time.deltaTime; if (timer > 1) { timer = 0f; var surplusTime = (int)((endTime - DateTime.Now).TotalSeconds); if (surplusTime < 0) { surplusTime = 0; } m_CoolDown.text = TimeUtility.SecondsToHMS(surplusTime); } if (!m_CoolDownContainer.gameObject.activeInHierarchy) { m_CoolDownContainer.gameObject.SetActive(true); } } else { if (m_CoolDownContainer.gameObject.activeInHierarchy) { m_CoolDownContainer.gameObject.SetActive(false); } } } } }