diff options
| author | Shauren <shauren.trinity@gmail.com> | 2025-05-18 12:41:27 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2025-05-18 12:41:27 +0200 |
| commit | c9577c5d6e167506afc7a6c291f7ea585d6a7716 (patch) | |
| tree | 8045e83debdca265431bf4197de1d51760a31e8f /src | |
| parent | 49dda145a67e4b99b2c6c501f9ac02967ab893e5 (diff) | |
Core/PacketIO: Added missing packet util for non-bits container sizes
Diffstat (limited to 'src')
4 files changed, 36 insertions, 4 deletions
diff --git a/src/server/game/Server/Packets/ArtifactPackets.cpp b/src/server/game/Server/Packets/ArtifactPackets.cpp index 8e8a25f5360..dc53b5b6774 100644 --- a/src/server/game/Server/Packets/ArtifactPackets.cpp +++ b/src/server/game/Server/Packets/ArtifactPackets.cpp @@ -30,7 +30,7 @@ void ArtifactAddPower::Read() { _worldPacket >> ArtifactGUID; _worldPacket >> ForgeGUID; - PowerChoices.resize(_worldPacket.read<uint32>()); + _worldPacket >> Size<uint32>(PowerChoices); for (ArtifactPowerChoice& artifactPowerChoice : PowerChoices) _worldPacket >> artifactPowerChoice; } diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp index 6ae324494ef..f77493bb2b7 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.cpp +++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp @@ -157,9 +157,11 @@ WorldPacket const* PVPMatchStatisticsMessage::Write() void 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 5df62d44ebc..68828e80575 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.h +++ b/src/server/game/Server/Packets/BattlegroundPackets.h @@ -253,7 +253,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 { |
