Entity();
~Entity() { }
+public:
+ enum Orientation {
+ ORIENTATION_NORTH = 0,
+ ORIENTATION_EAST = 1,
+ ORIENTATION_SOUTH = 2,
+ ORIENTATION_WEST = 3,
+ };
+
public:
geometry::Vector<float> &Position() { return position; }
const geometry::Vector<float> &Position() const { return position; }
graphics::AnimationRunner &Animation() { return animation; }
const graphics::AnimationRunner &Animation() const { return animation; }
+ void SetOrientation(Orientation);
+ void SetSpeed(float);
+
bool TileLock(int width, int height) const;
void Update(float deltaT);
void Render(SDL_Surface *, const geometry::Vector<int> &offset) const;
+private:
+ void UpdateVelocity();
+
private:
const graphics::Sprite *sprite;
graphics::AnimationRunner animation;
geometry::Vector<float> position;
geometry::Vector<float> velocity;
+ Orientation orientation;
+ float speed;
};