diff options
Diffstat (limited to 'src/server/game/Server')
| -rw-r--r-- | src/server/game/Server/Packets/AuthenticationPackets.cpp | 24 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/AuthenticationPackets.h | 32 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 4 |
3 files changed, 45 insertions, 15 deletions
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index b19ce9c16ad..fadc0caf6c3 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -73,6 +73,16 @@ void WorldPackets::Auth::AuthSession::Read() } } +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Auth::AuthWaitInfo const& waitInfo) +{ + data << uint32(waitInfo.WaitCount); + data << uint32(waitInfo.WaitTime); + data.WriteBit(waitInfo.HasFCM); + data.FlushBits(); + + return data; +} + WorldPackets::Auth::AuthResponse::AuthResponse() : ServerPacket(SMSG_AUTH_RESPONSE, 132) { @@ -166,12 +176,14 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write() } if (WaitInfo) - { - _worldPacket << uint32(WaitInfo->WaitCount); - _worldPacket << uint32(WaitInfo->WaitTime); - _worldPacket.WriteBit(WaitInfo->HasFCM); - _worldPacket.FlushBits(); - } + _worldPacket << *WaitInfo; + + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Auth::WaitQueueUpdate::Write() +{ + _worldPacket << WaitInfo; return &_worldPacket; } diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h index 785e99a341b..8d9712c57d8 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.h +++ b/src/server/game/Server/Packets/AuthenticationPackets.h @@ -99,6 +99,13 @@ namespace WorldPackets void Read() override; }; + struct AuthWaitInfo + { + uint32 WaitCount = 0; ///< position of the account in the login queue + uint32 WaitTime = 0; ///< Wait time in login queue in minutes, if sent queued and this value is 0 client displays "unknown time" + bool HasFCM = false; ///< true if the account has a forced character migration pending. @todo implement + }; + class AuthResponse final : public ServerPacket { public: @@ -146,13 +153,6 @@ namespace WorldPackets Optional<uint16> NumPlayersAlliance; ///< number of alliance players in this realm. @todo implement }; - struct AuthWaitInfo - { - uint32 WaitCount = 0; ///< position of the account in the login queue - uint32 WaitTime = 0; ///< Wait time in login queue in minutes, if sent queued and this value is 0 client displays "unknown time" - bool HasFCM = false; ///< true if the account has a forced character migration pending. @todo implement - }; - AuthResponse(); WorldPacket const* Write() override; @@ -162,6 +162,24 @@ namespace WorldPackets uint32 Result = 0; ///< the result of the authentication process, possible values are @ref BattlenetRpcErrorCode }; + class WaitQueueUpdate final : public ServerPacket + { + public: + WaitQueueUpdate() : ServerPacket(SMSG_WAIT_QUEUE_UPDATE, 4 + 4 + 1) { } + + WorldPacket const* Write() override; + + AuthWaitInfo WaitInfo; + }; + + class WaitQueueFinish final : public ServerPacket + { + public: + WaitQueueFinish() : ServerPacket(SMSG_WAIT_QUEUE_FINISH, 0) { } + + WorldPacket const* Write() override { return &_worldPacket; } + }; + enum class ConnectToSerial : uint32 { None = 0, diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 1017d5e3d67..5a573c81f19 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1764,8 +1764,8 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_STORAGE_FAILED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_STORAGE_TRANSFER_CHANGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_VOID_TRANSFER_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_WAIT_QUEUE_FINISH, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_WAIT_QUEUE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_WAIT_QUEUE_FINISH, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_WAIT_QUEUE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARDEN_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEATHER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); |
