#ifndef GRAPHICS_SPRITE_H_
#define GRAPHICS_SPRITE_H_
+#include "../geometry/operators.h"
+#include "../geometry/Point.h"
+#include "../geometry/Vector.h"
+
#include <SDL.h>
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, geometry::Point<int> position, int col = 0, int row = 0) const;
+ void DrawTopRight(SDL_Surface *dest, geometry::Point<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, geometry::Point<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, geometry::Point<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;
};