using System.Collections.Generic;
using System.Linq;

public class TimerMgr
{
	private IList<Timer> timerList = new List<Timer>();

	public void Dispose()
	{
		timerList.Clear();
	}

	public void Update()
	{
		for (int num = timerList.Count - 1; num >= 0; num--)
		{
			Timer timer = timerList[num];
			timer.Update();
			if (timer.IsEnd)
			{
				timerList.RemoveAt(num);
			}
		}
	}

	public void Add(Timer timer)
	{
		timerList.Add(timer);
	}

	public void Remove(Timer timer)
	{
		timerList.Remove(timer);
	}

	public void Flush()
	{
		foreach (Timer item in timerList.OrderBy((Timer x) => x.RemainTimeSec))
		{
			item.CallEvent();
		}
		timerList.Clear();
	}
}
