diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-09-05 23:06:16 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-09-06 01:18:58 +0300 |
commit | c7c2c069010ca30352e25fa8e5010d556192835b (patch) | |
tree | 016d93480d2f871e7ee7bcc8e234787314330fe6 /src/net/eathena/beinghandler.cpp | |
parent | a55eae5cf0f031fcbb5be1f2c25226115d302b79 (diff) | |
download | manaplus-c7c2c069010ca30352e25fa8e5010d556192835b.tar.gz manaplus-c7c2c069010ca30352e25fa8e5010d556192835b.tar.bz2 manaplus-c7c2c069010ca30352e25fa8e5010d556192835b.tar.xz manaplus-c7c2c069010ca30352e25fa8e5010d556192835b.zip |
Move processBeingMove2 from ea namespace into eathena and tmwa.
Diffstat (limited to 'src/net/eathena/beinghandler.cpp')
-rw-r--r-- | src/net/eathena/beinghandler.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/net/eathena/beinghandler.cpp b/src/net/eathena/beinghandler.cpp index e6e16e0ad..bdfeb813a 100644 --- a/src/net/eathena/beinghandler.cpp +++ b/src/net/eathena/beinghandler.cpp @@ -910,4 +910,44 @@ void BeingHandler::processBeingStatusChange(Net::MessageIn &msg) const BLOCK_END("BeingHandler::processBeingStatusChange") } +void BeingHandler::processBeingMove2(Net::MessageIn &msg) const +{ + BLOCK_START("BeingHandler::processBeingMove2") + if (!actorManager) + { + BLOCK_END("BeingHandler::processBeingMove2") + return; + } + + /* + * A simplified movement packet, used by the + * later versions of eAthena for both mobs and + * players + */ + Being *const dstBeing = actorManager->findBeing(msg.readInt32("being id")); + + /* + * This packet doesn't have enough info to actually + * create a new being, so if the being isn't found, + * we'll just pretend the packet didn't happen + */ + + if (!dstBeing) + { + BLOCK_END("BeingHandler::processBeingMove2") + return; + } + + uint16_t srcX, srcY, dstX, dstY; + msg.readCoordinatePair(srcX, srcY, dstX, dstY, "move path"); + msg.readInt32("tick"); + + dstBeing->setAction(BeingAction::STAND, 0); + dstBeing->setTileCoords(srcX, srcY); + dstBeing->setDestination(dstX, dstY); + if (dstBeing->getType() == ActorType::PLAYER) + dstBeing->setMoveTime(); + BLOCK_END("BeingHandler::processBeingMove2") +} + } // namespace EAthena |