#pragma once #include "helper.h" typedef void (*remaining_callback_t)(int8); struct : public CallbackAware { void operator=(int8 value) { initial = remaining = value; } operator int8() { return remaining; } void start() { remaining = initial + 1; } void decrease() { remaining--; if (callback) callback(remaining); } bool atBeginning() { return initial == remaining; } private: int8 initial = 0, remaining = 0; } timer;