diff options
author | Shauren <shauren.trinity@gmail.com> | 2025-05-18 12:41:27 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2025-05-26 20:49:49 +0200 |
commit | f62401e6f9efba27d619fbdfc83204455c3a9715 (patch) | |
tree | c14ce0ab5d530c9a61c75fa5b70692a8893654df | |
parent | 33e2c85a81670ecb48ddf5151bc3ae5c94d59d7a (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.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Server/Packets/BattlegroundPackets.h | 2 | ||||
-rw-r--r-- | src/server/game/Server/Packets/PacketUtilities.h | 30 |
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 { |