From c74ed8da3751f85b4bfb235b055f404f5340eae7 Mon Sep 17 00:00:00 2001 From: Eugenio Favalli Date: Wed, 3 May 2006 13:38:20 +0000 Subject: Increased fps limit granularity and cleaned some code, fixed some xml library name in Dev-C++ project file, switched version to 0.0.20. --- src/game.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'src/game.cpp') diff --git a/src/game.cpp b/src/game.cpp index f8812b81..a03989fe 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -342,6 +342,13 @@ bool saveScreenshot(SDL_Surface *screenshot) void Game::logic() { int gameTime = tick_time; + int drawTime = tick_time * 10; + int delta = 0; + int fpsLimit = (int)config.getValue("fpslimit", 0); + if (fpsLimit) + { + delta = 1000 / fpsLimit; + } while (!done) { @@ -358,9 +365,17 @@ void Game::logic() // Update the screen when application is active, delay otherwise if (SDL_GetAppState() & SDL_APPACTIVE) { - frame++; - engine->draw(graphics); - graphics->updateScreen(); + if (abs(tick_time * 10 - drawTime) >= delta) + { + frame++; + engine->draw(graphics); + graphics->updateScreen(); + drawTime += delta; + } + else + { + SDL_Delay(10); + } } else { -- cgit v1.2.3-70-g09d2