aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Server/Packets/ArtifactPackets.cpp2
-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
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
{