}
}
- virtual void Draw(SDL_Surface *dest, geometry::Point<int> 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<int> &disposition)
: col(col), row(row), disposition(disposition) {}
int col;
int row;
geometry::Vector<int> 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<int> Offset(int frame) const { return frames[frame].disposition; }
+
+private:
std::vector<FrameProp> frames;
};