TrinityCore
Loading...
Searching...
No Matches
BattlegroundPackets.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 "BattlegroundPackets.h"
19#include "Battleground.h"
20
25
27{
28 _worldPacket >> HealerGuid;
29}
30
32{
33 _worldPacket << HealerGuid;
34 _worldPacket << int32(TimeLeft);
35
36 return &_worldPacket;
37}
38
40{
41 for (std::size_t i = 0; i < 2; ++i)
42 {
43 data << int32(ratingData.Prematch[i]);
44 data << int32(ratingData.Postmatch[i]);
45 data << int32(ratingData.PrematchMMR[i]);
46 }
47 return data;
48}
49
51{
52 data << arena.Ratings;
53 for (std::string_view const& teamName : arena.TeamName)
54 data << teamName;
55
56 return data;
57}
58
60{
61 data << uint32(honorData.HonorKills);
62 data << uint32(honorData.Deaths);
63 data << uint32(honorData.ContributionPoints);
64 return data;
65}
66
68{
69 data << playerData.PlayerGUID;
70 data << uint32(playerData.Kills);
71 std::visit([&](auto const& v) { return data << v; }, playerData.HonorOrFaction);
72 data << uint32(playerData.DamageDone);
73 data << uint32(playerData.HealingDone);
74 data << uint32(playerData.Stats.size());
75 for (uint32 pvpStat : playerData.Stats)
76 data << uint32(pvpStat);
77
78 return data;
79}
80
82{
83 _worldPacket.reserve(sizeof(PVPLogData_Arena) + 1 + 1 + 4 + Players.size() * sizeof(PVPLogData_Player));
84
85 _worldPacket << uint8(Arena.has_value());
86 if (Arena)
87 _worldPacket << *Arena;
88
89 _worldPacket << uint8(Winner.has_value());
90 if (Winner)
91 _worldPacket << uint8(*Winner);
92
93 _worldPacket << uint32(Players.size());
94 for (PVPLogData_Player const& player : Players)
95 _worldPacket << player;
96
97 return &_worldPacket;
98}
99
101{
102 _worldPacket >> BattlemasterGuid;
103 _worldPacket >> BattlemasterListID;
104 _worldPacket >> InstanceID;
105 _worldPacket >> JoinAsGroup;
106}
107
109{
110 _worldPacket >> BattlemasterGuid;
111 _worldPacket >> TeamSizeIndex;
112 _worldPacket >> JoinAsGroup;
113 _worldPacket >> IsRated;
114}
115
117{
118 data << uint32(header.QueueSlot);
119 data << uint64(header.QueueID);
120 data << uint8(header.RangeMin);
121 data << uint8(header.RangeMax);
122 data << uint32(header.InstanceID);
123 data << uint8(header.RegisteredMatch);
124 return data;
125}
126
128{
129 _worldPacket << uint32(QueueSlot);
130 _worldPacket << uint64(0);
131 return &_worldPacket;
132}
133
135{
136 _worldPacket << Hdr;
137 _worldPacket << uint32(STATUS_WAIT_JOIN);
138 _worldPacket << uint32(Mapid);
139 _worldPacket << uint64(RandomQueueID);
140 _worldPacket << uint32(Timeout);
141 return &_worldPacket;
142}
143
145{
146 _worldPacket << Hdr;
147 _worldPacket << uint32(STATUS_IN_PROGRESS);
148 _worldPacket << uint32(Mapid);
149 _worldPacket << uint64(RandomQueueID);
150 _worldPacket << uint32(ShutdownTimer);
151 _worldPacket << uint32(StartTimer);
152 _worldPacket << uint8(ArenaFaction);
153 return &_worldPacket;
154}
155
157{
158 _worldPacket << Hdr;
159 _worldPacket << uint32(STATUS_WAIT_QUEUE);
160 _worldPacket << uint32(AverageWaitTime);
161 _worldPacket << uint32(WaitTime);
162 return &_worldPacket;
163}
164
166{
167 _worldPacket << uint32(Reason);
169 _worldPacket << ClientID;
170
171 return &_worldPacket;
172}
173
175{
176 _worldPacket >> QueueID;
177}
178
180{
181 _worldPacket >> QueueID;
182 _worldPacket >> AcceptedInvite;
183}
184
186{
187 _worldPacket >> ListID;
188 _worldPacket >> PvpAnywhere;
189 _worldPacket >> NoXpGain;
190}
191
193{
194 _worldPacket << BattlemasterGuid;
195 _worldPacket << uint8(PvpAnywhere);
196 _worldPacket << int32(BattlemasterListID);
197 _worldPacket << uint8(MinLevel);
198 _worldPacket << uint8(MaxLevel);
199
200 _worldPacket << uint8(HasHolidayWinToday);
201 _worldPacket << uint32(HolidayWinHonorCurrencyBonus);
202 _worldPacket << uint32(HolidayFirstWinArenaCurrencyBonus);
203 _worldPacket << uint32(HolidayLossHonorCurrencyBonus);
204
205 _worldPacket << uint8(BattlemasterListID == BATTLEGROUND_RB);
206 if (BattlemasterListID == BATTLEGROUND_RB)
207 {
208 _worldPacket << uint8(HasRandomWinToday);
209 _worldPacket << uint32(RandomWinHonorCurrencyBonus);
210 _worldPacket << uint32(RandomFirstWinArenaCurrencyBonus);
211 _worldPacket << uint32(RandomLossHonorCurrencyBonus);
212 }
213
214 _worldPacket << uint32(Battlefields ? Battlefields->size() : 0);
215 if (Battlefields)
216 for (uint32 battlefield : *Battlefields)
217 _worldPacket << uint32(battlefield);
218
219 return &_worldPacket;
220}
221
223{
224 _worldPacket >> Offender;
225}
226
228{
229 _worldPacket << uint8(Result);
230 _worldPacket << uint8(NumBlackMarksOnOffender);
231 _worldPacket << uint8(NumPlayersIHaveReported);
232 _worldPacket << Offender;
233 return &_worldPacket;
234}
235
237{
238 data << playerPosition.Guid;
239 data << playerPosition.Pos;
240 return data;
241}
242
244{
245 _worldPacket << uint32(Players.size());
246 for (BattlegroundPlayerPosition const& pos : Players)
247 _worldPacket << pos;
248
249 _worldPacket << uint32(FlagCarriers.size());
250 for (BattlegroundPlayerPosition const& pos : FlagCarriers)
251 _worldPacket << pos;
252
253 return &_worldPacket;
254}
255
257{
258 _worldPacket << Guid;
259 return &_worldPacket;
260}
261
263{
264 _worldPacket << Guid;
265 return &_worldPacket;
266}
267
269{
270 _worldPacket << Guid;
271 return &_worldPacket;
272}
@ STATUS_WAIT_QUEUE
@ STATUS_WAIT_JOIN
@ STATUS_IN_PROGRESS
uint8_t uint8
Definition Define.h:135
int32_t int32
Definition Define.h:129
uint64_t uint64
Definition Define.h:132
uint32_t uint32
Definition Define.h:133
ByteBuffer & operator<<(ByteBuffer &buf, ObjectGuid const &guid)
@ ERR_BATTLEGROUND_JOIN_TIMED_OUT
@ ERR_BATTLEGROUND_JOIN_FAILED
@ BATTLEGROUND_RB
Definition Arena.h:48
void reserve(size_t ressize)
Definition ByteBuffer.h:419
WorldPacket _worldPacket
Definition Packet.h:42
std::array< std::string_view, 2 > TeamName
std::variant< PVPLogData_Honor, uint8 > HonorOrFaction