#include #include #include #include #include #include "timer.hpp" Timer::Timer(std::string name, int triggercount, std::function myaction, std::chrono::milliseconds triggerinterval) : name(name), triggeramount(triggercount), timeraction(myaction), triggerinterval(triggerinterval) {} void Timer::add_time(std::chrono::milliseconds deltatime) { accumulator += deltatime; if (accumulator >= triggerinterval) { accumulator -= triggerinterval; timeraction(*this); triggercounter++; if (!isinfinite && triggercounter >= triggeramount){ isexpired=true; } } }; void TimerManager::add_timer(std::unique_ptr newtimer) { timers.push_back(std::move(newtimer)); }; void TimerManager::update_timers() { std::chrono::steady_clock::time_point currenttime = std::chrono::steady_clock::now(); std::chrono::milliseconds deltatime = std::chrono::duration_cast(currenttime-previoustime); for(std::unique_ptr &mytimer: timers){ mytimer->add_time(deltatime); } }