From 71bded93f43a02b167ec2a9a46b90a5fcc842180 Mon Sep 17 00:00:00 2001 From: Guillaume Melquiond Date: Sun, 27 Aug 2006 11:39:53 +0000 Subject: Added support for leaving beings. --- src/net/beinghandler.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/net/beinghandler.cpp') diff --git a/src/net/beinghandler.cpp b/src/net/beinghandler.cpp index ac2801c2..59a4fa9a 100644 --- a/src/net/beinghandler.cpp +++ b/src/net/beinghandler.cpp @@ -54,6 +54,7 @@ BeingHandler::BeingHandler() //SMSG_PLAYER_MOVE, //0x0119, GPMSG_BEING_ENTER, + GPMSG_BEING_LEAVE, GPMSG_BEINGS_MOVE, 0 }; @@ -76,6 +77,10 @@ void BeingHandler::handleMessage(MessageIn &msg) handleBeingEnterMessage(msg); break; + case GPMSG_BEING_LEAVE: + handleBeingLeaveMessage(msg); + break; + case GPMSG_BEINGS_MOVE: handleBeingsMoveMessage(msg); break; @@ -412,6 +417,18 @@ BeingHandler::handleBeingEnterMessage(MessageIn &msg) being->setSex(msg.readByte()); } +void BeingHandler::handleBeingLeaveMessage(MessageIn &msg) +{ + msg.readByte(); // type, assume player for now, TODO + Being *being = beingManager->findBeing(msg.readLong()); + if (!being) return; + if (being == player_node->getTarget()) + { + player_node->stopAttack(); + } + beingManager->destroyBeing(being); +} + void BeingHandler::handleBeingsMoveMessage(MessageIn &msg) { for (int nb = (msg.getLength() - 2) / (4 + 4 * 2); nb > 0; --nb) -- cgit v1.2.3-70-g09d2