diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 534f9d45ca..a6b86b9c7d 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -791,14 +791,8 @@ void WorldSession::AbortLogin(WorldPackets::Character::LoginFailureReason reason SendPacket(WorldPackets::Character::CharacterLoginFailed(reason).Write()); } -void WorldSession::HandleLoadScreenOpcode(WorldPacket& recvPacket) +void WorldSession::HandleLoadScreenOpcode(WorldPackets::Character::LoadingScreenNotify& /*packet*/) { - TC_LOG_INFO("misc", "WORLD: Recvd CMSG_LOAD_SCREEN"); - uint32 mapID; - - recvPacket >> mapID; - recvPacket.ReadBit(); - // TODO: Do something with this packet } diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index fe7daaca27..8577fd55c0 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -311,3 +311,9 @@ WorldPacket const* WorldPackets::Character::PlayedTime::Write() return &_worldPacket; } + +void WorldPackets::Character::LoadingScreenNotify::Read() +{ + _worldPacket >> MapID; + Showing = _worldPacket.ReadBit(); +} diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index e84cfe883a..e85e856da2 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -245,6 +245,17 @@ namespace WorldPackets int32 LevelTime = 0; bool TriggerEvent = false; }; + + class LoadingScreenNotify final : public ClientPacket + { + public: + LoadingScreenNotify(WorldPacket&& packet) : ClientPacket(CMSG_LOADING_SCREEN_NOTIFY, std::move(packet)) { } + + void Read() override; + + int32 MapID = -1; + bool Showing = false; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 11d9739920..0d137944e3 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -412,7 +412,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_LF_GUILD_REMOVE_RECRUIT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildFinderRemoveRecruit ); DEFINE_HANDLER(CMSG_LF_GUILD_SET_GUILD_POST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildFinderSetGuildPost ); DEFINE_HANDLER(CMSG_LIST_INVENTORY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleListInventoryOpcode ); - DEFINE_HANDLER(CMSG_LOAD_SCREEN, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleLoadScreenOpcode ); + DEFINE_HANDLER(CMSG_LOADING_SCREEN_NOTIFY, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleLoadScreenOpcode ); DEFINE_HANDLER(CMSG_LOGOUT_CANCEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLogoutCancelOpcode ); DEFINE_HANDLER(CMSG_LOGOUT_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLogoutRequestOpcode ); DEFINE_HANDLER(CMSG_LOG_DISCONNECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess ); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index cb5783d130..aeeafe3b2b 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -315,7 +315,7 @@ enum OpcodeClient : uint16 CMSG_LF_GUILD_REMOVE_RECRUIT = 0x3027, CMSG_LF_GUILD_SET_GUILD_POST = 0x0448, CMSG_LIST_INVENTORY = 0x2806, - CMSG_LOAD_SCREEN = 0x2422, + CMSG_LOADING_SCREEN_NOTIFY = 0x2422, CMSG_LOGOUT_CANCEL = 0x2324, CMSG_LOGOUT_REQUEST = 0x0A25, CMSG_LOG_DISCONNECT = 0x446D, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 0341363057..e2160282cd 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -91,6 +91,7 @@ namespace WorldPackets class CharDelete; class EnumCharacters; class GenerateRandomCharacterName; + class LoadingScreenNotify; class PlayerLogin; class ShowingCloak; class ShowingHelm; @@ -641,7 +642,7 @@ class TC_GAME_API WorldSession void SendConnectToInstance(WorldPackets::Auth::ConnectToSerial serial); void HandleContinuePlayerLogin(); void AbortLogin(WorldPackets::Character::LoginFailureReason reason); - void HandleLoadScreenOpcode(WorldPacket& recvPacket); + void HandleLoadScreenOpcode(WorldPackets::Character::LoadingScreenNotify& packet); void HandlePlayerLogin(LoginQueryHolder const& holder); void HandleCharFactionOrRaceChange(WorldPacket& recvData); void HandleCharFactionOrRaceChangeCallback(std::shared_ptr factionChangeInfo, PreparedQueryResult result);