TrinityCore
AreaTriggerPackets.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include "AreaTriggerPackets.h"
19
21{
22 data << uint32(areaTriggerSpline.TimeToTarget);
23 data << uint32(areaTriggerSpline.ElapsedTimeForMovement);
24
25 data.WriteBits(areaTriggerSpline.Points.size(), 16);
26 data.FlushBits();
27
28 for (TaggedPosition<Position::XYZ> const& point : areaTriggerSpline.Points)
29 data << point;
30
31 return data;
32}
33
34ByteBuffer& operator<<(ByteBuffer& data, AreaTriggerOrbitInfo const& areaTriggerCircularMovement)
35{
36 data.WriteBit(areaTriggerCircularMovement.PathTarget.has_value());
37 data.WriteBit(areaTriggerCircularMovement.Center.has_value());
38 data.WriteBit(areaTriggerCircularMovement.CounterClockwise);
39 data.WriteBit(areaTriggerCircularMovement.CanLoop);
40
41 data << uint32(areaTriggerCircularMovement.TimeToTarget);
42 data << int32(areaTriggerCircularMovement.ElapsedTimeForMovement);
43 data << uint32(areaTriggerCircularMovement.StartDelay);
44 data << float(areaTriggerCircularMovement.Radius);
45 data << float(areaTriggerCircularMovement.BlendFromRadius);
46 data << float(areaTriggerCircularMovement.InitialAngle);
47 data << float(areaTriggerCircularMovement.ZOffset);
48
49 if (areaTriggerCircularMovement.PathTarget)
50 data << *areaTriggerCircularMovement.PathTarget;
51
52 if (areaTriggerCircularMovement.Center)
53 data << *areaTriggerCircularMovement.Center;
54
55 return data;
56}
57
59{
60 data << int32(areaTriggerMovementScript.SpellScriptID);
61 data << areaTriggerMovementScript.Center;
62
63 return data;
64}
65
67{
71}
72
74{
75 _worldPacket << int32(AreaTriggerID);
76 _worldPacket.WriteBit(Entered);
77 _worldPacket.FlushBits();
78
79 return &_worldPacket;
80}
81
83{
84 _worldPacket << TriggerGUID;
85
86 _worldPacket.WriteBit(AreaTriggerSpline.has_value());
87 _worldPacket.WriteBit(AreaTriggerOrbit.has_value());
88 _worldPacket.WriteBit(AreaTriggerMovementScript.has_value());
89 _worldPacket.FlushBits();
90
91 if (AreaTriggerSpline)
92 _worldPacket << *AreaTriggerSpline;
93
94 if (AreaTriggerMovementScript)
95 _worldPacket << *AreaTriggerMovementScript;
96
97 if (AreaTriggerOrbit)
98 _worldPacket << *AreaTriggerOrbit;
99
100 return &_worldPacket;
101}
ByteBuffer & operator<<(ByteBuffer &data, WorldPackets::AreaTrigger::AreaTriggerSplineInfo const &areaTriggerSpline)
int32_t int32
Definition: Define.h:138
uint32_t uint32
Definition: Define.h:142
bool WriteBit(bool bit)
Definition: ByteBuffer.h:175
void WriteBits(std::size_t value, int32 bits)
Definition: ByteBuffer.h:203
void FlushBits()
Definition: ByteBuffer.h:155
bool ReadBit()
Definition: ByteBuffer.h:191
WorldPacket _worldPacket
Definition: Packet.h:43
Optional< TaggedPosition< Position::XYZ > > Center
Optional< ObjectGuid > PathTarget
std::vector< TaggedPosition< Position::XYZ > > Points