protected override void Update(GameTime gameTime) { KeyboardState keyboardState = Keyboard.GetState(); if (keyboardState.IsKeyDown(Keys.Escape)) { Exit(); } if (keyboardState.IsKeyDown(Keys.Space) && !wasSpacePressed) { fixedSimulationSpeed = !fixedSimulationSpeed; } wasSpacePressed = keyboardState.IsKeyDown(Keys.Space); if (keyboardState.IsKeyDown(Keys.PageUp)) { targetFps *= Math.Pow(2, gameTime.ElapsedGameTime.Milliseconds / 1000f); } if (keyboardState.IsKeyDown(Keys.PageDown)) { targetFps /= Math.Pow(2, gameTime.ElapsedGameTime.Milliseconds / 1000f); } camera.Update(); if (fixedSimulationSpeed) { currentTicksPerFrame = 1; } else { currentTicksPerFrame = (int)(currentTicksPerFrame * 1000f / targetFps / gameTime.ElapsedGameTime.Milliseconds); } if (currentTicksPerFrame < 1) { currentTicksPerFrame = 1; } if (currentTicksPerFrame > 100) { currentTicksPerFrame = 100; } for (int i = 0; i < currentTicksPerFrame; i++) { map.GrowFood(); animalManager.Update(); statisticsGUI.SaveTick(animalManager); } statisticsGUI.SaveFrameStatistics(gameTime.ElapsedGameTime.Milliseconds, currentTicksPerFrame); // TODO: Add your update logic here base.Update(gameTime); }