| 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)␍␊ |
| {␍␊ |