public void Update(GameTime gameTime) { KeyboardState currentKeyboardState = Keyboard.GetState(); if (currentKeyboardState.IsKeyDown(Keys.Right) || currentKeyboardState.IsKeyDown(Keys.D)) { angleUpdate -= 1f; } if (currentKeyboardState.IsKeyDown(Keys.Left) || currentKeyboardState.IsKeyDown(Keys.A)) { angleUpdate += 1f; } if (Globals.IsFinnished && IsRunning) { OnGameFinished(Globals.TotalScore, GameFinishedEventArgs.EndReason.GoalAccomplished); if (MaxScore < Globals.TotalScore) { _recordAchieved = true; MaxScore = Globals.TotalScore; } IsRunning = false; _elemManager.Level = null; _elemManager.DestroyAllObjects(); } angleUpdate = Math.Min(angleUpdate, 1); angleUpdate = Math.Max(angleUpdate, -1); _elemManager.DrawParticles(gameTime); if (!OpenFeasyo.GameTools.GameTools.IsPaused) { _elapsedTime += gameTime.ElapsedGameTime.TotalSeconds; if (IsRunning && (_elapsedTime / 20) - 2 > _elemManager.Level.LevelId && _elemManager.Level.LevelId < 10) { _infoPanel.CurrentLevel = _elemManager.Level = _generator.GenerateNext(); } _tunnel.Update(gameTime, _elemManager.Level == null ? 10 : _elemManager.Level.Speed); _player.Update(gameTime, angleUpdate * (float)gameTime.ElapsedGameTime.TotalSeconds * 2, angleUpdate * 0.2f); _camera.Update(gameTime, _tunnel.CurrentPhase, /*this.headPos,*/ _player.Angle); _elemManager.Update(gameTime); } angleUpdate *= 0.9f; _infoPanel.Update(gameTime); if (_infoPanel.CurrentLevel != null) { _infoPanel.CurrentLevel.Score = Globals.TotalScore; } }