]> git.localhorst.tv Git - l2e.git/commitdiff
frame shiftability in animation runner
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Tue, 2 Oct 2012 20:25:17 +0000 (22:25 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Tue, 2 Oct 2012 20:25:17 +0000 (22:25 +0200)
src/graphics/Animation.h

index 4442f89efddac88b3ecf7cb178cb219f01a50ca9..7424918364fbbdd935e23b88ba25bb425a81db2d 100644 (file)
@@ -60,7 +60,7 @@ class AnimationRunner {
 
 public:
        explicit AnimationRunner(const Animation *a = 0, int colOffset = 0, int rowOffset = 0)
-       : animation(a), sprite(0), colOffset(colOffset), rowOffset(rowOffset) { }
+       : animation(a), sprite(0), frameShift(0), colOffset(colOffset), rowOffset(rowOffset) { }
 
 public:
        bool Valid() const { return animation; }
@@ -90,6 +90,8 @@ public:
 
        const app::Timer<Uint32> &GetTimer() { return timer; }
 
+       void SetFrameShift(int offset) { frameShift = offset; }
+       int FrameShift() const { return frameShift; }
        void SetColOffset(int offset) { colOffset = offset; }
        int ColOffset() const { return colOffset; }
        void SetRowOffset(int offset) { rowOffset = offset; }
@@ -116,12 +118,13 @@ public:
                Draw(dest, position + offset);
        }
 
-       int Frame() const { return Running() ? (timer.Iteration() % animation->NumFrames()) : 0; }
+       int Frame() const { return Running() ? ((timer.Iteration() + frameShift) % animation->NumFrames()) : 0; }
 
 private:
        const Animation *animation;
        const graphics::Sprite *sprite;
        app::Timer<Uint32> timer;
+       int frameShift;
        int colOffset;
        int rowOffset;