diff --git a/CMakeLists.txt b/CMakeLists.txt index 50c8d1e..4f0d973 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -226,7 +226,11 @@ add_executable(fallout2-ce WIN32 "src/world_map.h" "src/xfile.cc" "src/xfile.h" - "src/FpsLimiter.cc" +) + +target_sources(fallout2-ce PUBLIC + "src/fps_limiter.cc" + "src/fps_limiter.h" ) target_compile_definitions(fallout2-ce PUBLIC diff --git a/src/FpsLimiter.cc b/src/FpsLimiter.cc deleted file mode 100644 index 156746e..0000000 --- a/src/FpsLimiter.cc +++ /dev/null @@ -1,18 +0,0 @@ -#include "FpsLimiter.h" - -FpsLimiter::FpsLimiter(size_t fps): - _Fps(fps), - _Ticks(0) -{ -} - -void FpsLimiter::Begin() -{ - _Ticks = SDL_GetTicks(); -} - -void FpsLimiter::End() -{ - if (1000 / _Fps > SDL_GetTicks() - _Ticks) - SDL_Delay(1000 / _Fps - (SDL_GetTicks() - _Ticks)); -} diff --git a/src/FpsLimiter.h b/src/FpsLimiter.h deleted file mode 100644 index b1a6b9b..0000000 --- a/src/FpsLimiter.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef Fallout2_RE_FpsLimiter_h_ -#define Fallout2_RE_FpsLimiter_h_ - -#include - -class FpsLimiter -{ -public: - FpsLimiter(size_t fps = 60); - void Begin(); - void End(); - -private: - size_t _Fps; - size_t _Ticks; -}; - -#endif diff --git a/src/fps_limiter.cc b/src/fps_limiter.cc new file mode 100644 index 0000000..e91040d --- /dev/null +++ b/src/fps_limiter.cc @@ -0,0 +1,21 @@ +#include "fps_limiter.h" + +#include + +FpsLimiter::FpsLimiter(size_t fps) + : _fps(fps) + , _ticks(0) +{ +} + +void FpsLimiter::mark() +{ + _ticks = SDL_GetTicks(); +} + +void FpsLimiter::throttle() const +{ + if (1000 / _fps > SDL_GetTicks() - _ticks) { + SDL_Delay(1000 / _fps - (SDL_GetTicks() - _ticks)); + } +} diff --git a/src/fps_limiter.h b/src/fps_limiter.h new file mode 100644 index 0000000..1667d28 --- /dev/null +++ b/src/fps_limiter.h @@ -0,0 +1,15 @@ +#ifndef FPS_LIMITER_H +#define FPS_LIMITER_H + +class FpsLimiter { +public: + FpsLimiter(size_t fps = 60); + void mark(); + void throttle() const; + +private: + const size_t _fps; + size_t _ticks; +}; + +#endif /* FPS_LIMITER_H */ diff --git a/src/main.cc b/src/main.cc index fbecc42..3fa9673 100644 --- a/src/main.cc +++ b/src/main.cc @@ -312,7 +312,7 @@ void mainLoop(FpsLimiter& fpsLimiter) scriptsEnable(); while (_game_user_wants_to_quit == 0) { - fpsLimiter.Begin(); + fpsLimiter.mark(); int keyCode = _get_input(); gameHandleKey(keyCode, false); @@ -331,7 +331,7 @@ void mainLoop(FpsLimiter& fpsLimiter) _game_user_wants_to_quit = 2; } - fpsLimiter.End(); + fpsLimiter.throttle(); } scriptsDisable(); @@ -778,7 +778,7 @@ int mainMenuWindowHandleEvents(FpsLimiter& fpsLimiter) int rc = -1; while (rc == -1) { - fpsLimiter.Begin(); + fpsLimiter.mark(); int keyCode = _get_input(); @@ -827,7 +827,7 @@ int mainMenuWindowHandleEvents(FpsLimiter& fpsLimiter) } } - fpsLimiter.End(); + fpsLimiter.throttle(); } if (oldCursorIsHidden) { diff --git a/src/main.h b/src/main.h index 50665d3..dd89a59 100644 --- a/src/main.h +++ b/src/main.h @@ -2,7 +2,7 @@ #define MAIN_H #include "art.h" -#include "FpsLimiter.h" +#include "fps_limiter.h" #include