aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-05-18 12:41:27 +0200
committerOvahlord <dreadkiller@gmx.de>2025-05-26 20:49:49 +0200
commitf62401e6f9efba27d619fbdfc83204455c3a9715 (patch)
treec14ce0ab5d530c9a61c75fa5b70692a8893654df
parent33e2c85a81670ecb48ddf5151bc3ae5c94d59d7a (diff)
Core/PacketIO: Added missing packet util for non-bits container sizes
(cherry picked from commit c9577c5d6e167506afc7a6c291f7ea585d6a7716) # Conflicts: # src/server/game/Server/Packets/ArtifactPackets.cpp
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.h2
-rw-r--r--src/server/game/Server/Packets/PacketUtilities.h30
3 files changed, 35 insertions, 3 deletions
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<uint32>());
+ _worldPacket >> Size<uint32>(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<uint64, 1> QueueIDs;
uint8 Roles = 0;
- int32 BlacklistMap[2] = { };
+ std::array<int32, 2> 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<uint32 BitCount, typename T>
inline BitsReaderWriter<BitCount, T> Bits(T& value) { return { value }; }
+ template<typename Underlying, typename Container>
+ struct SizeWriter
+ {
+ Container const& Value;
+
+ friend inline ByteBuffer& operator<<(ByteBuffer& data, SizeWriter const& size)
+ {
+ data << static_cast<Underlying>(size.Value.size());
+ return data;
+ }
+ };
+
+ template<typename Underlying, typename Container>
+ struct SizeReaderWriter : SizeWriter<Underlying, Container>
+ {
+ friend inline ByteBuffer& operator>>(ByteBuffer& data, SizeReaderWriter const& size)
+ {
+ Underlying temp;
+ data >> temp;
+ const_cast<Container&>(size.Value).resize(temp);
+ return data;
+ }
+ };
+
+ template<typename Underlying, typename Container>
+ inline SizeWriter<Underlying, Container> Size(Container const& value) { return { value }; }
+
+ template<typename Underlying, typename Container>
+ inline SizeReaderWriter<Underlying, Container> Size(Container& value) { return { value }; }
+
template<uint32 BitCount, typename Container>
struct BitsSizeWriter
{