TimeSpan interval = new TimeSpan(0, 0, 1);␍␊ |
TimeSpan lastTick = new TimeSpan();␍␊ |
private bool _enabled = false;␍␊ |
public TimeSpan? offset = null;␍␊ |
␍␊ |
public event EventHandler Tick;␍␊ |
␍␊ |
|
␍␊ |
public override void Update(AxiosGameScreen gameScreen, GameTime gameTime, bool otherScreenHasFocus, bool coveredByOtherScreen)␍␊ |
{␍␊ |
␍␊ |
// Issue here: if you add a timer later on and use the algorithm of␍␊ |
// gameTime.TotalGameTime - lastTick >= interval␍␊ |
// The timer will always run␍␊ |
// What we should do is have an offset of the time it was added like this:␍␊ |
// ((gameTime.TotalGameTime - offset) - lastTick) >= interval␍␊ |
if (gameScreen.ScreenManager.Game.IsActive) //only "tick" if the window has focus - otherwise the Timer will play catchup␍␊ |
{␍␊ |
if (offset == null)␍␊ |
{␍␊ |
offset = gameTime.TotalGameTime;␍␊ |
return;␍␊ |
}␍␊ |
if (_enabled)␍␊ |
{␍␊ |
if (gameTime.TotalGameTime - lastTick >= interval)␍␊ |
if (((gameTime.TotalGameTime - offset) - lastTick) >= interval)␍␊ |
{␍␊ |
if (Tick != null)␍␊ |
{␍␊ |