]> git.localhorst.tv Git - l2e.git/blobdiff - src/map/Entity.cpp
added tile ladder flag
[l2e.git] / src / map / Entity.cpp
index 93530f142735021f063f8dab333f66d694680f51..6bce2adfde82b28d092cd08a03eae7fd39246f7e 100644 (file)
@@ -26,6 +26,7 @@ Entity::Entity()
 , partyLayout(0)
 , monsters(0)
 , numMonsters(0)
+, direction(ORIENTATION_NORTH)
 , orientation(ORIENTATION_NORTH)
 , speed(0)
 , flags(0) {
@@ -35,12 +36,17 @@ Entity::Entity()
 
 void Entity::SetOrientation(Orientation o) {
        orientation = o;
-       UpdateVelocity();
        if (CanTurn()) {
-               runner.SetColOffset(orientation);
+               runner.SetColOffset(o);
        }
 }
 
+void Entity::SetDirection(Orientation o) {
+       direction = o;
+       UpdateVelocity();
+       SetOrientation(o);
+}
+
 void Entity::SetSpeed(Fixed<8> s) {
        speed = s;
        UpdateVelocity();
@@ -103,7 +109,7 @@ void Entity::UpdateVelocity() {
                velocity = Vector<Fixed<8> >();
                return;
        }
-       switch (orientation) {
+       switch (direction) {
                case ORIENTATION_NORTH:
                        velocity = Vector<Fixed<8> >(0, -speed);
                        break;
@@ -121,9 +127,8 @@ void Entity::UpdateVelocity() {
 
 
 bool Entity::TileLock(const math::Vector<int> &tileSize) const {
-       // TODO: change position to point to the top-left corner of a tile
        Vector<int> tilePosition(ToInt(position));
-       return (tilePosition.X() % tileSize.X() == 0) && (tilePosition.Y() % tileSize.Y() == 0);
+       return tilePosition % tileSize == Vector<int>();
 }
 
 
@@ -133,7 +138,6 @@ void Entity::Update(Uint32 deltaT) {
 
 
 void Entity::Render(SDL_Surface *dest, const Vector<int> &offset) const {
-       // TODO: configurable sprite offsets
        if (runner.Running()) {
                runner.Draw(dest, offset + ToInt(position) + spriteOffset);
        } else {