X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fgraphics%2FComplexAnimation.h;h=815e9c5a6e4183c88de7225e4721b67a4521033c;hb=bb7326004878abeadbe171db75d2caa0eae74431;hp=a1ffaaabafd85923660829e7e55843497bf41124;hpb=ebeefe8b81fbb2e69939d67972453c01b023ec22;p=l2e.git diff --git a/src/graphics/ComplexAnimation.h b/src/graphics/ComplexAnimation.h index a1ffaaa..815e9c5 100644 --- a/src/graphics/ComplexAnimation.h +++ b/src/graphics/ComplexAnimation.h @@ -32,23 +32,24 @@ public: } } - virtual void Draw(SDL_Surface *dest, geometry::Point position) const { - Animation::Draw(dest, position + frames[Frame()].disposition); - } - -protected: - virtual int Col() const { return frames[Frame()].col; } - virtual int Row() const { return frames[Frame()].row; } - virtual int NumFrames() const { return frames.size(); }; - -private: +public: struct FrameProp { + FrameProp() : col(0), row(0) { } FrameProp(int col, int row, const geometry::Vector &disposition) : col(col), row(row), disposition(disposition) {} int col; int row; geometry::Vector disposition; }; + void AddFrame(const FrameProp &f) { frames.push_back(f); } + +protected: + virtual int NumFrames() const { return frames.size(); }; + virtual int Col(int frame) const { return frames[frame].col; } + virtual int Row(int frame) const { return frames[frame].row; } + virtual geometry::Vector Offset(int frame) const { return frames[frame].disposition; } + +private: std::vector frames; };