From 19c2f8088f2cd266bd81bad2d95f9d6de525fe1e Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 22 May 2025 22:11:31 +0200 Subject: Core/PacketIO: Support WorldPackets::String in SizedString/SizedCString writers (cherry picked from commit 0174ece816266ae7551f296458da1a8a4d821117) --- src/server/game/Server/Packets/PacketUtilities.h | 26 ++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/game/Server/Packets/PacketUtilities.h b/src/server/game/Server/Packets/PacketUtilities.h index f5c4febcd49..b8d3e1f9de5 100644 --- a/src/server/game/Server/Packets/PacketUtilities.h +++ b/src/server/game/Server/Packets/PacketUtilities.h @@ -513,10 +513,32 @@ namespace WorldPackets namespace SizedString { template - inline BitsSizeWriter BitsSize(Container const& value) { return { value }; } + struct SizeWriter + { + Container const& Value; + + friend inline ByteBuffer& operator<<(ByteBuffer& data, SizeWriter const& bits) + { + data.WriteBits(static_cast(bits.Value.length()), BitCount); + return data; + } + }; + + template + struct SizeReaderWriter : SizeWriter + { + friend inline ByteBuffer& operator>>(ByteBuffer& data, SizeReaderWriter const& bits) + { + const_cast(bits.Value).resize(data.ReadBits(BitCount)); + return data; + } + }; template - inline BitsSizeReaderWriter BitsSize(Container& value) { return { value }; } + inline SizeWriter BitsSize(Container const& value) { return { value }; } + + template + inline SizeReaderWriter BitsSize(Container& value) { return { value }; } template struct DataWriter -- cgit v1.2.3