diff options
| author | Shauren <shauren.trinity@gmail.com> | 2024-03-09 00:54:27 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2024-03-09 00:54:27 +0100 |
| commit | fccf6fb72b60b08dfbe6d5fb17fba55239944fca (patch) | |
| tree | d34819afa3813592e60825b1f0d88e1262496dd1 /src/server/game/Server/Packets | |
| parent | 1439535c6ac2ca8db13990e4fee29d4c1312f87a (diff) | |
Core/Objects: Implemented vignettes
Diffstat (limited to 'src/server/game/Server/Packets')
| -rw-r--r-- | src/server/game/Server/Packets/VignettePackets.cpp | 59 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/VignettePackets.h | 58 |
2 files changed, 117 insertions, 0 deletions
diff --git a/src/server/game/Server/Packets/VignettePackets.cpp b/src/server/game/Server/Packets/VignettePackets.cpp new file mode 100644 index 00000000000..10ca888ccbc --- /dev/null +++ b/src/server/game/Server/Packets/VignettePackets.cpp @@ -0,0 +1,59 @@ +/* + * 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/>. + */ + +#include "VignettePackets.h" + +namespace WorldPackets::Vignette +{ +ByteBuffer& operator<<(ByteBuffer& data, VignetteData const& vignetteData) +{ + data << vignetteData.Position; + data << vignetteData.ObjGUID; + data << int32(vignetteData.VignetteID); + data << uint32(vignetteData.ZoneID); + data << uint32(vignetteData.WMOGroupID); + data << uint32(vignetteData.WMODoodadPlacementID); + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, VignetteDataSet const& vignetteDataSet) +{ + data << uint32(vignetteDataSet.IDs.size()); + data << uint32(vignetteDataSet.Data.size()); + for (ObjectGuid const& id : vignetteDataSet.IDs) + data << id; + + for (VignetteData const& vignetteData : vignetteDataSet.Data) + data << vignetteData; + + return data; +} + +WorldPacket const* VignetteUpdate::Write() +{ + _worldPacket.WriteBit(ForceUpdate); + _worldPacket.WriteBit(InFogOfWar); + _worldPacket << uint32(Removed.size()); + _worldPacket << Added; + _worldPacket << Updated; + for (ObjectGuid const& removed : Removed) + _worldPacket << removed; + + return &_worldPacket; +} +} diff --git a/src/server/game/Server/Packets/VignettePackets.h b/src/server/game/Server/Packets/VignettePackets.h new file mode 100644 index 00000000000..c96f68262df --- /dev/null +++ b/src/server/game/Server/Packets/VignettePackets.h @@ -0,0 +1,58 @@ +/* + * 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_VIGNETTE_PACKETS_H +#define TRINITYCORE_VIGNETTE_PACKETS_H + +#include "ObjectGuid.h" +#include "Packet.h" +#include "Position.h" + +namespace WorldPackets::Vignette +{ +struct VignetteData +{ + ObjectGuid ObjGUID; + TaggedPosition<Position::XYZ> Position; + int32 VignetteID = 0; + uint32 ZoneID = 0; + uint32 WMOGroupID = 0; + uint32 WMODoodadPlacementID = 0; +}; + +struct VignetteDataSet +{ + std::vector<ObjectGuid> IDs; + std::vector<VignetteData> Data; +}; + +class VignetteUpdate final : public ServerPacket +{ +public: + VignetteUpdate() : ServerPacket(SMSG_VIGNETTE_UPDATE, 200) { } + + WorldPacket const* Write() override; + + VignetteDataSet Added; + VignetteDataSet Updated; + std::vector<ObjectGuid> Removed; + bool ForceUpdate = false; + bool InFogOfWar = false; +}; +} + +#endif // TRINITYCORE_VIGNETTE_PACKETS_H |
