diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp index 1b82475b66c..2d05019a5c7 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.cpp +++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp @@ -282,7 +282,7 @@ void AuctionBrowseQuery::Read() _worldPacket >> MaxLevel; _worldPacket >> Unused1007_1; _worldPacket >> Unused1007_2; - Filters = _worldPacket.read(); + _worldPacket >> As(Filters); uint32 knownPetsSize = _worldPacket.read(); uint32 const sizeLimit = sBattlePetSpeciesStore.GetNumRows() / (sizeof(decltype(KnownPets)::value_type) * 8) + 1; diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index 19479c14929..9d9c467525b 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -30,7 +30,7 @@ void WorldPackets::Item::BuyItem::Read() _worldPacket >> Quantity; _worldPacket >> Muid; _worldPacket >> Slot; - ItemType = _worldPacket.read(); + _worldPacket >> As(ItemType); _worldPacket >> Item; } @@ -378,15 +378,15 @@ void WorldPackets::Item::RemoveNewItem::Read() void WorldPackets::Item::ChangeBagSlotFlag::Read() { _worldPacket >> BagIndex; - FlagToChange = _worldPacket.read(); - On = _worldPacket.ReadBit(); + _worldPacket >> As(FlagToChange); + _worldPacket >> Bits<1>(On); } void WorldPackets::Item::ChangeBankBagSlotFlag::Read() { _worldPacket >> BagIndex; - FlagToChange = _worldPacket.read(); - On = _worldPacket.ReadBit(); + _worldPacket >> As(FlagToChange); + _worldPacket >> Bits<1>(On); } void WorldPackets::Item::SetBackpackAutosortDisabled::Read() diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index 182e378135a..387dab8422a 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -771,7 +771,7 @@ WorldPacket const* WorldPackets::Misc::StartTimer::Write() void WorldPackets::Misc::QueryCountdownTimer::Read() { - TimerType = _worldPacket.read(); + _worldPacket >> As(TimerType); } void WorldPackets::Misc::ConversationLineStarted::Read() diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index df64e05b35a..bb028596fc2 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -19,6 +19,7 @@ #include "MoveSpline.h" #include "MoveSplineFlag.h" #include "MovementTypedefs.h" +#include "PacketUtilities.h" #include "Unit.h" #include "Util.h" @@ -975,7 +976,7 @@ void WorldPackets::Movement::MoveSetCollisionHeightAck::Read() _worldPacket >> Data; _worldPacket >> Height; _worldPacket >> MountDisplayID; - Reason = _worldPacket.read(); + _worldPacket >> As(Reason); } void WorldPackets::Movement::MoveTimeSkipped::Read() diff --git a/src/server/game/Server/Packets/PacketUtilities.h b/src/server/game/Server/Packets/PacketUtilities.h index e23bb4147fa..678d6aba977 100644 --- a/src/server/game/Server/Packets/PacketUtilities.h +++ b/src/server/game/Server/Packets/PacketUtilities.h @@ -288,7 +288,7 @@ namespace WorldPackets friend ByteBuffer& operator>>(ByteBuffer& data, Timestamp& timestamp) { - timestamp._value = data.read(); + timestamp._value = static_cast(data.read()); return data; } diff --git a/src/server/game/Server/Packets/TraitPacketsCommon.cpp b/src/server/game/Server/Packets/TraitPacketsCommon.cpp index 632376e615f..67d100bc50a 100644 --- a/src/server/game/Server/Packets/TraitPacketsCommon.cpp +++ b/src/server/game/Server/Packets/TraitPacketsCommon.cpp @@ -111,7 +111,7 @@ ByteBuffer& operator<<(ByteBuffer& data, TraitSubTreeCache const& traitSubTreeCa ByteBuffer& operator>>(ByteBuffer& data, TraitConfig& traitConfig) { data >> traitConfig.ID; - traitConfig.Type = data.read(); + data >> As(traitConfig.Type); uint32 entriesSize = data.read(); if (entriesSize > 100) throw PacketArrayMaxCapacityException(entriesSize, 100); @@ -128,7 +128,7 @@ ByteBuffer& operator>>(ByteBuffer& data, TraitConfig& traitConfig) { case TraitConfigType::Combat: data >> traitConfig.ChrSpecializationID; - traitConfig.CombatConfigFlags = data.read(); + data >> As(traitConfig.CombatConfigFlags); data >> traitConfig.LocalIdentifier; break; case TraitConfigType::Profession: diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h index f2bb422cde1..2f59f0db873 100644 --- a/src/server/shared/Packets/ByteBuffer.h +++ b/src/server/shared/Packets/ByteBuffer.h @@ -433,24 +433,24 @@ class TC_SHARED_API ByteBuffer _rpos += skip; } - template + template T read() { ResetBitPos(); - T r = read(_rpos); - _rpos += sizeof(Underlying); + T r = read(_rpos); + _rpos += sizeof(T); return r; } - template + template T read(size_t pos) const { - if (pos + sizeof(Underlying) > size()) - throw ByteBufferPositionException(pos, sizeof(Underlying), size()); - Underlying val; - std::memcpy(&val, &_storage[pos], sizeof(Underlying)); + if (pos + sizeof(T) > size()) + throw ByteBufferPositionException(pos, sizeof(T), size()); + T val; + std::memcpy(&val, &_storage[pos], sizeof(T)); EndianConvert(val); - return static_cast(val); + return val; } template