G.U.L.L.S/include/AnimationBase.h

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