#ifndef TIMER_HPP #define TIMER_HPP #include #include #include #include #include #include class timer; class timeraction { public: virtual ~timeraction() = default; virtual void update(const timer &t) = 0; }; class timer { private: double accumulator = 0; int triggeramount = 0; double time_interval = 1; // only display every 1 seconds public: std::string name; int triggercounter = 0; bool is_infinite = false; std::unique_ptr action; bool is_expired = false; //infinite timer timer(std::string name_input, size_t interval_input, std::unique_ptr action_input ); //limited timer timer(std::string name, size_t interval_input, int triggeramount, std::unique_ptr action ); // callbackfunc once enough time has accumulated void updatetime(double DeltaTime); }; // manage collection of timers class timermanager { std::vector> timers; public: void addtimer(std::unique_ptr input_timer); void updatetimers(double dtime); }; class swapaction : public timeraction { public: size_t it_i = 0; bool iscomplete = false; std::vector &input_vector; swapaction(std::vector &input_vector); void update(const timer &t); }; #endif /* externalize state */