diff options
author | Eugenio Favalli <elvenprogrammer@gmail.com> | 2006-05-03 13:38:20 +0000 |
---|---|---|
committer | Eugenio Favalli <elvenprogrammer@gmail.com> | 2006-05-03 13:38:20 +0000 |
commit | c74ed8da3751f85b4bfb235b055f404f5340eae7 (patch) | |
tree | 56462755320b0bd98cb826e533fecfbbe3d3e0b1 /src | |
parent | 3297165f99f0dac7a453f180e1bef05782da2c6e (diff) | |
download | mana-c74ed8da3751f85b4bfb235b055f404f5340eae7.tar.gz mana-c74ed8da3751f85b4bfb235b055f404f5340eae7.tar.bz2 mana-c74ed8da3751f85b4bfb235b055f404f5340eae7.tar.xz mana-c74ed8da3751f85b4bfb235b055f404f5340eae7.zip |
Increased fps limit granularity and cleaned some code, fixed some xml library name in Dev-C++ project file, switched version to 0.0.20.
Diffstat (limited to 'src')
-rw-r--r-- | src/game.cpp | 21 | ||||
-rw-r--r-- | src/graphics.cpp | 11 | ||||
-rw-r--r-- | src/main.cpp | 25 | ||||
-rw-r--r-- | src/openglgraphics.cpp | 11 |
4 files changed, 18 insertions, 50 deletions
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 { diff --git a/src/graphics.cpp b/src/graphics.cpp index 3f6a98c6..d709bfe1 100644 --- a/src/graphics.cpp +++ b/src/graphics.cpp @@ -29,8 +29,6 @@ #include "resources/image.h" -extern volatile int framesToDraw; - Graphics::Graphics(): mScreen(0) { @@ -225,15 +223,6 @@ Graphics::drawImageRect(int x, int y, int w, int h, void Graphics::updateScreen() { SDL_Flip(mScreen); - - // Decrement frame counter when using framerate limiting - if (framesToDraw > 1) framesToDraw--; - - // Wait while we're not allowed to draw next frame yet - while (framesToDraw == 1) - { - SDL_Delay(10); - } } SDL_Surface* Graphics::getScreenshot() diff --git a/src/main.cpp b/src/main.cpp index d067d3c9..985a2ba4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -93,7 +93,6 @@ SERVER_INFO **server_info; unsigned char state; std::string errorMessage; unsigned char screen_mode; -volatile int framesToDraw = 0; Sound sound; Music *bgm; @@ -101,18 +100,6 @@ Music *bgm; Configuration config; /**< Xml file configuration reader */ Logger *logger; /**< Log object */ -/** - * Allows the next frame to be drawn (part of framerate limiting) - */ -Uint32 nextFrame(Uint32 interval, void *param) -{ - if (framesToDraw < 10) - { - framesToDraw++; - } - return interval; -} - namespace { struct ErrorListener : public gcn::ActionListener { @@ -275,9 +262,6 @@ void init_engine() hairset.push_back(tmp); } } - /*hairset = resman->createSpriteset( - "graphics/sprites/player_male_hair.png", 29, 29); - if (!hairset) logger->error("Couldn't load hair spriteset!");*/ gui = new Gui(graphics); state = UPDATE_STATE; /**< Initial game state */ @@ -295,15 +279,6 @@ void init_engine() errorMessage = err; logger->log("Warning: %s", err); } - - // Set frame counter when using fps limit - int fpsLimit = (int)config.getValue("fpslimit", 0); - if (fpsLimit) - { - if (fpsLimit < 10) fpsLimit = 10; - if (fpsLimit > 200) fpsLimit = 200; - SDL_AddTimer(1000 / fpsLimit, nextFrame, NULL); - } } /** Clear the engine */ diff --git a/src/openglgraphics.cpp b/src/openglgraphics.cpp index 9de59f79..1e8918cb 100644 --- a/src/openglgraphics.cpp +++ b/src/openglgraphics.cpp @@ -37,8 +37,6 @@ #include "resources/image.h" -extern volatile int framesToDraw; - OpenGLGraphics::OpenGLGraphics(): mAlpha(false), mTexture(false), mColorAlpha(false) { @@ -108,15 +106,6 @@ void OpenGLGraphics::updateScreen() glFlush(); glFinish(); SDL_GL_SwapBuffers(); - - // Decrement frame counter when using framerate limiting - if (framesToDraw > 1) framesToDraw--; - - // Wait while we're not allowed to draw next frame yet - while (framesToDraw == 1) - { - SDL_Delay(10); - } } void OpenGLGraphics::_beginDraw() |