75 lines
1.1 KiB
C++
75 lines
1.1 KiB
C++
#ifndef ANIMATIONBASE_H
|
|
#define ANIMATIONBASE_H
|
|
|
|
#include "elapsedMillis.h"
|
|
|
|
class AnimationBase {
|
|
public:
|
|
AnimationBase(char* _refName, long _updateTime)
|
|
: refName(_refName), updateTime(_updateTime),
|
|
enabled(false), initialized(false), timer(0) {}
|
|
virtual ~AnimationBase() {
|
|
delete refName;
|
|
}
|
|
|
|
virtual void initialize() {}
|
|
virtual void execute() {}
|
|
virtual bool isFinished() {
|
|
return false;
|
|
}
|
|
|
|
void update() {
|
|
if (enabled) {
|
|
if (timer >= updateTime) {
|
|
if (!initialized) {
|
|
initialize();
|
|
initialized = true;
|
|
}
|
|
|
|
if (!isFinished()) {
|
|
execute();
|
|
}
|
|
|
|
resetTimer();
|
|
}
|
|
}
|
|
}
|
|
|
|
void enable() {
|
|
enabled = true;
|
|
}
|
|
|
|
void disable() {
|
|
enabled = false;
|
|
}
|
|
|
|
void reinitialize() {
|
|
initialized = false;
|
|
}
|
|
|
|
bool isEnabled() {
|
|
return enabled;
|
|
}
|
|
|
|
char* getReferenceName() {
|
|
return refName;
|
|
}
|
|
|
|
protected:
|
|
void resetTimer() {
|
|
timer = 0;
|
|
}
|
|
|
|
private:
|
|
char*
|
|
refName;
|
|
long
|
|
updateTime;
|
|
bool
|
|
enabled,
|
|
initialized;
|
|
elapsedMillis
|
|
timer;
|
|
};
|
|
|
|
#endif |