| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 | using System;using System.Collections.Generic;using Fort23.UTool;using Utility;namespace Common.Utility.CombatTimer{    public class CombatTimerManager : Singleton<CombatTimerManager>    {        private List<CombatTimer> m_LifeList = new List<CombatTimer>();        //private List<Timer> m_suspendableList = new List<Timer>();        private bool m_isPause = false;        public bool IsPause        {            get { return m_isPause; }            set { m_isPause = value; }        }        public void InitComatTime()        {            m_LifeList.Clear();        }        public void Release()        {            m_LifeList.Clear();        }        private void PreSceneChange(params object[] obj)        {            m_LifeList.Clear();            //m_suspendableList.Clear();        }        public override void Dispose()        {            for (int i = 0; i < m_LifeList.Count; i++)            {                m_LifeList[i].Dispose();            }            m_LifeList.Clear();            base.Dispose();        }        public void AddTimer(CombatTimer combatTimer)        {            if (combatTimer != null)            {                //timer.d                m_LifeList.Add(combatTimer);                combatTimer.Begin();            }        }        public CombatTimer AddTimer(float duration, CombatTimer.OnTimerCallBack callBack,            CombatTimer.TimerType type = CombatTimer.TimerType.GameTimeUpdate, uint maxHitCount = 1)        {            if (duration <= 0)            {                callBack();                return null;            }            CombatTimer combatTimer = new CombatTimer(duration, callBack, type, maxHitCount);            combatTimer.isCombat = true;            AddTimer(combatTimer);            return combatTimer;        }        public void RemoveTimer(CombatTimer combatTimer)        {            if (combatTimer != null)            {                if (m_LifeList.Contains(combatTimer))                {                    m_LifeList.Remove(combatTimer);                }                combatTimer.Dispose();                combatTimer = null;            }        }        private void Adavance(float deltaTime)        {            if (!IsPause)            {                if (m_LifeList.Count <= 0)                {                    return;                }                AdvanceLifeTime(deltaTime);            }        }        private void AdvanceLifeTime(float deltaTime)        {            try            {                float curTime = deltaTime;                CombatTimer[] timers = m_LifeList.ToArray();                for (int i = 0; i < timers.Length; i++)                {                    timers[i].DeltaUpdate(curTime);                }            }            catch (Exception e)            {                LogTool.Exception(e);                throw;            }        }        public void ComabtUpdate(float deltaTime)        {            Adavance(deltaTime);        }    } //TimerManager}
 |