//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, September 15, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.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; if (CrossServerUtility.IsCrossServerOneVsOne() || ClientCrossServerOneVsOne.isClientCrossServerOneVsOne || ArenaManager.isArenaClient) { endTime = TimeUtility.ServerNow; m_CoolDownContainer.SetActive(false); } else { endTime = model.GetCoolDownEndTime(DungeonCoolDownType.FightStart); model.dungeonCoolDownEvent += OnEndTimeEvent; var surplusTime = (int)((endTime - TimeUtility.ServerNow).TotalSeconds); m_CoolDownContainer.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 (CrossServerUtility.IsCrossServerOneVsOne() || ClientCrossServerOneVsOne.isClientCrossServerOneVsOne || ArenaManager.isArenaClient) { endTime = TimeUtility.ServerNow; m_CoolDownContainer.SetActive(false); return; } if (_type != DungeonCoolDownType.FightStart && _type != DungeonCoolDownType.PickUpTime) { return; } var pickUpEndTime = model.GetCoolDownEndTime(DungeonCoolDownType.PickUpTime); if (pickUpEndTime > TimeUtility.ServerNow) { endTime = TimeUtility.ServerNow; } else { endTime = model.GetCoolDownEndTime(DungeonCoolDownType.FightStart); } var surplusTime = (int)((endTime - TimeUtility.ServerNow).TotalSeconds); if (surplusTime < 0) { surplusTime = 0; } m_CoolDown.text = TimeUtility.SecondsToHMS(surplusTime); } protected override void LateUpdate() { base.LateUpdate(); if (endTime > TimeUtility.ServerNow) { timer += Time.deltaTime; if (timer > 1) { timer = 0f; var surplusTime = (int)((endTime - TimeUtility.ServerNow).TotalSeconds); if (surplusTime < 0) { surplusTime = 0; } m_CoolDown.text = TimeUtility.SecondsToHMS(surplusTime); } if (!m_CoolDownContainer.gameObject.activeInHierarchy) { m_CoolDownContainer.SetActive(true); } } else { if (m_CoolDownContainer.gameObject.activeInHierarchy) { m_CoolDownContainer.SetActive(false); } } } } }