From f62401e6f9efba27d619fbdfc83204455c3a9715 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 18 May 2025 12:41:27 +0200 Subject: Core/PacketIO: Added missing packet util for non-bits container sizes (cherry picked from commit c9577c5d6e167506afc7a6c291f7ea585d6a7716) # Conflicts: # src/server/game/Server/Packets/ArtifactPackets.cpp --- .../game/Server/Packets/BattlegroundPackets.cpp | 6 +++-- .../game/Server/Packets/BattlegroundPackets.h | 2 +- src/server/game/Server/Packets/PacketUtilities.h | 30 ++++++++++++++++++++++ 3 files changed, 35 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp index 75369ca6133..052cead02d6 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.cpp +++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp @@ -135,9 +135,11 @@ WorldPacket const* WorldPackets::Battleground::PVPMatchStatisticsMessage::Write( void WorldPackets::Battleground::BattlemasterJoin::Read() { - QueueIDs.resize(_worldPacket.read()); + _worldPacket >> Size(QueueIDs); _worldPacket >> Roles; - _worldPacket >> BlacklistMap[0] >> BlacklistMap[1]; + for (int32& blacklistMap : BlacklistMap) + _worldPacket >> blacklistMap; + for (uint64& queueId : QueueIDs) _worldPacket >> queueId; } diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h index fa9bfe64543..defae18ca88 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.h +++ b/src/server/game/Server/Packets/BattlegroundPackets.h @@ -233,7 +233,7 @@ namespace WorldPackets Array QueueIDs; uint8 Roles = 0; - int32 BlacklistMap[2] = { }; + std::array BlacklistMap = { }; }; class BattlemasterJoinArena final : public ClientPacket diff --git a/src/server/game/Server/Packets/PacketUtilities.h b/src/server/game/Server/Packets/PacketUtilities.h index e865ec40061..932b3491344 100644 --- a/src/server/game/Server/Packets/PacketUtilities.h +++ b/src/server/game/Server/Packets/PacketUtilities.h @@ -446,6 +446,36 @@ namespace WorldPackets template inline BitsReaderWriter Bits(T& value) { return { value }; } + template + struct SizeWriter + { + Container const& Value; + + friend inline ByteBuffer& operator<<(ByteBuffer& data, SizeWriter const& size) + { + data << static_cast(size.Value.size()); + return data; + } + }; + + template + struct SizeReaderWriter : SizeWriter + { + friend inline ByteBuffer& operator>>(ByteBuffer& data, SizeReaderWriter const& size) + { + Underlying temp; + data >> temp; + const_cast(size.Value).resize(temp); + return data; + } + }; + + template + inline SizeWriter Size(Container const& value) { return { value }; } + + template + inline SizeReaderWriter Size(Container& value) { return { value }; } + template struct BitsSizeWriter { -- cgit v1.2.3