]> git.localhorst.tv Git - l2e.git/blobdiff - src/graphics/Sprite.h
renamed namespace geometry -> math
[l2e.git] / src / graphics / Sprite.h
index f6f3b7b566d58cfa969d973767353c39cfea8b7e..8aa52085a6e30bda486a489ec0e9cb2c0cf45b38 100644 (file)
@@ -1,14 +1,7 @@
-/*
- * Sprite.h
- *
- *  Created on: Aug 5, 2012
- *      Author: holy
- */
-
 #ifndef GRAPHICS_SPRITE_H_
 #define GRAPHICS_SPRITE_H_
 
-#include "../geometry/Vector.h"
+#include "../math/Vector.h"
 
 #include <SDL.h>
 
@@ -17,30 +10,42 @@ namespace graphics {
 class Sprite {
 
 public:
+       static const int TYPE_ID = 409;
+
+public:
+       Sprite() : surface(0), size(64, 64), offset() { }
        Sprite(SDL_Surface *s, int width, int height, int xOffset = 0, int yOffset = 0)
        : surface(s), size(width, height), offset(xOffset, yOffset) { }
 
 public:
        int Width() const { return size.X(); }
        int Height() const { return size.Y(); }
-       const geometry::Vector<int> &Size() const { return size; }
-       void Draw(SDL_Surface *dest, const geometry::Vector<int> &position, int col = 0, int row = 0) const;
-       void DrawTopRight(SDL_Surface *dest, const geometry::Vector<int> &position, int col = 0, int row = 0) const {
-               geometry::Vector<int> offset(-Width(), 0);
+       const math::Vector<int> &Size() const { return size; }
+       void Draw(SDL_Surface *dest, const math::Vector<int> &position, int col = 0, int row = 0) const;
+       void DrawTopRight(SDL_Surface *dest, const math::Vector<int> &position, int col = 0, int row = 0) const {
+               math::Vector<int> offset(-Width(), 0);
                Draw(dest, position + offset, col, row);
        }
-       void DrawCenter(SDL_Surface *dest, const geometry::Vector<int> &position, int col = 0, int row = 0) const {
+       void DrawCenter(SDL_Surface *dest, const math::Vector<int> &position, int col = 0, int row = 0) const {
                Draw(dest, position - (Size() / 2), col, row);
        }
-       void DrawCenterBottom(SDL_Surface *dest, const geometry::Vector<int> &position, int col = 0, int row = 0) const {
-               geometry::Vector<int> offset(-Width() / 2, -Height());
+       void DrawCenterBottom(SDL_Surface *dest, const math::Vector<int> &position, int col = 0, int row = 0) const {
+               math::Vector<int> offset(-Width() / 2, -Height());
                Draw(dest, position + offset, col, row);
        }
 
+public:
+       void SetSurface(SDL_Surface *s) { surface = s; }
+       void SetSize(const math::Vector<int> &s) { size = s; }
+       void SetOffset(const math::Vector<int> &o) { offset = o; }
+
+       static void CreateTypeDescription();
+       static void Construct(void *);
+
 private:
        SDL_Surface *surface;
-       geometry::Vector<int> size;
-       geometry::Vector<int> offset;
+       math::Vector<int> size;
+       math::Vector<int> offset;
 
 };