4 * Created on: Aug 12, 2012
8 #ifndef GRAPHICS_COMPLEXANIMATION_H_
9 #define GRAPHICS_COMPLEXANIMATION_H_
11 #include "Animation.h"
17 class ComplexAnimation
21 ComplexAnimation() { }
22 ComplexAnimation(const Sprite *sprite, int frameTime, bool repeat = false)
23 : Animation(sprite, frameTime, repeat) { }
26 void AddFrame(int col, int row, const geometry::Vector<int> &disposition = geometry::Vector<int>()) {
27 frames.push_back(FrameProp(col, row, disposition));
29 void AddFrames(int col, int row, const geometry::Vector<int> &disposition, int amount) {
30 for (int i(0); i < amount; ++i) {
31 AddFrame(col, row, disposition);
37 FrameProp() : col(0), row(0) { }
38 FrameProp(int col, int row, const geometry::Vector<int> &disposition)
39 : col(col), row(row), disposition(disposition) {}
42 geometry::Vector<int> disposition;
44 void AddFrame(const FrameProp &f) { frames.push_back(f); }
47 virtual int NumFrames() const { return frames.size(); };
48 virtual int Col(int frame) const { return frames[frame].col; }
49 virtual int Row(int frame) const { return frames[frame].row; }
50 virtual geometry::Vector<int> Offset(int frame) const { return frames[frame].disposition; }
53 std::vector<FrameProp> frames;
59 #endif /* GRAPHICS_COMPLEXANIMATION_H_ */