summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEugenio Favalli <elvenprogrammer@gmail.com>2006-05-03 13:38:20 +0000
committerEugenio Favalli <elvenprogrammer@gmail.com>2006-05-03 13:38:20 +0000
commitc74ed8da3751f85b4bfb235b055f404f5340eae7 (patch)
tree56462755320b0bd98cb826e533fecfbbe3d3e0b1 /src
parent3297165f99f0dac7a453f180e1bef05782da2c6e (diff)
downloadmana-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.cpp21
-rw-r--r--src/graphics.cpp11
-rw-r--r--src/main.cpp25
-rw-r--r--src/openglgraphics.cpp11
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()