]> git.localhorst.tv Git - l2e.git/commitdiff
added offsetabiliy to animations
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 12 Aug 2012 16:07:07 +0000 (18:07 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 12 Aug 2012 16:07:07 +0000 (18:07 +0200)
src/graphics/Animation.h

index 55a16d99034fb70a30323ed6506514c67cebdfe0..0f33541f0397ce41ce479f4442246bf0b3fd8654 100644 (file)
@@ -24,9 +24,9 @@ class Animation {
 
 public:
        Animation()
 
 public:
        Animation()
-       : sprite(0), frameTime(0), repeat(false) { }
+       : sprite(0), frameTime(0), colOffset(0), rowOffset(0), repeat(false) { }
        Animation(const Sprite *sprite, int frameTime, bool repeat = false)
        Animation(const Sprite *sprite, int frameTime, bool repeat = false)
-       : sprite(sprite), frameTime(frameTime), repeat(repeat) { }
+       : sprite(sprite), frameTime(frameTime), colOffset(0), rowOffset(0), repeat(repeat) { }
        virtual ~Animation() { };
 
 public:
        virtual ~Animation() { };
 
 public:
@@ -42,8 +42,14 @@ public:
        bool Running() const {
                return timer.Running() && (repeat || timer.Iteration() < NumFrames());
        }
        bool Running() const {
                return timer.Running() && (repeat || timer.Iteration() < NumFrames());
        }
+
+       void SetColOffset(int offset) { colOffset = offset; }
+       int ColOffset() const { return colOffset; }
+       void SetRowOffset(int offset) { rowOffset = offset; }
+       int RowOffset() const { return rowOffset; }
+
        virtual void Draw(SDL_Surface *dest, geometry::Point<int> position) const {
        virtual void Draw(SDL_Surface *dest, geometry::Point<int> position) const {
-               sprite->Draw(dest, position, Col(), Row());
+               sprite->Draw(dest, position, Col() + ColOffset(), Row() + RowOffset());
        }
        void DrawTopRight(SDL_Surface *dest, geometry::Point<int> position) const {
                geometry::Vector<int> offset(-sprite->Width(), 0);
        }
        void DrawTopRight(SDL_Surface *dest, geometry::Point<int> position) const {
                geometry::Vector<int> offset(-sprite->Width(), 0);
@@ -68,6 +74,8 @@ private:
        const Sprite *sprite;
        app::Timer<Uint32> timer;
        int frameTime;
        const Sprite *sprite;
        app::Timer<Uint32> timer;
        int frameTime;
+       int colOffset;
+       int rowOffset;
        bool repeat;
 
 };
        bool repeat;
 
 };