X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fgraphics%2FSimpleAnimation.h;h=d5d758fc7c3a88978a47aa2f0e898335a99a6b7c;hb=1907ca03c5e865c4d398170042aa384c67ffff29;hp=dffd863a2be6bbf287039e2a44179d457b2aae0e;hpb=b9fdb4fd361fbc0c8e2c0df9615e6eed540917a1;p=l2e.git diff --git a/src/graphics/SimpleAnimation.h b/src/graphics/SimpleAnimation.h index dffd863..d5d758f 100644 --- a/src/graphics/SimpleAnimation.h +++ b/src/graphics/SimpleAnimation.h @@ -8,52 +8,39 @@ #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: + static const int TYPE_ID = 408; 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); - } + void SetNumFrames(int n) { numFrames = n; } + void SetCol(int c) { col = c; } + void SetRow(int r) { row = r; } + + static void CreateTypeDescription(); + static void Construct(void *); + +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; };