private void StartMainLoop() { GameRunning = true; var timer = new Stopwatch(); timer.Start(); var lastTime = (float)timer.Elapsed.TotalSeconds; while (GameRunning) { var gameTime = (float)timer.Elapsed.TotalSeconds; var elapsedTime = gameTime - lastTime; lastTime = gameTime; Application.DoEvents(); if (!Paused) { if (!timer.IsRunning) { timer.Start(); } if (GameStatesManager.CurrentGameState != null) { GameStatesManager.CurrentGameState.Update(elapsedTime); } } else { timer.Stop(); } Refresh(); } timer.Stop(); GameStatesManager.FinalizeManager(); }
protected override void OnFormClosing(FormClosingEventArgs e) { GameRunning = false; GameStatesManager.FinalizeManager(); base.OnFormClosing(e); }