32 lines
542 B
C++
32 lines
542 B
C++
#pragma once
|
|
|
|
#include "helper.h"
|
|
|
|
typedef void (*remaining_callback_t)(int8);
|
|
struct : public CallbackAware<remaining_callback_t> {
|
|
|
|
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;
|