[Add] Added an FPS class.

This commit is contained in:
Rtch90 2011-12-17 22:10:08 +00:00
parent 5d4aa118a0
commit d047eeebdd
5 changed files with 79 additions and 7 deletions

View File

@ -1,6 +1,6 @@
############################################################################# #############################################################################
# Makefile for building: Unuk-QT # Makefile for building: Unuk-QT
# Generated by qmake (2.01a) (Qt 4.7.3) on: Fri Dec 16 01:33:02 2011 # Generated by qmake (2.01a) (Qt 4.7.3) on: Sat Dec 17 22:09:14 2011
# Project: Unuk-QT.pro # Project: Unuk-QT.pro
# Template: app # Template: app
# Command: /usr/bin/qmake-qt4 -spec /usr/share/qt4/mkspecs/linux-g++ CONFIG+=debug -o Makefile Unuk-QT.pro # Command: /usr/bin/qmake-qt4 -spec /usr/share/qt4/mkspecs/linux-g++ CONFIG+=debug -o Makefile Unuk-QT.pro
@ -67,7 +67,8 @@ SOURCES = ../src/libUnuk/Debug.cpp \
../src/Unuk/Player.cpp \ ../src/Unuk/Player.cpp \
../src/Unuk/Game.cpp \ ../src/Unuk/Game.cpp \
../src/libUnuk/MapElement.cpp \ ../src/libUnuk/MapElement.cpp \
../src/libUnuk/MapEntities.cpp ../src/libUnuk/MapEntities.cpp \
../src/libUnuk/FPS.cpp
OBJECTS = Debug.o \ OBJECTS = Debug.o \
main.o \ main.o \
Input.o \ Input.o \
@ -92,7 +93,8 @@ OBJECTS = Debug.o \
Player.o \ Player.o \
Game.o \ Game.o \
MapElement.o \ MapElement.o \
MapEntities.o MapEntities.o \
FPS.o
DIST = /usr/share/qt4/mkspecs/common/g++.conf \ DIST = /usr/share/qt4/mkspecs/common/g++.conf \
/usr/share/qt4/mkspecs/common/unix.conf \ /usr/share/qt4/mkspecs/common/unix.conf \
/usr/share/qt4/mkspecs/common/linux.conf \ /usr/share/qt4/mkspecs/common/linux.conf \
@ -192,7 +194,7 @@ qmake: FORCE
dist: dist:
@$(CHK_DIR_EXISTS) .tmp/Unuk-QT1.0.0 || $(MKDIR) .tmp/Unuk-QT1.0.0 @$(CHK_DIR_EXISTS) .tmp/Unuk-QT1.0.0 || $(MKDIR) .tmp/Unuk-QT1.0.0
$(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.h ../src/Libs/wglext.h ../src/Libs/glxext.h ../src/libUnuk/Input.h ../src/libUnuk/Rect.h ../src/libUnuk/Timer.h ../src/libUnuk/Font.h ../Constants.h ../src/Unuk/Constants.h ../src/libUnuk/ApplySurface.h ../src/Unuk/Globals.h ../src/libUnuk/ImageLoader.h ../src/libUnuk/TextureManager.h ../src/libUnuk/Texture.h ../src/libUnuk/Text.h ../src/libUnuk/MapTile.h ../src/libUnuk/Map.h ../src/libUnuk/Button.h ../src/libUnuk/ButtonToggle.h ../src/libUnuk/Menu.h ../src/libUnuk/MainMenu.h ../src/libUnuk/ParticleEmitter.h ../src/libUnuk/IngameMenu.h ../src/libUnuk/Collision.h ../src/libUnuk/Character.h ../src/libUnuk/NPC.h ../src/Unuk/Player.h ../src/Unuk/Game.h ../src/libUnuk/MapElement.h ../src/libUnuk/MapEntities.h .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.cpp ../src/Unuk/main.cpp ../src/libUnuk/Input.cpp ../src/libUnuk/Timer.cpp ../src/libUnuk/Font.cpp ../src/libUnuk/ApplySurface.cpp ../src/Unuk/Globals.cpp ../src/libUnuk/Rect.cpp ../src/libUnuk/ImageLoader.cpp ../src/libUnuk/TextureManager.cpp ../src/libUnuk/Texture.cpp ../src/libUnuk/Text.cpp ../src/libUnuk/Map.cpp ../src/libUnuk/Button.cpp ../src/libUnuk/ButtonToggle.cpp ../src/libUnuk/ParticleEmitter.cpp ../src/libUnuk/MainMenu.cpp ../src/libUnuk/IngameMenu.cpp ../src/libUnuk/Collision.cpp ../src/libUnuk/Character.cpp ../src/libUnuk/NPC.cpp ../src/Unuk/Player.cpp ../src/Unuk/Game.cpp ../src/libUnuk/MapElement.cpp ../src/libUnuk/MapEntities.cpp .tmp/Unuk-QT1.0.0/ && (cd `dirname .tmp/Unuk-QT1.0.0` && $(TAR) Unuk-QT1.0.0.tar Unuk-QT1.0.0 && $(COMPRESS) Unuk-QT1.0.0.tar) && $(MOVE) `dirname .tmp/Unuk-QT1.0.0`/Unuk-QT1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/Unuk-QT1.0.0 $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.h ../src/Libs/wglext.h ../src/Libs/glxext.h ../src/libUnuk/Input.h ../src/libUnuk/Rect.h ../src/libUnuk/Timer.h ../src/libUnuk/Font.h ../Constants.h ../src/Unuk/Constants.h ../src/libUnuk/ApplySurface.h ../src/Unuk/Globals.h ../src/libUnuk/ImageLoader.h ../src/libUnuk/TextureManager.h ../src/libUnuk/Texture.h ../src/libUnuk/Text.h ../src/libUnuk/MapTile.h ../src/libUnuk/Map.h ../src/libUnuk/Button.h ../src/libUnuk/ButtonToggle.h ../src/libUnuk/Menu.h ../src/libUnuk/MainMenu.h ../src/libUnuk/ParticleEmitter.h ../src/libUnuk/IngameMenu.h ../src/libUnuk/Collision.h ../src/libUnuk/Character.h ../src/libUnuk/NPC.h ../src/Unuk/Player.h ../src/Unuk/Game.h ../src/libUnuk/MapElement.h ../src/libUnuk/MapEntities.h ../src/libUnuk/FPS.h .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.cpp ../src/Unuk/main.cpp ../src/libUnuk/Input.cpp ../src/libUnuk/Timer.cpp ../src/libUnuk/Font.cpp ../src/libUnuk/ApplySurface.cpp ../src/Unuk/Globals.cpp ../src/libUnuk/Rect.cpp ../src/libUnuk/ImageLoader.cpp ../src/libUnuk/TextureManager.cpp ../src/libUnuk/Texture.cpp ../src/libUnuk/Text.cpp ../src/libUnuk/Map.cpp ../src/libUnuk/Button.cpp ../src/libUnuk/ButtonToggle.cpp ../src/libUnuk/ParticleEmitter.cpp ../src/libUnuk/MainMenu.cpp ../src/libUnuk/IngameMenu.cpp ../src/libUnuk/Collision.cpp ../src/libUnuk/Character.cpp ../src/libUnuk/NPC.cpp ../src/Unuk/Player.cpp ../src/Unuk/Game.cpp ../src/libUnuk/MapElement.cpp ../src/libUnuk/MapEntities.cpp ../src/libUnuk/FPS.cpp .tmp/Unuk-QT1.0.0/ && (cd `dirname .tmp/Unuk-QT1.0.0` && $(TAR) Unuk-QT1.0.0.tar Unuk-QT1.0.0 && $(COMPRESS) Unuk-QT1.0.0.tar) && $(MOVE) `dirname .tmp/Unuk-QT1.0.0`/Unuk-QT1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/Unuk-QT1.0.0
clean:compiler_clean clean:compiler_clean
@ -481,6 +483,11 @@ MapEntities.o: ../src/libUnuk/MapEntities.cpp ../src/libUnuk/MapEntities.h \
../src/libUnuk/ImageLoader.h ../src/libUnuk/ImageLoader.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o MapEntities.o ../src/libUnuk/MapEntities.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o MapEntities.o ../src/libUnuk/MapEntities.cpp
FPS.o: ../src/libUnuk/FPS.cpp ../src/libUnuk/FPS.h \
../src/Unuk/Globals.h \
../src/libUnuk/Timer.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o FPS.o ../src/libUnuk/FPS.cpp
####### Install ####### Install
install: FORCE install: FORCE

View File

@ -36,7 +36,8 @@ HEADERS += ../src/libUnuk/Debug.h \
../src/Unuk/Player.h \ ../src/Unuk/Player.h \
../src/Unuk/Game.h \ ../src/Unuk/Game.h \
../src/libUnuk/MapElement.h \ ../src/libUnuk/MapElement.h \
../src/libUnuk/MapEntities.h ../src/libUnuk/MapEntities.h \
../src/libUnuk/FPS.h
SOURCES += ../src/libUnuk/Debug.cpp \ SOURCES += ../src/libUnuk/Debug.cpp \
../src/Unuk/main.cpp \ ../src/Unuk/main.cpp \
../src/libUnuk/Input.cpp \ ../src/libUnuk/Input.cpp \
@ -61,4 +62,5 @@ SOURCES += ../src/libUnuk/Debug.cpp \
../src/Unuk/Player.cpp \ ../src/Unuk/Player.cpp \
../src/Unuk/Game.cpp \ ../src/Unuk/Game.cpp \
../src/libUnuk/MapElement.cpp \ ../src/libUnuk/MapElement.cpp \
../src/libUnuk/MapEntities.cpp ../src/libUnuk/MapEntities.cpp \
../src/libUnuk/FPS.cpp

View File

@ -36,7 +36,7 @@ private:
void LoadSavegame(const string savegameIDArg); void LoadSavegame(const string savegameIDArg);
void SaveSavegame(void); void SaveSavegame(void);
static const int MAX_FPS = 6000; static const int MAX_FPS = 200;
static const int GAME_UPDATES_PER_SECOND = 60; static const int GAME_UPDATES_PER_SECOND = 60;
static const int SKIP_TICKS = 1000 / GAME_UPDATES_PER_SECOND; static const int SKIP_TICKS = 1000 / GAME_UPDATES_PER_SECOND;

35
src/libUnuk/FPS.cpp Normal file
View File

@ -0,0 +1,35 @@
#include "FPS.h"
FPS::FPS(void) {
}
FPS::~FPS(void) {
}
void FPS::LimitFPS(void) {
// Calculate the FPS.
if(_fpsCalc.GetTicks() > 1000) {
_fps = _frame / (_fpsCalc.GetTicks() / 1000);
_fpsCalc.Start();
_frame = 0;
}
// Put a limitation on the FPS.
if(1000 / _maxFPS > _frameTimer.GetTicks()) {
// SDL_Delay does not accept a float so for higher framerate
// limits there's an innacuracy. This is as much as 3fps
// at a limit of 60fps.
SDL_Delay((1000 / _maxFPS) - _frameTimer.GetTicks());
}
_frameTimer.Start();
_frame++;
}
void FPS::SetMaxFPS(int maxFPSArg) {
_maxFPS = maxFPSArg;
}

28
src/libUnuk/FPS.h Normal file
View File

@ -0,0 +1,28 @@
#ifndef _FPS_H_
#define _FPS_H_
#include "../Unuk/Globals.h"
#include "Timer.h"
class FPS {
public:
FPS(void);
~FPS(void);
void LimitFPS(void);
void SetMaxFPS(int maxFPSArg);
int GetMaxFPS(void) { return _maxFPS; }
int GetCurrentFPS(void) { return _fps; }
private:
int _fps;
int _frame;
int _maxFPS;
Timer _frameTimer;
Timer _fpsCalc;
};
#endif