19 lines
581 B
C++
19 lines
581 B
C++
#include "CountdownTimerSDL.hpp"
|
|
|
|
CountdownTimerSDL::CountdownTimerSDL(unsigned frequency):
|
|
mDesiredFrequency{frequency},
|
|
mSDLFrequency{SDL_GetPerformanceFrequency()},
|
|
mStartTime{0},
|
|
mStartValue{0} {}
|
|
|
|
void CountdownTimerSDL::set(unsigned value) {
|
|
mStartTime = SDL_GetPerformanceCounter();
|
|
mStartValue = value;
|
|
}
|
|
|
|
unsigned CountdownTimerSDL::get() const {
|
|
Uint64 elapsedTime = SDL_GetPerformanceCounter() - mStartTime;
|
|
Uint64 elapsedTicks = (elapsedTime * mDesiredFrequency) / mSDLFrequency;
|
|
return elapsedTicks >= mStartValue ? 0 : mStartValue - elapsedTicks;
|
|
}
|