aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server/Packets
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-03-09 00:54:27 +0100
committerShauren <shauren.trinity@gmail.com>2024-03-09 00:54:27 +0100
commitfccf6fb72b60b08dfbe6d5fb17fba55239944fca (patch)
treed34819afa3813592e60825b1f0d88e1262496dd1 /src/server/game/Server/Packets
parent1439535c6ac2ca8db13990e4fee29d4c1312f87a (diff)
Core/Objects: Implemented vignettes
Diffstat (limited to 'src/server/game/Server/Packets')
-rw-r--r--src/server/game/Server/Packets/VignettePackets.cpp59
-rw-r--r--src/server/game/Server/Packets/VignettePackets.h58
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