| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 | 
							- using System;
 
- using Common.Utility.CombatTimer;
 
- using Fort23.UTool;
 
- #if !COMBAT_SERVER
 
- using UnityEngine;
 
- #endif
 
- namespace Common.Utility.CombatTimer
 
- {
 
-     public class CombatTimer
 
-     {
 
-         public enum TimerType
 
-         {
 
-             GameTimeUpdate, //游戏时间更新,受制于游戏时间
 
-             Invalid, //释放
 
-         }
 
-         public bool isCombat;
 
-         public delegate void OnTimerCallBack();
 
-         private float m_maxDuration;
 
-         public float maxDuration
 
-         {
 
-             get { return m_maxDuration; }
 
-             set { m_maxDuration = value; }
 
-         }
 
-         private int m_curHitCount;
 
-         private uint m_maxHitCount;
 
-         private float duration;
 
-         private OnTimerCallBack m_callBack;
 
-         private TimerType m_type = TimerType.GameTimeUpdate;
 
-         public TimerType Type
 
-         {
 
-             get { return m_type; }
 
-         }
 
-         private int m_timerGuid;
 
-         public int TimerGuid
 
-         {
 
-             get { return m_timerGuid; }
 
-         }
 
-         private bool m_isEnabled = true;
 
-         public bool IsEnabled
 
-         {
 
-             get { return m_isEnabled; }
 
-             set { m_isEnabled = value; }
 
-         }
 
-         public string timerName { set; get; }
 
-         /// <summary>
 
-         /// 当前tiemr 已运行时长
 
-         /// </summary>
 
-         public float Duration
 
-         {
 
-             get { return duration; }
 
-         }
 
-         /// <summary>
 
-         /// 当前tiemr 剩余时长
 
-         /// </summary>
 
-         public float LeftTime
 
-         {
 
-             get { return m_maxDuration - duration; }
 
-         }
 
-         private float m_startTime;
 
-         //public bool isStop;
 
-         public CombatTimer(float duration, OnTimerCallBack callBack, TimerType type = TimerType.GameTimeUpdate,
 
-             uint maxHitCount = 1)
 
-         {
 
-             m_maxDuration = duration;
 
-             m_callBack = callBack;
 
-             m_type = type;
 
-             m_maxHitCount = maxHitCount;
 
-         }
 
-        
 
-         public void Begin()
 
-         {
 
-              m_startTime = 0;
 
-             // m_startTime = Time.unscaledTime;
 
-         }
 
-         public void DeltaUpdate(float dateTime) //Executed by FixedUpdate
 
-         {
 
-             if (!IsEnabled)
 
-             {
 
-                 return;
 
-             }
 
-             duration += dateTime;
 
-             if (duration >= m_maxDuration)
 
-             {
 
-                 int maxCount = 1;
 
-                 if (m_maxDuration != 0)
 
-                 {
 
-                     maxCount = (int) (duration / m_maxDuration);
 
-                 }
 
-                 for (int i = 0; i < maxCount; i++)
 
-                 {
 
-                     m_curHitCount++;
 
-                     if (m_callBack != null)
 
-                     {
 
-                         m_callBack();
 
-                     }
 
-                     
 
-                     if (m_curHitCount >= m_maxHitCount)
 
-                     {
 
-                         CombatTimerManager.Instance.RemoveTimer(this);
 
-                         break;
 
-                     }
 
-                     else
 
-                     {
 
-                         duration = duration - m_maxDuration;
 
-                     }
 
-                     //m_callBack();
 
-                 }
 
-             }
 
-         }
 
-         public void Dispose()
 
-         {
 
-             IsEnabled = false;
 
-             m_maxDuration = 0;
 
-             m_callBack = null;
 
-             m_type = TimerType.Invalid;
 
-             m_curHitCount = 0;
 
-             m_maxHitCount = 0;
 
-         }
 
-     } //Timer
 
- } //Timer
 
 
  |