]> git.localhorst.tv Git - l2e.git/blobdiff - src/graphics/Sprite.h
merged Point into Vector
[l2e.git] / src / graphics / Sprite.h
index 5710ee58639b3eebf439dd975794968c03e39620..942d98e51e5e7424d791d657aa7ab94d4371ace3 100644 (file)
@@ -8,6 +8,8 @@
 #ifndef GRAPHICS_SPRITE_H_
 #define GRAPHICS_SPRITE_H_
 
+#include "../geometry/Vector.h"
+
 #include <SDL.h>
 
 namespace graphics {
@@ -15,18 +17,32 @@ namespace graphics {
 class Sprite {
 
 public:
-       Sprite(SDL_Surface *s, int width, int height)
-       : surface(s), width(width), height(height) { }
+       Sprite(SDL_Surface *s, int width, int height, int xOffset = 0, int yOffset = 0)
+       : surface(s), width(width), height(height), xOffset(xOffset), yOffset(yOffset) { }
 
 public:
        int Width() const { return width; }
        int Height() const { return height; }
-       void Draw(SDL_Surface *dest, int x, int y, int col = 0, int row = 0) const;
+       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);
+               Draw(dest, position + offset, col, row);
+       }
+       void DrawCenter(SDL_Surface *dest, const geometry::Vector<int> &position, int col = 0, int row = 0) const {
+               geometry::Vector<int> offset(-Width() / 2, -Height() / 2);
+               Draw(dest, position + offset, 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());
+               Draw(dest, position + offset, col, row);
+       }
 
 private:
        SDL_Surface *surface;
        int width;
        int height;
+       int xOffset;
+       int yOffset;
 
 };