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
- }
|