diff options
Diffstat (limited to 'src/game-server')
-rw-r--r-- | src/game-server/gamehandler.cpp | 5 | ||||
-rw-r--r-- | src/game-server/movingobject.hpp | 2 | ||||
-rw-r--r-- | src/game-server/object.hpp | 3 | ||||
-rw-r--r-- | src/game-server/state.cpp | 9 |
4 files changed, 17 insertions, 2 deletions
diff --git a/src/game-server/gamehandler.cpp b/src/game-server/gamehandler.cpp index 3540ac51..d4068664 100644 --- a/src/game-server/gamehandler.cpp +++ b/src/game-server/gamehandler.cpp @@ -343,6 +343,11 @@ void GameHandler::processMessage(NetComputer *comp, MessageIn &message) } break; + case PGMSG_DIRECTION_CHANGE: + { + computer.character->setDirection(message.readByte()); + } break; + case PGMSG_DISCONNECT: { bool reconnectAccount = (bool) message.readByte(); diff --git a/src/game-server/movingobject.hpp b/src/game-server/movingobject.hpp index a81212bb..025a91d5 100644 --- a/src/game-server/movingobject.hpp +++ b/src/game-server/movingobject.hpp @@ -80,7 +80,7 @@ class MovingObject : public Object * Sets object direction. */ void setDirection(int direction) - { mDirection = direction; } + { mDirection = direction; raiseUpdateFlags(UPDATEFLAG_DIRCHANGE); } /** * Gets object direction. diff --git a/src/game-server/object.hpp b/src/game-server/object.hpp index 92980d02..d94e28c6 100644 --- a/src/game-server/object.hpp +++ b/src/game-server/object.hpp @@ -36,7 +36,8 @@ enum UPDATEFLAG_NEW_DESTINATION = 2, UPDATEFLAG_ATTACK = 4, UPDATEFLAG_ACTIONCHANGE = 8, - UPDATEFLAG_LOOKSCHANGE = 16 + UPDATEFLAG_LOOKSCHANGE = 16, + UPDATEFLAG_DIRCHANGE = 32 }; /** diff --git a/src/game-server/state.cpp b/src/game-server/state.cpp index a129e889..8beb0891 100644 --- a/src/game-server/state.cpp +++ b/src/game-server/state.cpp @@ -216,6 +216,15 @@ static void informPlayer(MapComposite *map, Character *p) gameHandler->sendTo(p, LooksMsg); } + // Send direction change messages. + if (oflags & UPDATEFLAG_DIRCHANGE) + { + MessageOut DirMsg(GPMSG_BEING_DIR_CHANGE); + DirMsg.writeShort(oid); + DirMsg.writeByte(o->getDirection()); + gameHandler->sendTo(p, DirMsg); + } + // Send damage messages. if (o->canFight()) { |