Files
sortui/src/timer.cpp
T

40 lines
1.1 KiB
C++

#include <chrono>
#include <functional>
#include <memory>
#include <string>
#include <utility>
#include "timer.hpp"
using namespace std::chrono;
using namespace std;
Timer::Timer(size_t triggeramount, function<bool()> myaction, milliseconds triggerinterval)
:triggeramount(triggeramount), timeraction(myaction), triggerinterval(triggerinterval) {}
void Timer::add_time(milliseconds deltatime) {
accumulator += deltatime;
if (accumulator >= triggerinterval) {
accumulator -= triggerinterval;
timeraction();
triggercount++;
if (!isinfinite && triggercount >= triggeramount){
isexpired=true;
}
}
};
void TimerManager::add_timer(size_t triggeramount, function<bool()> myaction, std::chrono::milliseconds triggerinterval) {
Timer mynewtimer(triggeramount, myaction, triggerinterval);
timers.push_back(mynewtimer);
};
void TimerManager::update_timers() {
steady_clock::time_point currenttime =
steady_clock::now();
milliseconds deltatime = duration_cast<milliseconds>(currenttime-previoustime);
for(Timer &mytimer: timers){
mytimer.add_time(deltatime);
}
previoustime = currenttime;
}