diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 7 |
3 files changed, 14 insertions, 7 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index a3ed092e56a..c5d5f5540d5 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -745,7 +745,7 @@ void WorldSession::HandleCharDeleteOpcode(WorldPacket& recvData) SendCharDelete(CHAR_DELETE_SUCCESS); } -void WorldSession::HandlePlayerLoginOpcode(WorldPacket& recvData) +void WorldSession::HandlePlayerLoginOpcode(WorldPackets::Character::PlayerLogin& playerLogin) { if (PlayerLoading() || GetPlayer() != NULL) { @@ -758,9 +758,6 @@ void WorldSession::HandlePlayerLoginOpcode(WorldPacket& recvData) m_playerLoading = true; - WorldPackets::Character::PlayerLogin playerLogin(std::move(recvData)); - playerLogin.Read(); - TC_LOG_DEBUG("network", "Character %s logging in", playerLogin.Guid.ToString().c_str()); if (!IsLegitCharacterForAccount(playerLogin.Guid)) diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index cfd1f1a2358..4d62b83552f 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -18,6 +18,7 @@ #include "Opcodes.h" #include "WorldSession.h" +#include "Packets/CharacterPackets.h" template<class PacketClass, void(WorldSession::*HandlerFunction)(PacketClass&)> class PacketHandler : public OpcodeHandler @@ -100,6 +101,9 @@ void OpcodeTable::Initialize() #define DEFINE_OPCODE_HANDLER_OLD(opcode, status, processing, handler) \ ValidateAndSetOpcode<WorldPacket, handler>(opcode, #opcode, status, processing); +#define DEFINE_HANDLER(opcode, status, processing, packetclass, handler) \ + ValidateAndSetOpcode<packetclass, handler>(opcode, #opcode, status, processing); + DEFINE_OPCODE_HANDLER_OLD(CMSG_ACCEPT_LEVEL_GRANT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAcceptGrantLevel ); DEFINE_OPCODE_HANDLER_OLD(CMSG_ACCEPT_TRADE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAcceptTradeOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_ACTIVATETAXI, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiOpcode ); @@ -454,7 +458,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_PET_STOP_ATTACK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePetStopAttack ); DEFINE_OPCODE_HANDLER_OLD(CMSG_PING, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess ); DEFINE_OPCODE_HANDLER_OLD(CMSG_PLAYED_TIME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePlayedTime ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_PLAYER_LOGIN, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandlePlayerLoginOpcode ); + DEFINE_HANDLER(CMSG_PLAYER_LOGIN, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::PlayerLogin, &WorldSession::HandlePlayerLoginOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_PLAYER_VEHICLE_ENTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleEnterPlayerVehicle ); DEFINE_OPCODE_HANDLER_OLD(CMSG_PLAY_DANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_PUSHQUESTTOPARTY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePushQuestToParty ); @@ -659,7 +663,8 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(MSG_TABARDVENDOR_ACTIVATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTabardVendorActivateOpcode); DEFINE_OPCODE_HANDLER_OLD(MSG_TALENT_WIPE_CONFIRM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTalentWipeConfirmOpcode ); -#undef DEFINE_OPCODE_HANDLER +#undef DEFINE_OPCODE_HANDLER_OLD +#undef DEFINE_HANDLER #define DEFINE_SERVER_OPCODE_HANDLER(opcode, status) \ ValidateAndSetOpcode(opcode, #opcode, status) diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 5b707809cde..f195bf2908d 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -74,6 +74,11 @@ class RBACData; namespace WorldPackets { class ServerPacket; + + namespace Character + { + class PlayerLogin; + } } enum AccountDataType @@ -470,7 +475,7 @@ class WorldSession void HandleCharDeleteOpcode(WorldPacket& recvPacket); void HandleCharCreateOpcode(WorldPacket& recvPacket); void HandleCharCreateCallback(PreparedQueryResult result, CharacterCreateInfo* createInfo); - void HandlePlayerLoginOpcode(WorldPacket& recvPacket); + void HandlePlayerLoginOpcode(WorldPackets::Character::PlayerLogin& playerLogin); void HandleLoadScreenOpcode(WorldPacket& recvPacket); void HandleCharEnum(PreparedQueryResult result); void HandlePlayerLogin(LoginQueryHolder * holder); |