From ce23c2eecd596c3e83cb2d813889bf2a79dae2d0 Mon Sep 17 00:00:00 2001 From: David Athay Date: Wed, 15 Oct 2008 15:44:55 +0000 Subject: Added communicating change of direction to clients. --- src/game-server/gamehandler.cpp | 5 +++++ src/game-server/movingobject.hpp | 2 +- src/game-server/object.hpp | 3 ++- src/game-server/state.cpp | 9 +++++++++ 4 files changed, 17 insertions(+), 2 deletions(-) (limited to 'src/game-server') diff --git a/src/game-server/gamehandler.cpp b/src/game-server/gamehandler.cpp index 3540ac5..d406866 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 a81212b..025a91d 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 92980d0..d94e28c 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 a129e88..8beb089 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()) { -- cgit