X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fgraphics%2FSimpleAnimation.h;h=d15c1d9a1258e19bd1ff1f08021fe2f3620c74bd;hb=d20fa78a0dcbc95a69bb6077d2081d42b74a2d1a;hp=dffd863a2be6bbf287039e2a44179d457b2aae0e;hpb=b9fdb4fd361fbc0c8e2c0df9615e6eed540917a1;p=l2e.git diff --git a/src/graphics/SimpleAnimation.h b/src/graphics/SimpleAnimation.h index dffd863..d15c1d9 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 NumFrames() const { return numFrames; }; + virtual int Col(int frame) const { return col; } + virtual int Row(int frame) const { return row + frame; } private: - const Sprite *sprite; - app::Timer timer; - int frameTime; int numFrames; int col; int row; - bool repeat; };