#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