- void SetSprite(const graphics::Sprite *s) { sprite = s; }
- graphics::AnimationRunner &Animation() { return animation; }
- const graphics::AnimationRunner &Animation() const { return animation; }
+ geometry::Vector<float> &SpriteOffset() { return spriteOffset; }
+ const geometry::Vector<float> &SpriteOffset() const { return spriteOffset; }
+
+ void SetAnimation(const graphics::Animation *a);
+ void StartAnimation(app::Application &ctrl);
+ void StartAnimation(app::State &ctrl);
+ void StopAnimation();
+ bool AnimationRunning() const { return runner.Running(); }
+
+ void SetOrientation(Orientation);
+ Orientation GetOrientation() const { return orientation; }
+ void SetSpeed(float);
+
+ void SetFlags(int f) { flags = f; }
+ bool Blocking() const { return !(flags & FLAG_NONBLOCKING); }
+ bool Hostile() const {
+ // NOTE: this is a stub for testing!
+ return Blocking();
+ }
+
+ Entity *Follower() { return follower; }
+ const Entity *Follower() const { return follower; }
+ void AddFollower(Entity *);
+ void RemoveFollower(Entity *);
+
+ bool TileLock(const geometry::Vector<int> &tileSize) const;