| //--------------------------------------------------------  | 
| //    [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<DungeonModel>(); } }  | 
|   | 
|         #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);  | 
|                 }  | 
|             }  | 
|         }  | 
|   | 
|     }  | 
|   | 
| }  | 
|   | 
|   | 
|   | 
|   |