예제 #1
0
        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);
        }