X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fgraphics%2FSimpleAnimation.h;fp=src%2Fgraphics%2FSimpleAnimation.h;h=3354328b5e6cb5281ba69d6f35d14df05f40704c;hb=ebeefe8b81fbb2e69939d67972453c01b023ec22;hp=dffd863a2be6bbf287039e2a44179d457b2aae0e;hpb=b9fdb4fd361fbc0c8e2c0df9615e6eed540917a1;p=l2e.git diff --git a/src/graphics/SimpleAnimation.h b/src/graphics/SimpleAnimation.h index dffd863..3354328 100644 --- a/src/graphics/SimpleAnimation.h +++ b/src/graphics/SimpleAnimation.h @@ -8,52 +8,28 @@ #ifndef GRAPHICS_SIMPLEANIMATION_H_ #define GRAPHICS_SIMPLEANIMATION_H_ -#include "Sprite.h" -#include "../app/Application.h" -#include "../app/State.h" -#include "../app/Timer.h" -#include "../geometry/Point.h" - -#include +#include "Animation.h" namespace graphics { -class SimpleAnimation { +class SimpleAnimation +: public Animation { public: SimpleAnimation() - : sprite(0), frameTime(0), numFrames(0), col(0), row(0), repeat(false) { } + : numFrames(0), col(0), row(0) { } SimpleAnimation(const Sprite *sprite, int frameTime, int numFrames, int col = 0, int row = 0, bool repeat = false) - : sprite(sprite), frameTime(frameTime), numFrames(numFrames), col(col), row(row), repeat(repeat) { } + : Animation(sprite, frameTime, repeat), numFrames(numFrames), col(col), row(row) { } -public: - void Start(app::State &ctrl) { - timer = ctrl.GraphicsTimers().StartInterval(frameTime); - } - void Start(app::Application &ctrl) { - timer = ctrl.GlobalTimers().StartInterval(frameTime); - } - void Stop() { - timer = app::Timer(); - } - bool Running() const { - return timer.Running() && (repeat || timer.Iteration() < numFrames); - } - void Draw(SDL_Surface *dest, geometry::Point position) { - sprite->Draw(dest, position, col, Running() ? row + (timer.Iteration() % numFrames) : row); - } - void DrawCenterBottom(SDL_Surface *dest, geometry::Point position) const { - sprite->DrawCenterBottom(dest, position, col, Running() ? row + (timer.Iteration() % numFrames) : row); - } +protected: + virtual int Col() const { return col; } + virtual int Row() const { return row + Frame(); } + virtual int NumFrames() const { return numFrames; }; private: - const Sprite *sprite; - app::Timer timer; - int frameTime; int numFrames; int col; int row; - bool repeat; };