diff options
72 files changed, 455 insertions, 380 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 35427df1cbf..fa03ea214e4 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -245,7 +245,7 @@ void Object::BuildValuesUpdateBlockForPlayerWithFlag(UpdateData* data, UF::Updat void Object::BuildEntityFragments(ByteBuffer* data, std::span<WowCS::EntityFragment const> fragments) { data->append(fragments.data(), fragments.size()); - *data << WorldPackets::As<uint8>(WowCS::EntityFragment::End); + *data << uint8(WowCS::EntityFragment::End); } void Object::BuildEntityFragmentsForValuesUpdateForPlayerWithMask(ByteBuffer* data, EnumFlag<UF::UpdateFieldFlag> flags) const diff --git a/src/server/game/Server/Packets/AchievementPackets.cpp b/src/server/game/Server/Packets/AchievementPackets.cpp index b35b1a1a1cb..418e44a8f32 100644 --- a/src/server/game/Server/Packets/AchievementPackets.cpp +++ b/src/server/game/Server/Packets/AchievementPackets.cpp @@ -16,6 +16,7 @@ */ #include "AchievementPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Achievement { diff --git a/src/server/game/Server/Packets/AddonPackets.cpp b/src/server/game/Server/Packets/AddonPackets.cpp index 090f785cf5a..6876e015095 100644 --- a/src/server/game/Server/Packets/AddonPackets.cpp +++ b/src/server/game/Server/Packets/AddonPackets.cpp @@ -17,7 +17,7 @@ #include "AddonPackets.h" #include "ByteBuffer.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::Addon { diff --git a/src/server/game/Server/Packets/AdventureJournalPackets.cpp b/src/server/game/Server/Packets/AdventureJournalPackets.cpp index 30e589f50f9..8f3a37c5daa 100644 --- a/src/server/game/Server/Packets/AdventureJournalPackets.cpp +++ b/src/server/game/Server/Packets/AdventureJournalPackets.cpp @@ -16,7 +16,7 @@ */ #include "AdventureJournalPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::AdventureJournal { diff --git a/src/server/game/Server/Packets/AdventureMapPackets.cpp b/src/server/game/Server/Packets/AdventureMapPackets.cpp index c0d798abecd..223942c87a8 100644 --- a/src/server/game/Server/Packets/AdventureMapPackets.cpp +++ b/src/server/game/Server/Packets/AdventureMapPackets.cpp @@ -16,7 +16,7 @@ */ #include "AdventureMapPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::AdventureMap { diff --git a/src/server/game/Server/Packets/AreaTriggerPackets.cpp b/src/server/game/Server/Packets/AreaTriggerPackets.cpp index 0bc53ff4cfc..fd783bbe177 100644 --- a/src/server/game/Server/Packets/AreaTriggerPackets.cpp +++ b/src/server/game/Server/Packets/AreaTriggerPackets.cpp @@ -16,7 +16,7 @@ */ #include "AreaTriggerPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::AreaTrigger { diff --git a/src/server/game/Server/Packets/ArtifactPackets.cpp b/src/server/game/Server/Packets/ArtifactPackets.cpp index dc53b5b6774..c1e754d6922 100644 --- a/src/server/game/Server/Packets/ArtifactPackets.cpp +++ b/src/server/game/Server/Packets/ArtifactPackets.cpp @@ -16,6 +16,7 @@ */ #include "ArtifactPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Artifact { diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp index 0becd9e5f9c..f09587c30b8 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.cpp +++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp @@ -19,6 +19,7 @@ #include "AuctionHouseMgr.h" #include "DB2Stores.h" #include "ObjectGuid.h" +#include "PacketOperators.h" namespace WorldPackets::AuctionHouse { diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index 1fee24274a1..e5ab6678fd8 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -21,6 +21,7 @@ #include "Ed25519.h" #include "HMAC.h" #include "ObjectMgr.h" +#include "PacketOperators.h" #include "RSA.h" namespace WorldPackets::Auth diff --git a/src/server/game/Server/Packets/AzeritePackets.cpp b/src/server/game/Server/Packets/AzeritePackets.cpp index f048fab3a12..64f3f29939f 100644 --- a/src/server/game/Server/Packets/AzeritePackets.cpp +++ b/src/server/game/Server/Packets/AzeritePackets.cpp @@ -16,7 +16,7 @@ */ #include "AzeritePackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::Azerite { diff --git a/src/server/game/Server/Packets/BankPackets.cpp b/src/server/game/Server/Packets/BankPackets.cpp index e91b14bcca0..c30fed72584 100644 --- a/src/server/game/Server/Packets/BankPackets.cpp +++ b/src/server/game/Server/Packets/BankPackets.cpp @@ -16,6 +16,7 @@ */ #include "BankPackets.h" +#include "PacketOperators.h" void WorldPackets::Bank::AutoBankItem::Read() { diff --git a/src/server/game/Server/Packets/BattlePetPackets.cpp b/src/server/game/Server/Packets/BattlePetPackets.cpp index 3b91abb7a89..c5c2ba14bc5 100644 --- a/src/server/game/Server/Packets/BattlePetPackets.cpp +++ b/src/server/game/Server/Packets/BattlePetPackets.cpp @@ -16,6 +16,7 @@ */ #include "BattlePetPackets.h" +#include "PacketOperators.h" namespace WorldPackets::BattlePet { diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp index d81547a7f48..4317fb482ce 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.cpp +++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp @@ -16,6 +16,7 @@ */ #include "BattlegroundPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Battleground { diff --git a/src/server/game/Server/Packets/BattlenetPackets.cpp b/src/server/game/Server/Packets/BattlenetPackets.cpp index f3080ffc119..8a1ecc366db 100644 --- a/src/server/game/Server/Packets/BattlenetPackets.cpp +++ b/src/server/game/Server/Packets/BattlenetPackets.cpp @@ -16,6 +16,7 @@ */ #include "BattlenetPackets.h" +#include "PacketOperators.h" #include "PacketUtilities.h" namespace WorldPackets::Battlenet diff --git a/src/server/game/Server/Packets/BlackMarketPackets.cpp b/src/server/game/Server/Packets/BlackMarketPackets.cpp index 227f80446f6..7c8bbb0b996 100644 --- a/src/server/game/Server/Packets/BlackMarketPackets.cpp +++ b/src/server/game/Server/Packets/BlackMarketPackets.cpp @@ -16,6 +16,7 @@ */ #include "BlackMarketPackets.h" +#include "PacketOperators.h" namespace WorldPackets::BlackMarket { diff --git a/src/server/game/Server/Packets/CalendarPackets.cpp b/src/server/game/Server/Packets/CalendarPackets.cpp index c271e6e9510..de56c390a6c 100644 --- a/src/server/game/Server/Packets/CalendarPackets.cpp +++ b/src/server/game/Server/Packets/CalendarPackets.cpp @@ -16,6 +16,7 @@ */ #include "CalendarPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Calendar { diff --git a/src/server/game/Server/Packets/ChannelPackets.cpp b/src/server/game/Server/Packets/ChannelPackets.cpp index 4b6b8ffe4cc..dc7fef49dbd 100644 --- a/src/server/game/Server/Packets/ChannelPackets.cpp +++ b/src/server/game/Server/Packets/ChannelPackets.cpp @@ -18,7 +18,7 @@ #include "ChannelPackets.h" #include "Channel.h" #include "Errors.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::Channel { diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index dbc5288c58a..7935dba4cde 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -20,6 +20,7 @@ #include "DB2Stores.h" #include "Field.h" #include "ObjectMgr.h" +#include "PacketOperators.h" #include "Player.h" #include "StringConvert.h" #include "World.h" diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp index 70ae9311a60..36c2cdd018d 100644 --- a/src/server/game/Server/Packets/ChatPackets.cpp +++ b/src/server/game/Server/Packets/ChatPackets.cpp @@ -17,6 +17,7 @@ #include "ChatPackets.h" #include "Creature.h" +#include "PacketOperators.h" #include "Player.h" #include "World.h" diff --git a/src/server/game/Server/Packets/ClientConfigPackets.cpp b/src/server/game/Server/Packets/ClientConfigPackets.cpp index 9eda3e61332..dd99efb4685 100644 --- a/src/server/game/Server/Packets/ClientConfigPackets.cpp +++ b/src/server/game/Server/Packets/ClientConfigPackets.cpp @@ -16,6 +16,7 @@ */ #include "ClientConfigPackets.h" +#include "PacketOperators.h" namespace WorldPackets::ClientConfig { diff --git a/src/server/game/Server/Packets/CollectionPackets.cpp b/src/server/game/Server/Packets/CollectionPackets.cpp index 9150d9ec2ef..61b3dd04d67 100644 --- a/src/server/game/Server/Packets/CollectionPackets.cpp +++ b/src/server/game/Server/Packets/CollectionPackets.cpp @@ -16,7 +16,7 @@ */ #include "CollectionPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::Collections { diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp index 4baec163035..8135eb6d5c1 100644 --- a/src/server/game/Server/Packets/CombatLogPackets.cpp +++ b/src/server/game/Server/Packets/CombatLogPackets.cpp @@ -16,7 +16,7 @@ */ #include "CombatLogPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" #include "Spell.h" #include "UnitDefines.h" diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp index 83d229a1833..72c67e33256 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp @@ -19,6 +19,7 @@ #include "Creature.h" #include "DB2Stores.h" #include "Map.h" +#include "PacketOperators.h" #include "Player.h" #include "Spell.h" #include "SpellInfo.h" diff --git a/src/server/game/Server/Packets/CombatPackets.cpp b/src/server/game/Server/Packets/CombatPackets.cpp index d88b7c889e1..4e62ae9867a 100644 --- a/src/server/game/Server/Packets/CombatPackets.cpp +++ b/src/server/game/Server/Packets/CombatPackets.cpp @@ -16,7 +16,7 @@ */ #include "CombatPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::Combat { diff --git a/src/server/game/Server/Packets/CraftingPacketsCommon.cpp b/src/server/game/Server/Packets/CraftingPacketsCommon.cpp index 7be2b4b3b61..a8a50d36cbc 100644 --- a/src/server/game/Server/Packets/CraftingPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CraftingPacketsCommon.cpp @@ -16,6 +16,7 @@ */ #include "CraftingPacketsCommon.h" +#include "PacketOperators.h" namespace WorldPackets::Crafting { diff --git a/src/server/game/Server/Packets/DuelPackets.cpp b/src/server/game/Server/Packets/DuelPackets.cpp index 43e572cdd18..d2eeb7a31ab 100644 --- a/src/server/game/Server/Packets/DuelPackets.cpp +++ b/src/server/game/Server/Packets/DuelPackets.cpp @@ -16,7 +16,7 @@ */ #include "DuelPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::Duel { diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.cpp b/src/server/game/Server/Packets/EquipmentSetPackets.cpp index e4f8b33ca56..937d2acfc60 100644 --- a/src/server/game/Server/Packets/EquipmentSetPackets.cpp +++ b/src/server/game/Server/Packets/EquipmentSetPackets.cpp @@ -16,6 +16,7 @@ */ #include "EquipmentSetPackets.h" +#include "PacketOperators.h" namespace WorldPackets::EquipmentSet { diff --git a/src/server/game/Server/Packets/GameObjectPackets.cpp b/src/server/game/Server/Packets/GameObjectPackets.cpp index f24e4155433..491ff3929c9 100644 --- a/src/server/game/Server/Packets/GameObjectPackets.cpp +++ b/src/server/game/Server/Packets/GameObjectPackets.cpp @@ -16,7 +16,7 @@ */ #include "GameObjectPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" void WorldPackets::GameObject::GameObjUse::Read() { diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp index 4289505d153..b773a5d64c0 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.cpp +++ b/src/server/game/Server/Packets/GarrisonPackets.cpp @@ -18,6 +18,7 @@ #include "GarrisonPackets.h" #include "DB2Structure.h" #include "Errors.h" +#include "PacketOperators.h" namespace WorldPackets::Garrison { diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index 88058afa51c..06d654bef9a 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -16,6 +16,7 @@ */ #include "GuildPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Guild { diff --git a/src/server/game/Server/Packets/HotfixPackets.cpp b/src/server/game/Server/Packets/HotfixPackets.cpp index 97125c65536..ca3c0628fbf 100644 --- a/src/server/game/Server/Packets/HotfixPackets.cpp +++ b/src/server/game/Server/Packets/HotfixPackets.cpp @@ -16,6 +16,7 @@ */ #include "HotfixPackets.h" +#include "PacketOperators.h" #include "PacketUtilities.h" namespace WorldPackets::Hotfix diff --git a/src/server/game/Server/Packets/InspectPackets.cpp b/src/server/game/Server/Packets/InspectPackets.cpp index 63ce132f401..1e782426c92 100644 --- a/src/server/game/Server/Packets/InspectPackets.cpp +++ b/src/server/game/Server/Packets/InspectPackets.cpp @@ -18,6 +18,7 @@ #include "InspectPackets.h" #include "AzeriteItem.h" #include "Item.h" +#include "PacketOperators.h" #include "Player.h" namespace WorldPackets::Inspect diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp index 0de61ad6003..a1973f8a1ff 100644 --- a/src/server/game/Server/Packets/InstancePackets.cpp +++ b/src/server/game/Server/Packets/InstancePackets.cpp @@ -16,7 +16,7 @@ */ #include "InstancePackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::Instance { diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index 86f49b6433c..637b1ae8755 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -16,6 +16,7 @@ */ #include "ItemPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Item { diff --git a/src/server/game/Server/Packets/ItemPacketsCommon.cpp b/src/server/game/Server/Packets/ItemPacketsCommon.cpp index 3134436d02a..08edcc0bc0c 100644 --- a/src/server/game/Server/Packets/ItemPacketsCommon.cpp +++ b/src/server/game/Server/Packets/ItemPacketsCommon.cpp @@ -18,6 +18,7 @@ #include "ItemPacketsCommon.h" #include "Item.h" #include "Loot.h" +#include "PacketOperators.h" #include "Player.h" namespace WorldPackets::Item diff --git a/src/server/game/Server/Packets/LFGPackets.cpp b/src/server/game/Server/Packets/LFGPackets.cpp index ca1439b0c5e..b26ae5e1a53 100644 --- a/src/server/game/Server/Packets/LFGPackets.cpp +++ b/src/server/game/Server/Packets/LFGPackets.cpp @@ -16,6 +16,7 @@ */ #include "LFGPackets.h" +#include "PacketOperators.h" namespace WorldPackets::LFG { diff --git a/src/server/game/Server/Packets/LFGPacketsCommon.cpp b/src/server/game/Server/Packets/LFGPacketsCommon.cpp index d3b9774d191..df827f8a193 100644 --- a/src/server/game/Server/Packets/LFGPacketsCommon.cpp +++ b/src/server/game/Server/Packets/LFGPacketsCommon.cpp @@ -16,6 +16,7 @@ */ #include "LFGPacketsCommon.h" +#include "PacketOperators.h" namespace WorldPackets::LFG { diff --git a/src/server/game/Server/Packets/LootPackets.cpp b/src/server/game/Server/Packets/LootPackets.cpp index 8ca14a46df3..54ce4aff1d6 100644 --- a/src/server/game/Server/Packets/LootPackets.cpp +++ b/src/server/game/Server/Packets/LootPackets.cpp @@ -16,6 +16,7 @@ */ #include "LootPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Loot { diff --git a/src/server/game/Server/Packets/MailPackets.cpp b/src/server/game/Server/Packets/MailPackets.cpp index f859f2fcc53..4764e9e240a 100644 --- a/src/server/game/Server/Packets/MailPackets.cpp +++ b/src/server/game/Server/Packets/MailPackets.cpp @@ -19,6 +19,7 @@ #include "GameTime.h" #include "Item.h" #include "Mail.h" +#include "PacketOperators.h" #include "Player.h" namespace WorldPackets::Mail diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index c641abdb94f..ec5594a5396 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -16,6 +16,7 @@ */ #include "MiscPackets.h" +#include "PacketOperators.h" #include "Player.h" namespace WorldPackets::Misc diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index d706d273667..0075307b107 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -19,7 +19,7 @@ #include "MoveSpline.h" #include "MoveSplineFlag.h" #include "MovementTypedefs.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" #include "UnitDefines.h" #include "Util.h" diff --git a/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp b/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp index 738a25b61ab..d28a5022396 100644 --- a/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp +++ b/src/server/game/Server/Packets/MythicPlusPacketsCommon.cpp @@ -16,6 +16,7 @@ */ #include "MythicPlusPacketsCommon.h" +#include "PacketOperators.h" namespace WorldPackets::MythicPlus { diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index 6f6a6915a91..b05a44c5864 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -16,6 +16,7 @@ */ #include "NPCPackets.h" +#include "PacketOperators.h" namespace WorldPackets::NPC { diff --git a/src/server/game/Server/Packets/PacketOperators.h b/src/server/game/Server/Packets/PacketOperators.h new file mode 100644 index 00000000000..7c9fe489dca --- /dev/null +++ b/src/server/game/Server/Packets/PacketOperators.h @@ -0,0 +1,385 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TRINITYCORE_PACKET_OPERATORS_H +#define TRINITYCORE_PACKET_OPERATORS_H + +#include "ByteBuffer.h" +#include "Optional.h" +#include <memory> + +namespace WorldPackets +{ + namespace Strings + { + enum Utf8Mode : uint8 + { + DontValidateUtf8, + ValidUtf8 + }; + } + + template<typename T> + concept AsWritable = std::is_default_constructible_v<T> && HasByteBufferShiftOperators<T>; + + template<typename T, typename Underlying> + concept AsWritableFor = requires { static_cast<Underlying>(std::declval<T>()); } + && requires { static_cast<T>(Underlying()); }; + + template<AsWritable Underlying, AsWritableFor<Underlying> T> + struct AsWriter + { + T const& Value; + + friend inline ByteBuffer& operator<<(ByteBuffer& data, AsWriter const& opt) + { + data << static_cast<Underlying>(opt.Value); + return data; + } + }; + + template<AsWritable Underlying, AsWritableFor<Underlying> T> + struct AsReaderWriter : AsWriter<Underlying, T> + { + friend inline ByteBuffer& operator>>(ByteBuffer& data, AsReaderWriter const& opt) + { + Underlying temp; + data >> temp; + const_cast<T&>(opt.Value) = static_cast<T>(temp); + return data; + } + }; + + template<AsWritable Underlying, AsWritableFor<Underlying> T> + inline AsWriter<Underlying, T> As(T const& value) { return { value }; } + + template<AsWritable Underlying, AsWritableFor<Underlying> T> + inline AsReaderWriter<Underlying, T> As(T& value) { return { value }; } + + template<typename T> + concept OptionalWritable = std::is_default_constructible_v<T>; + + template<OptionalWritable T> + struct OptionalInitWriter + { + Optional<T> const& Opt; + + friend inline ByteBuffer& operator<<(ByteBuffer& data, OptionalInitWriter const& opt) + { + data.WriteBit(opt.Opt.has_value()); + return data; + } + }; + + template<OptionalWritable T> + struct OptionalInitReaderWriter : OptionalInitWriter<T> + { + friend inline ByteBuffer& operator>>(ByteBuffer& data, OptionalInitReaderWriter const& opt) + { + if (data.ReadBit()) + const_cast<Optional<T>&>(opt.Opt).emplace(); + return data; + } + }; + + template<OptionalWritable T> + inline OptionalInitWriter<T> OptionalInit(Optional<T> const& value) { return { value }; } + + template<OptionalWritable T> + inline OptionalInitReaderWriter<T> OptionalInit(Optional<T>& value) { return { value }; } + + template<OptionalWritable T> + struct PtrInitWriter + { + std::unique_ptr<T> const& Ptr; + + friend inline ByteBuffer& operator<<(ByteBuffer& data, PtrInitWriter const& opt) + { + data.WriteBit(opt.Ptr != nullptr); + return data; + } + }; + + template<OptionalWritable T> + struct PtrInitReaderWriter : PtrInitWriter<T> + { + friend inline ByteBuffer& operator>>(ByteBuffer& data, PtrInitReaderWriter const& opt) + { + if (data.ReadBit()) + const_cast<std::unique_ptr<T>&>(opt.Ptr) = std::make_unique<T>(); + return data; + } + }; + + template<OptionalWritable T> + inline PtrInitWriter<T> OptionalInit(std::unique_ptr<T> const& value) { return { value }; } + + template<OptionalWritable T> + inline PtrInitReaderWriter<T> OptionalInit(std::unique_ptr<T>& value) { return { value }; } + + template<typename T> + concept BitsWritable = AsWritableFor<T, uint32>; + + template<uint32 BitCount, BitsWritable T> + struct BitsWriter + { + T const& Value; + + friend inline ByteBuffer& operator<<(ByteBuffer& data, BitsWriter const& bits) + { + if constexpr (BitCount != 1) + data.WriteBits(static_cast<uint32>(bits.Value), BitCount); + else + data.WriteBit(static_cast<uint32>(bits.Value) != 0); + + return data; + } + }; + + template<uint32 BitCount, BitsWritable T> + struct BitsReaderWriter : BitsWriter<BitCount, T> + { + friend inline ByteBuffer& operator>>(ByteBuffer& data, BitsReaderWriter const& bits) + { + if constexpr (BitCount != 1) + const_cast<T&>(bits.Value) = static_cast<T>(data.ReadBits(BitCount)); + else + const_cast<T&>(bits.Value) = static_cast<T>(data.ReadBit() ? 1 : 0); + + return data; + } + }; + + template<uint32 BitCount, BitsWritable T> + inline BitsWriter<BitCount, T> Bits(T const& value) { return { value }; } + + template<uint32 BitCount, BitsWritable T> + inline BitsReaderWriter<BitCount, T> Bits(T& value) { return { value }; } + + template<typename T, typename SizeType> + concept ContainerWritable = requires(T const& container) { { container.size() } -> AsWritableFor<SizeType>; } + && !std::same_as<T, std::string_view> + && !std::same_as<T, std::string>; + + template<typename T, typename SizeType> + concept ContainerReadable = ContainerWritable<T, SizeType> + && !std::is_const_v<T> + && requires(T & container) { container.resize(SizeType{}); }; + + template<AsWritable Underlying, ContainerWritable<Underlying> 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<AsWritable Underlying, ContainerReadable<Underlying> 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<AsWritable Underlying, ContainerWritable<Underlying> Container> + inline SizeWriter<Underlying, Container> Size(Container const& value) { return { value }; } + + template<AsWritable Underlying, ContainerReadable<Underlying> Container> + inline SizeReaderWriter<Underlying, Container> Size(Container& value) { return { value }; } + + template<uint32 BitCount, ContainerWritable<uint32> Container> + struct BitsSizeWriter + { + Container const& Value; + + friend inline ByteBuffer& operator<<(ByteBuffer& data, BitsSizeWriter const& bits) + { + data.WriteBits(static_cast<uint32>(bits.Value.size()), BitCount); + return data; + } + }; + + template<uint32 BitCount, ContainerReadable<uint32> Container> + struct BitsSizeReaderWriter : BitsSizeWriter<BitCount, Container> + { + friend inline ByteBuffer& operator>>(ByteBuffer& data, BitsSizeReaderWriter const& bits) + { + const_cast<Container&>(bits.Value).resize(data.ReadBits(BitCount)); + return data; + } + }; + + template<uint32 BitCount, ContainerWritable<uint32> Container> + inline BitsSizeWriter<BitCount, Container> BitsSize(Container const& value) { return { value }; } + + template<uint32 BitCount, ContainerReadable<uint32> Container> + inline BitsSizeReaderWriter<BitCount, Container> BitsSize(Container& value) { return { value }; } + + template<typename T> + concept StringWritable = requires(T const& container) { { container.length() } -> AsWritableFor<uint32>; } + && requires(ByteBuffer& data, T const& string) { data.WriteString(static_cast<std::string_view>(string)); /*TODO: Kill String class and remove the cast*/ }; + + template<typename T> + concept StringReadable = StringWritable<T> + && !std::is_const_v<T> + && !std::same_as<T, std::string_view> + && requires(T& container) { container.resize(uint32()); } + && requires(ByteBuffer& data, T& string) { string = data.ReadString(uint32(), bool()); }; + + namespace SizedString + { + template<uint32 BitCount, StringWritable Container> + struct SizeWriter + { + Container const& Value; + + friend inline ByteBuffer& operator<<(ByteBuffer& data, SizeWriter const& bits) + { + data.WriteBits(static_cast<uint32>(bits.Value.length()), BitCount); + return data; + } + }; + + template<uint32 BitCount, StringReadable Container> + struct SizeReaderWriter : SizeWriter<BitCount, Container> + { + friend inline ByteBuffer& operator>>(ByteBuffer& data, SizeReaderWriter const& bits) + { + const_cast<Container&>(bits.Value).resize(data.ReadBits(BitCount)); + return data; + } + }; + + template<uint32 BitCount, StringWritable Container> + inline SizeWriter<BitCount, Container> BitsSize(Container const& value) { return { value }; } + + template<uint32 BitCount, StringReadable Container> + inline SizeReaderWriter<BitCount, Container> BitsSize(Container& value) { return { value }; } + + template<StringWritable Container> + struct DataWriter + { + Container const& Value; + + friend inline ByteBuffer& operator<<(ByteBuffer& data, DataWriter const& string) + { + data.WriteString(string.Value); + return data; + } + }; + + template<StringReadable Container, Strings::Utf8Mode Mode> + struct DataReaderWriter : DataWriter<Container> + { + static constexpr bool IsUtf8() { return Mode == Strings::ValidUtf8; } + + friend inline ByteBuffer& operator>>(ByteBuffer& data, DataReaderWriter const& string) + { + const_cast<Container&>(string.Value) = data.ReadString(string.Value.length(), IsUtf8()); + return data; + } + }; + + template<Strings::Utf8Mode = Strings::ValidUtf8, StringWritable Container> + inline DataWriter<Container> Data(Container const& value) { return { value }; } + + template<Strings::Utf8Mode Mode = Strings::ValidUtf8, StringReadable Container> + inline DataReaderWriter<Container, Mode> Data(Container& value) { return { value }; } + } + + // SizedCString (sends size + string + null terminator but only if not empty) + namespace SizedCString + { + template<uint32 BitCount, StringWritable Container> + struct SizeWriter + { + Container const& Value; + + friend inline ByteBuffer& operator<<(ByteBuffer& data, SizeWriter const& bits) + { + data.WriteBits(static_cast<uint32>(bits.Value.length() + 1), BitCount); + return data; + } + }; + + template<uint32 BitCount, StringReadable Container> + struct SizeReaderWriter : SizeWriter<BitCount, Container> + { + friend inline ByteBuffer& operator>>(ByteBuffer& data, SizeReaderWriter const& bits) + { + if (uint32 bytesIncludingNullTerminator = data.ReadBits(BitCount); bytesIncludingNullTerminator > 1) + const_cast<Container&>(bits.Value).resize(bytesIncludingNullTerminator - 1); + return data; + } + }; + + template<uint32 BitCount, StringWritable Container> + inline SizeWriter<BitCount, Container> BitsSize(Container const& value) { return { value }; } + + template<uint32 BitCount, StringReadable Container> + inline SizeReaderWriter<BitCount, Container> BitsSize(Container& value) { return { value }; } + + template<StringWritable Container> + struct DataWriter + { + Container const& Value; + + friend inline ByteBuffer& operator<<(ByteBuffer& data, DataWriter const& string) + { + if (!string.Value.empty()) + { + data.WriteString(string.Value); + data << char('\0'); + } + return data; + } + }; + + template<StringReadable Container, Strings::Utf8Mode Mode> + struct DataReaderWriter : DataWriter<Container> + { + static constexpr bool IsUtf8() { return Mode == Strings::ValidUtf8; } + + friend inline ByteBuffer& operator>>(ByteBuffer& data, DataReaderWriter const& string) + { + if (!string.Value.empty()) + { + const_cast<Container&>(string.Value) = data.ReadString(string.Value.length(), IsUtf8()); + (void)data.read<char>(); // null terminator + } + return data; + } + }; + + template<Strings::Utf8Mode = Strings::ValidUtf8, StringWritable Container> + inline DataWriter<Container> Data(Container const& value) { return { value }; } + + template<Strings::Utf8Mode Mode = Strings::ValidUtf8, StringReadable Container> + inline DataReaderWriter<Container, Mode> Data(Container& value) { return { value }; } + } +} + +#endif // TRINITYCORE_PACKET_OPERATORS_H diff --git a/src/server/game/Server/Packets/PacketUtilities.h b/src/server/game/Server/Packets/PacketUtilities.h index c7b859ecd65..f456090c018 100644 --- a/src/server/game/Server/Packets/PacketUtilities.h +++ b/src/server/game/Server/Packets/PacketUtilities.h @@ -20,10 +20,8 @@ #include "ByteBuffer.h" #include "Duration.h" -#include "Optional.h" #include "Tuples.h" #include <short_alloc/short_alloc.h> -#include <memory> #include <string_view> #include <ctime> @@ -60,12 +58,6 @@ namespace WorldPackets namespace Strings { - enum Utf8Mode : uint8 - { - DontValidateUtf8, - ValidUtf8 - }; - struct RawBytes { static bool Validate(std::string_view /*value*/) { return true; } }; template<std::size_t MaxBytesWithoutNullTerminator> struct ByteSize { static bool Validate(std::string_view value) { return value.size() <= MaxBytesWithoutNullTerminator; } }; @@ -344,354 +336,6 @@ namespace WorldPackets private: ChronoDuration _value = ChronoDuration::zero(); }; - - template<typename T> - concept AsWritable = std::is_default_constructible_v<T> && HasByteBufferShiftOperators<T>; - - template<typename T, typename Underlying> - concept AsWritableFor = requires { static_cast<Underlying>(std::declval<T>()); } - && requires { static_cast<T>(Underlying()); }; - - template<AsWritable Underlying, AsWritableFor<Underlying> T> - struct AsWriter - { - T const& Value; - - friend inline ByteBuffer& operator<<(ByteBuffer& data, AsWriter const& opt) - { - data << static_cast<Underlying>(opt.Value); - return data; - } - }; - - template<AsWritable Underlying, AsWritableFor<Underlying> T> - struct AsReaderWriter : AsWriter<Underlying, T> - { - friend inline ByteBuffer& operator>>(ByteBuffer& data, AsReaderWriter const& opt) - { - Underlying temp; - data >> temp; - const_cast<T&>(opt.Value) = static_cast<T>(temp); - return data; - } - }; - - template<AsWritable Underlying, AsWritableFor<Underlying> T> - inline AsWriter<Underlying, T> As(T const& value) { return { value }; } - - template<AsWritable Underlying, AsWritableFor<Underlying> T> - inline AsReaderWriter<Underlying, T> As(T& value) { return { value }; } - - template<typename T> - concept OptionalWritable = std::is_default_constructible_v<T>; - - template<OptionalWritable T> - struct OptionalInitWriter - { - Optional<T> const& Opt; - - friend inline ByteBuffer& operator<<(ByteBuffer& data, OptionalInitWriter const& opt) - { - data.WriteBit(opt.Opt.has_value()); - return data; - } - }; - - template<OptionalWritable T> - struct OptionalInitReaderWriter : OptionalInitWriter<T> - { - friend inline ByteBuffer& operator>>(ByteBuffer& data, OptionalInitReaderWriter const& opt) - { - if (data.ReadBit()) - const_cast<Optional<T>&>(opt.Opt).emplace(); - return data; - } - }; - - template<OptionalWritable T> - inline OptionalInitWriter<T> OptionalInit(Optional<T> const& value) { return { value }; } - - template<OptionalWritable T> - inline OptionalInitReaderWriter<T> OptionalInit(Optional<T>& value) { return { value }; } - - template<OptionalWritable T> - struct PtrInitWriter - { - std::unique_ptr<T> const& Ptr; - - friend inline ByteBuffer& operator<<(ByteBuffer& data, PtrInitWriter const& opt) - { - data.WriteBit(opt.Ptr != nullptr); - return data; - } - }; - - template<OptionalWritable T> - struct PtrInitReaderWriter : PtrInitWriter<T> - { - friend inline ByteBuffer& operator>>(ByteBuffer& data, PtrInitReaderWriter const& opt) - { - if (data.ReadBit()) - const_cast<std::unique_ptr<T>&>(opt.Ptr) = std::make_unique<T>(); - return data; - } - }; - - template<OptionalWritable T> - inline PtrInitWriter<T> OptionalInit(std::unique_ptr<T> const& value) { return { value }; } - - template<OptionalWritable T> - inline PtrInitReaderWriter<T> OptionalInit(std::unique_ptr<T>& value) { return { value }; } - - template<typename T> - concept BitsWritable = AsWritableFor<T, uint32>; - - template<uint32 BitCount, BitsWritable T> - struct BitsWriter - { - T const& Value; - - friend inline ByteBuffer& operator<<(ByteBuffer& data, BitsWriter const& bits) - { - if constexpr (BitCount != 1) - data.WriteBits(static_cast<uint32>(bits.Value), BitCount); - else - data.WriteBit(static_cast<uint32>(bits.Value) != 0); - - return data; - } - }; - - template<uint32 BitCount, BitsWritable T> - struct BitsReaderWriter : BitsWriter<BitCount, T> - { - friend inline ByteBuffer& operator>>(ByteBuffer& data, BitsReaderWriter const& bits) - { - if constexpr (BitCount != 1) - const_cast<T&>(bits.Value) = static_cast<T>(data.ReadBits(BitCount)); - else - const_cast<T&>(bits.Value) = static_cast<T>(data.ReadBit() ? 1 : 0); - - return data; - } - }; - - template<uint32 BitCount, BitsWritable T> - inline BitsWriter<BitCount, T> Bits(T const& value) { return { value }; } - - template<uint32 BitCount, BitsWritable T> - inline BitsReaderWriter<BitCount, T> Bits(T& value) { return { value }; } - - template<typename T, typename SizeType> - concept ContainerWritable = requires(T const& container) { { container.size() } -> AsWritableFor<SizeType>; } - && !std::same_as<T, std::string_view> - && !std::same_as<T, std::string>; - - template<typename T, typename SizeType> - concept ContainerReadable = ContainerWritable<T, SizeType> - && !std::is_const_v<T> - && requires(T & container) { container.resize(SizeType{}); }; - - template<AsWritable Underlying, ContainerWritable<Underlying> 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<AsWritable Underlying, ContainerReadable<Underlying> 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<AsWritable Underlying, ContainerWritable<Underlying> Container> - inline SizeWriter<Underlying, Container> Size(Container const& value) { return { value }; } - - template<AsWritable Underlying, ContainerReadable<Underlying> Container> - inline SizeReaderWriter<Underlying, Container> Size(Container& value) { return { value }; } - - template<uint32 BitCount, ContainerWritable<uint32> Container> - struct BitsSizeWriter - { - Container const& Value; - - friend inline ByteBuffer& operator<<(ByteBuffer& data, BitsSizeWriter const& bits) - { - data.WriteBits(static_cast<uint32>(bits.Value.size()), BitCount); - return data; - } - }; - - template<uint32 BitCount, ContainerReadable<uint32> Container> - struct BitsSizeReaderWriter : BitsSizeWriter<BitCount, Container> - { - friend inline ByteBuffer& operator>>(ByteBuffer& data, BitsSizeReaderWriter const& bits) - { - const_cast<Container&>(bits.Value).resize(data.ReadBits(BitCount)); - return data; - } - }; - - template<uint32 BitCount, ContainerWritable<uint32> Container> - inline BitsSizeWriter<BitCount, Container> BitsSize(Container const& value) { return { value }; } - - template<uint32 BitCount, ContainerReadable<uint32> Container> - inline BitsSizeReaderWriter<BitCount, Container> BitsSize(Container& value) { return { value }; } - - template<typename T> - concept StringWritable = requires(T const& container) { { container.length() } -> AsWritableFor<uint32>; } - && requires(ByteBuffer& data, T const& string) { data.WriteString(static_cast<std::string_view>(string)); /*TODO: Kill String class and remove the cast*/ }; - - template<typename T> - concept StringReadable = StringWritable<T> - && !std::is_const_v<T> - && !std::same_as<T, std::string_view> - && requires(T& container) { container.resize(uint32()); } - && requires(ByteBuffer& data, T& string) { string = data.ReadString(uint32(), bool()); }; - - namespace SizedString - { - template<uint32 BitCount, StringWritable Container> - struct SizeWriter - { - Container const& Value; - - friend inline ByteBuffer& operator<<(ByteBuffer& data, SizeWriter const& bits) - { - data.WriteBits(static_cast<uint32>(bits.Value.length()), BitCount); - return data; - } - }; - - template<uint32 BitCount, StringReadable Container> - struct SizeReaderWriter : SizeWriter<BitCount, Container> - { - friend inline ByteBuffer& operator>>(ByteBuffer& data, SizeReaderWriter const& bits) - { - const_cast<Container&>(bits.Value).resize(data.ReadBits(BitCount)); - return data; - } - }; - - template<uint32 BitCount, StringWritable Container> - inline SizeWriter<BitCount, Container> BitsSize(Container const& value) { return { value }; } - - template<uint32 BitCount, StringReadable Container> - inline SizeReaderWriter<BitCount, Container> BitsSize(Container& value) { return { value }; } - - template<StringWritable Container> - struct DataWriter - { - Container const& Value; - - friend inline ByteBuffer& operator<<(ByteBuffer& data, DataWriter const& string) - { - data.WriteString(string.Value); - return data; - } - }; - - template<StringReadable Container, Strings::Utf8Mode Mode> - struct DataReaderWriter : DataWriter<Container> - { - static constexpr bool IsUtf8() { return Mode == Strings::ValidUtf8; } - - friend inline ByteBuffer& operator>>(ByteBuffer& data, DataReaderWriter const& string) - { - const_cast<Container&>(string.Value) = data.ReadString(string.Value.length(), IsUtf8()); - return data; - } - }; - - template<Strings::Utf8Mode = Strings::ValidUtf8, StringWritable Container> - inline DataWriter<Container> Data(Container const& value) { return { value }; } - - template<Strings::Utf8Mode Mode = Strings::ValidUtf8, StringReadable Container> - inline DataReaderWriter<Container, Mode> Data(Container& value) { return { value }; } - } - - // SizedCString (sends size + string + null terminator but only if not empty) - namespace SizedCString - { - template<uint32 BitCount, StringWritable Container> - struct SizeWriter - { - Container const& Value; - - friend inline ByteBuffer& operator<<(ByteBuffer& data, SizeWriter const& bits) - { - data.WriteBits(static_cast<uint32>(bits.Value.length() + 1), BitCount); - return data; - } - }; - - template<uint32 BitCount, StringReadable Container> - struct SizeReaderWriter : SizeWriter<BitCount, Container> - { - friend inline ByteBuffer& operator>>(ByteBuffer& data, SizeReaderWriter const& bits) - { - if (uint32 bytesIncludingNullTerminator = data.ReadBits(BitCount); bytesIncludingNullTerminator > 1) - const_cast<Container&>(bits.Value).resize(bytesIncludingNullTerminator - 1); - return data; - } - }; - - template<uint32 BitCount, StringWritable Container> - inline SizeWriter<BitCount, Container> BitsSize(Container const& value) { return { value }; } - - template<uint32 BitCount, StringReadable Container> - inline SizeReaderWriter<BitCount, Container> BitsSize(Container& value) { return { value }; } - - template<StringWritable Container> - struct DataWriter - { - Container const& Value; - - friend inline ByteBuffer& operator<<(ByteBuffer& data, DataWriter const& string) - { - if (!string.Value.empty()) - { - data.WriteString(string.Value); - data << char('\0'); - } - return data; - } - }; - - template<StringReadable Container, Strings::Utf8Mode Mode> - struct DataReaderWriter : DataWriter<Container> - { - static constexpr bool IsUtf8() { return Mode == Strings::ValidUtf8; } - - friend inline ByteBuffer& operator>>(ByteBuffer& data, DataReaderWriter const& string) - { - if (!string.Value.empty()) - { - const_cast<Container&>(string.Value) = data.ReadString(string.Value.length(), IsUtf8()); - (void)data.read<char>(); // null terminator - } - return data; - } - }; - - template<Strings::Utf8Mode = Strings::ValidUtf8, StringWritable Container> - inline DataWriter<Container> Data(Container const& value) { return { value }; } - - template<Strings::Utf8Mode Mode = Strings::ValidUtf8, StringReadable Container> - inline DataReaderWriter<Container, Mode> Data(Container& value) { return { value }; } - } } #endif // TRINITYCORE_PACKET_UTILITIES_H diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp index caaa6a3309a..496426b2a58 100644 --- a/src/server/game/Server/Packets/PartyPackets.cpp +++ b/src/server/game/Server/Packets/PartyPackets.cpp @@ -17,6 +17,7 @@ #include "PartyPackets.h" #include "Group.h" +#include "PacketOperators.h" #include "Pet.h" #include "PhasingHandler.h" #include "Player.h" diff --git a/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp b/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp index ced2d878efa..8c1a3db6317 100644 --- a/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp +++ b/src/server/game/Server/Packets/PerksProgramPacketsCommon.cpp @@ -16,6 +16,7 @@ */ #include "PerksProgramPacketsCommon.h" +#include "PacketOperators.h" namespace WorldPackets::PerksProgram { diff --git a/src/server/game/Server/Packets/PetPackets.cpp b/src/server/game/Server/Packets/PetPackets.cpp index ccd5edc8ded..9aede562bdc 100644 --- a/src/server/game/Server/Packets/PetPackets.cpp +++ b/src/server/game/Server/Packets/PetPackets.cpp @@ -16,7 +16,7 @@ */ #include "PetPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::Pet { diff --git a/src/server/game/Server/Packets/PetitionPackets.cpp b/src/server/game/Server/Packets/PetitionPackets.cpp index 794fc9264a3..59f9596828f 100644 --- a/src/server/game/Server/Packets/PetitionPackets.cpp +++ b/src/server/game/Server/Packets/PetitionPackets.cpp @@ -16,7 +16,7 @@ */ #include "PetitionPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::Petition { diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp index f34eb0ee001..8f0b6314c6f 100644 --- a/src/server/game/Server/Packets/QueryPackets.cpp +++ b/src/server/game/Server/Packets/QueryPackets.cpp @@ -20,6 +20,7 @@ #include "CharacterCache.h" #include "ClubUtils.h" #include "ObjectMgr.h" +#include "PacketOperators.h" #include "Player.h" #include "World.h" diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index 444dd65a6b5..016efd60f97 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -16,6 +16,7 @@ */ #include "QuestPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Quest { diff --git a/src/server/game/Server/Packets/ReferAFriendPackets.cpp b/src/server/game/Server/Packets/ReferAFriendPackets.cpp index 08f6bf36568..d5b2ca29f16 100644 --- a/src/server/game/Server/Packets/ReferAFriendPackets.cpp +++ b/src/server/game/Server/Packets/ReferAFriendPackets.cpp @@ -16,7 +16,7 @@ */ #include "ReferAFriendPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::RaF { diff --git a/src/server/game/Server/Packets/ReputationPackets.cpp b/src/server/game/Server/Packets/ReputationPackets.cpp index 0eb8411f17c..4f1f31c2ae8 100644 --- a/src/server/game/Server/Packets/ReputationPackets.cpp +++ b/src/server/game/Server/Packets/ReputationPackets.cpp @@ -16,7 +16,7 @@ */ #include "ReputationPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::Reputation { diff --git a/src/server/game/Server/Packets/ScenarioPackets.cpp b/src/server/game/Server/Packets/ScenarioPackets.cpp index 47ffbe95696..62268a909dd 100644 --- a/src/server/game/Server/Packets/ScenarioPackets.cpp +++ b/src/server/game/Server/Packets/ScenarioPackets.cpp @@ -16,6 +16,7 @@ */ #include "ScenarioPackets.h" +#include "PacketOperators.h" #include "ScenarioMgr.h" namespace WorldPackets::Scenario diff --git a/src/server/game/Server/Packets/ScenePackets.cpp b/src/server/game/Server/Packets/ScenePackets.cpp index 5076031a8ac..ee77b3c3b81 100644 --- a/src/server/game/Server/Packets/ScenePackets.cpp +++ b/src/server/game/Server/Packets/ScenePackets.cpp @@ -16,7 +16,7 @@ */ #include "ScenePackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::Scenes { diff --git a/src/server/game/Server/Packets/SocialPackets.cpp b/src/server/game/Server/Packets/SocialPackets.cpp index a2f3c6eebe9..beda98d31e4 100644 --- a/src/server/game/Server/Packets/SocialPackets.cpp +++ b/src/server/game/Server/Packets/SocialPackets.cpp @@ -16,7 +16,7 @@ */ #include "SocialPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::Social { diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index b3580eeff70..dede486e2a6 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -18,6 +18,7 @@ #include "SpellPackets.h" #include "CharacterPackets.h" #include "MovementPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Spells { diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index 651ce1ae4cd..5bf9641f793 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -16,6 +16,7 @@ */ #include "SystemPackets.h" +#include "PacketOperators.h" namespace WorldPackets::System { diff --git a/src/server/game/Server/Packets/TalentPackets.cpp b/src/server/game/Server/Packets/TalentPackets.cpp index 39368fd5789..6fd35cc00c0 100644 --- a/src/server/game/Server/Packets/TalentPackets.cpp +++ b/src/server/game/Server/Packets/TalentPackets.cpp @@ -16,6 +16,7 @@ */ #include "TalentPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Talent { diff --git a/src/server/game/Server/Packets/TaxiPackets.cpp b/src/server/game/Server/Packets/TaxiPackets.cpp index 95b02065aa9..a2220de80cf 100644 --- a/src/server/game/Server/Packets/TaxiPackets.cpp +++ b/src/server/game/Server/Packets/TaxiPackets.cpp @@ -16,7 +16,7 @@ */ #include "TaxiPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::Taxi { diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp index 0f993b354f0..259141c5848 100644 --- a/src/server/game/Server/Packets/TicketPackets.cpp +++ b/src/server/game/Server/Packets/TicketPackets.cpp @@ -16,7 +16,7 @@ */ #include "TicketPackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" #include "SupportMgr.h" namespace WorldPackets::Ticket diff --git a/src/server/game/Server/Packets/TokenPackets.cpp b/src/server/game/Server/Packets/TokenPackets.cpp index 126af73ba3d..374c6e0548e 100644 --- a/src/server/game/Server/Packets/TokenPackets.cpp +++ b/src/server/game/Server/Packets/TokenPackets.cpp @@ -16,6 +16,7 @@ */ #include "TokenPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Token { diff --git a/src/server/game/Server/Packets/TotemPackets.cpp b/src/server/game/Server/Packets/TotemPackets.cpp index 441d0aa97a7..b08bdf73f45 100644 --- a/src/server/game/Server/Packets/TotemPackets.cpp +++ b/src/server/game/Server/Packets/TotemPackets.cpp @@ -16,6 +16,7 @@ */ #include "TotemPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Totem { diff --git a/src/server/game/Server/Packets/ToyPackets.cpp b/src/server/game/Server/Packets/ToyPackets.cpp index 53d9a0e8e78..94921b1f291 100644 --- a/src/server/game/Server/Packets/ToyPackets.cpp +++ b/src/server/game/Server/Packets/ToyPackets.cpp @@ -16,6 +16,7 @@ */ #include "ToyPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Toy { diff --git a/src/server/game/Server/Packets/TradePackets.cpp b/src/server/game/Server/Packets/TradePackets.cpp index 09ecb19cadf..73e4aba8697 100644 --- a/src/server/game/Server/Packets/TradePackets.cpp +++ b/src/server/game/Server/Packets/TradePackets.cpp @@ -16,6 +16,7 @@ */ #include "TradePackets.h" +#include "PacketOperators.h" namespace WorldPackets::Trade { diff --git a/src/server/game/Server/Packets/TraitPackets.cpp b/src/server/game/Server/Packets/TraitPackets.cpp index f67b5e54e4a..0edd87395f0 100644 --- a/src/server/game/Server/Packets/TraitPackets.cpp +++ b/src/server/game/Server/Packets/TraitPackets.cpp @@ -16,6 +16,7 @@ */ #include "TraitPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Traits { diff --git a/src/server/game/Server/Packets/TraitPacketsCommon.cpp b/src/server/game/Server/Packets/TraitPacketsCommon.cpp index 3b871552f2e..704d6bc6bf8 100644 --- a/src/server/game/Server/Packets/TraitPacketsCommon.cpp +++ b/src/server/game/Server/Packets/TraitPacketsCommon.cpp @@ -17,6 +17,7 @@ #include "TraitPacketsCommon.h" #include "DBCEnums.h" +#include "PacketOperators.h" #include "UpdateFields.h" namespace WorldPackets::Traits diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.cpp b/src/server/game/Server/Packets/TransmogrificationPackets.cpp index f6c34569bb5..68b5c6632a2 100644 --- a/src/server/game/Server/Packets/TransmogrificationPackets.cpp +++ b/src/server/game/Server/Packets/TransmogrificationPackets.cpp @@ -16,6 +16,7 @@ */ #include "TransmogrificationPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Transmogrification { diff --git a/src/server/game/Server/Packets/VignettePackets.cpp b/src/server/game/Server/Packets/VignettePackets.cpp index b9c10780fd3..c7e536028b6 100644 --- a/src/server/game/Server/Packets/VignettePackets.cpp +++ b/src/server/game/Server/Packets/VignettePackets.cpp @@ -16,7 +16,7 @@ */ #include "VignettePackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::Vignette { diff --git a/src/server/game/Server/Packets/VoidStoragePackets.cpp b/src/server/game/Server/Packets/VoidStoragePackets.cpp index 21cabf9a678..0b7cef0f6be 100644 --- a/src/server/game/Server/Packets/VoidStoragePackets.cpp +++ b/src/server/game/Server/Packets/VoidStoragePackets.cpp @@ -16,6 +16,7 @@ */ #include "VoidStoragePackets.h" +#include "PacketOperators.h" namespace WorldPackets::VoidStorage { diff --git a/src/server/game/Server/Packets/WhoPackets.cpp b/src/server/game/Server/Packets/WhoPackets.cpp index 5126482fe24..04bf792055d 100644 --- a/src/server/game/Server/Packets/WhoPackets.cpp +++ b/src/server/game/Server/Packets/WhoPackets.cpp @@ -16,6 +16,7 @@ */ #include "WhoPackets.h" +#include "PacketOperators.h" namespace WorldPackets::Who { diff --git a/src/server/game/Server/Packets/WorldStatePackets.cpp b/src/server/game/Server/Packets/WorldStatePackets.cpp index 801e273a9fd..f085e52e5ef 100644 --- a/src/server/game/Server/Packets/WorldStatePackets.cpp +++ b/src/server/game/Server/Packets/WorldStatePackets.cpp @@ -16,7 +16,7 @@ */ #include "WorldStatePackets.h" -#include "PacketUtilities.h" +#include "PacketOperators.h" namespace WorldPackets::WorldState { |