| //-------------------------------------------------------- | 
| //    [Author]:           第二世界 | 
| //    [  Date ]:           Wednesday, September 13, 2017 | 
| //-------------------------------------------------------- | 
|   | 
| using System; | 
| using System.Collections; | 
| using System.Collections.Generic; | 
| using UnityEngine; | 
| using UnityEngine.UI; | 
|   | 
| namespace vnxbqy.UI | 
| { | 
|   | 
|     public class DungeonBeginCoolDownWin : Window | 
|     { | 
|         [SerializeField] | 
|         Transform m_CoolDownContainer; | 
|   | 
|         [SerializeField] | 
|         Text m_CoolDown; | 
|         DateTime beginTime = DateTime.Now; | 
|   | 
|         DungeonModel m_Model; | 
|         DungeonModel model { | 
|             get { | 
|                 return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<DungeonModel>()); | 
|             } | 
|         } | 
|   | 
|         #region Built-in | 
|         protected override void BindController() | 
|         { | 
|         } | 
|   | 
|         protected override void AddListeners() | 
|         { | 
|         } | 
|   | 
|         protected override void OnPreOpen() | 
|         { | 
|             if (CrossServerUtility.IsCrossServerOneVsOne() || ClientCrossServerOneVsOne.isClientCrossServerOneVsOne || ArenaManager.isArenaClient) | 
|             { | 
|                 beginTime = TimeUtility.ServerNow; | 
|                 m_CoolDownContainer.SetActive(false); | 
|             } | 
|             else | 
|             { | 
|                 beginTime = model.GetCoolDownEndTime(DungeonCoolDownType.WaitStart); | 
|                 model.dungeonCoolDownEvent += OnBeginTimeEvent; | 
|             } | 
|         } | 
|   | 
|         protected override void OnAfterOpen() | 
|         { | 
|         } | 
|   | 
|         protected override void OnPreClose() | 
|         { | 
|             model.dungeonCoolDownEvent -= OnBeginTimeEvent; | 
|         } | 
|   | 
|         protected override void OnAfterClose() | 
|         { | 
|         } | 
|         #endregion | 
|   | 
|   | 
|         private void OnBeginTimeEvent(DungeonCoolDownType _type) | 
|         { | 
|             if (CrossServerUtility.IsCrossServerOneVsOne() || ClientCrossServerOneVsOne.isClientCrossServerOneVsOne || ArenaManager.isArenaClient) | 
|             { | 
|                 beginTime = TimeUtility.ServerNow; | 
|                 m_CoolDownContainer.SetActive(false); | 
|                 return; | 
|             } | 
|   | 
|             if (_type != DungeonCoolDownType.WaitStart) | 
|             { | 
|                 return; | 
|             } | 
|   | 
|             beginTime = model.GetCoolDownEndTime(_type); | 
|         } | 
|   | 
|         protected override void LateUpdate() | 
|         { | 
|             base.LateUpdate(); | 
|   | 
|             if (beginTime > TimeUtility.ServerNow) | 
|             { | 
|                 var surplusTime = Mathf.Clamp((int)(beginTime - TimeUtility.ServerNow).TotalSeconds, 0, int.MaxValue); | 
|                 m_CoolDown.text = surplusTime.ToString(); | 
|                 if (!m_CoolDownContainer.gameObject.activeInHierarchy) | 
|                 { | 
|                     m_CoolDownContainer.SetActive(true); | 
|                 } | 
|             } | 
|             else | 
|             { | 
|                 if (m_CoolDownContainer.gameObject.activeInHierarchy) | 
|                 { | 
|                     m_CoolDownContainer.SetActive(false); | 
|                 } | 
|             } | 
|   | 
|         } | 
|   | 
|     } | 
|   | 
| } |