]> git.localhorst.tv Git - l2e.git/blobdiff - src/graphics/Animation.h
new language, new compiler
[l2e.git] / src / graphics / Animation.h
index 79bfa852b887f02316afad317a5bfdd912348eb5..ddbf095f185e06d552cc38b4a0153a3c3db53aaa 100644 (file)
@@ -10,7 +10,8 @@ namespace loader {
 }
 
 #include "../app/Timer.h"
-#include "../geometry/Vector.h"
+#include "../math/Vector.h"
+#include "../loader/noinit.h"
 
 #include <memory>
 #include <SDL.h>
@@ -30,6 +31,8 @@ public:
        Animation(const Sprite *sprite, int frameTime, bool repeat = false)
        : sprite(sprite), frameTime(frameTime), repeat(repeat) { }
        virtual ~Animation() { };
+protected:
+       Animation(loader::noinit_t);
 
 public:
        const Sprite *GetSprite() const { return sprite; }
@@ -45,7 +48,7 @@ public:
        virtual int NumFrames() const = 0;
        virtual int Col(int frame) const = 0;
        virtual int Row(int frame) const = 0;
-       virtual geometry::Vector<int> Offset(int frame) const { return geometry::Vector<int>(); }
+       virtual math::Vector<int> Offset(int frame) const { return math::Vector<int>(); }
 
        static void CreateTypeDescription();
 
@@ -72,6 +75,7 @@ public:
 
        void Start(app::State &ctrl);
        void Start(app::Application &ctrl);
+       void Synchronize(const AnimationRunner &other) { timer = other.timer; }
        void Stop();
        bool Started() const;
        bool Running() const;
@@ -93,10 +97,10 @@ public:
        void ChangeSprite(const Sprite *s) { sprite = s; }
        const Sprite *GetSprite() const { return sprite ? sprite : animation->GetSprite(); }
 
-       void Draw(SDL_Surface *dest, geometry::Vector<int> position) const;
-       void DrawTopRight(SDL_Surface *dest, geometry::Vector<int> position) const;
-       void DrawCenter(SDL_Surface *dest, geometry::Vector<int> position) const;
-       void DrawCenterBottom(SDL_Surface *dest, geometry::Vector<int> position) const;
+       void Draw(SDL_Surface *dest, math::Vector<int> position) const;
+       void DrawTopRight(SDL_Surface *dest, math::Vector<int> position) const;
+       void DrawCenter(SDL_Surface *dest, math::Vector<int> position) const;
+       void DrawCenterBottom(SDL_Surface *dest, math::Vector<int> position) const;
 
        int Frame() const;
 
@@ -112,4 +116,4 @@ private:
 
 }
 
-#endif /* GRAPHICS_SIMPLEANIMATION_H_ */
+#endif