diff options
Diffstat (limited to 'src/net/tmwa/beinghandler.cpp')
-rw-r--r-- | src/net/tmwa/beinghandler.cpp | 97 |
1 files changed, 33 insertions, 64 deletions
diff --git a/src/net/tmwa/beinghandler.cpp b/src/net/tmwa/beinghandler.cpp index 2768cd3e1..ee431acbe 100644 --- a/src/net/tmwa/beinghandler.cpp +++ b/src/net/tmwa/beinghandler.cpp @@ -599,38 +599,7 @@ void BeingHandler::processPlayerUpdate1(Net::MessageIn &msg) const if (gmstatus & 0x80) dstBeing->setGM(true); - const uint8_t type = msg.readUInt8("action type"); - switch (type) - { - case 0: - dstBeing->setAction(BeingAction::STAND, 0); - localPlayer->imitateAction(dstBeing, BeingAction::STAND); - break; - - case 1: - if (dstBeing->getCurrentAction() != BeingAction::DEAD) - { - dstBeing->setAction(BeingAction::DEAD, 0); - dstBeing->recalcSpritesOrder(); - } - break; - - case 2: - dstBeing->setAction(BeingAction::SIT, 0); - localPlayer->imitateAction(dstBeing, BeingAction::SIT); - break; - - default: - // need set stand state? - logger->log("QQQ2 SMSG_PLAYER_UPDATE_1:" - + toString(id) + " " + toString(type)); - logger->log("dstBeing id:" - + toString(dstBeing->getId())); - logger->log("dstBeing name:" - + dstBeing->getName()); - break; - } - + applyPlayerAction(dstBeing, msg.readUInt8("action type")); const int level = static_cast<int>(msg.readUInt8("level")); if (level) dstBeing->setLevel(level); @@ -781,38 +750,7 @@ void BeingHandler::processPlayerUpdate2(Net::MessageIn &msg) const if (gmstatus & 0x80) dstBeing->setGM(true); - const uint8_t type = msg.readUInt8("action type"); - switch (type) - { - case 0: - dstBeing->setAction(BeingAction::STAND, 0); - localPlayer->imitateAction(dstBeing, BeingAction::STAND); - break; - - case 1: - if (dstBeing->getCurrentAction() != BeingAction::DEAD) - { - dstBeing->setAction(BeingAction::DEAD, 0); - dstBeing->recalcSpritesOrder(); - } - break; - - case 2: - dstBeing->setAction(BeingAction::SIT, 0); - localPlayer->imitateAction(dstBeing, BeingAction::SIT); - break; - - default: - // need set stand state? - logger->log("QQQ2 SMSG_PLAYER_UPDATE_1:" - + toString(id) + " " + toString(type)); - logger->log("dstBeing id:" - + toString(dstBeing->getId())); - logger->log("dstBeing name:" - + dstBeing->getName()); - break; - } - + applyPlayerAction(dstBeing, msg.readUInt8("action type")); const int level = static_cast<int>(msg.readUInt8("level")); if (level) dstBeing->setLevel(level); @@ -1585,4 +1523,35 @@ void BeingHandler::setServerGender(Being *const being, const uint8_t gender) } } +void BeingHandler::applyPlayerAction(Being *const being, const uint8_t type) +{ + switch (type) + { + case 0: + being->setAction(BeingAction::STAND, 0); + localPlayer->imitateAction(being, BeingAction::STAND); + break; + + case 1: + if (being->getCurrentAction() != BeingAction::DEAD) + { + being->setAction(BeingAction::DEAD, 0); + being->recalcSpritesOrder(); + } + break; + + case 2: + being->setAction(BeingAction::SIT, 0); + localPlayer->imitateAction(being, BeingAction::SIT); + break; + + default: + // need set stand state? + logger->log("QQQ2 SMSG_PLAYER_UPDATE_1:" + toString(type)); + logger->log("being id:" + toString(being->getId())); + logger->log("being name:" + being->getName()); + break; + } +} + } // namespace TmwAthena |