X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmap%2FEntity.h;h=cc30c9518288e3886a6711a937a9d4b22133cddf;hb=2ccc2369d32fb680a3047519d79c17de34c4e10a;hp=13ecacac627eb021ee9f35ede96db8b739e6ea8f;hpb=0ad5ca97b5df217329bc319d62564a9f46ba11d7;p=l2e.git diff --git a/src/map/Entity.h b/src/map/Entity.h index 13ecaca..cc30c95 100644 --- a/src/map/Entity.h +++ b/src/map/Entity.h @@ -34,6 +34,8 @@ public: }; enum Flags { FLAG_NONBLOCKING = 0x01, + FLAG_PUSHABLE = 0x02, + FLAG_FIXED_ORIENTATION = 0x04, }; public: @@ -46,19 +48,29 @@ public: geometry::Vector &SpriteOffset() { return spriteOffset; } const geometry::Vector &SpriteOffset() const { return spriteOffset; } + void ResetPosition(const geometry::Vector &tileSize) { position = tilePosition * tileSize; } + 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 SetSprite(const graphics::Sprite *s) { sprite = s; } + void SetOrientation(Orientation); Orientation GetOrientation() const { return orientation; } void SetSpeed(float); + void SetHandsFree(); + void SetCarrying(); + void SetPushing(); + void SetFlags(int f) { flags = f; } bool Blocking() const { return !(flags & FLAG_NONBLOCKING); } bool Hostile() const { return partyLayout && numMonsters > 0; } + bool Pushable() const { return flags & FLAG_PUSHABLE; } + bool CanTurn() const { return !(flags & FLAG_FIXED_ORIENTATION); } void SetPartyLayout(battle::PartyLayout *l) { partyLayout = l; } battle::PartyLayout *PartyLayout() { return partyLayout; } @@ -88,11 +100,13 @@ private: private: Entity *follower; const graphics::Animation *animation; + const graphics::Sprite *sprite; battle::PartyLayout *partyLayout; battle::Monster *monsters; int numMonsters; graphics::AnimationRunner runner; geometry::Vector spriteOffset; + geometry::Vector tilePosition; geometry::Vector position; geometry::Vector velocity; Orientation orientation;