aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.cpp24
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.h32
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
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);