TrinityCore
Loading...
Searching...
No Matches
TransmogrificationPackets.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
19#include "PacketOperators.h"
20
22{
24{
25 data >> transmogItem.ItemModifiedAppearanceID;
26 data >> transmogItem.Slot;
27 data >> transmogItem.SpellItemEnchantmentID;
28 data >> transmogItem.SecondaryItemModifiedAppearanceID;
29
30 return data;
31}
32
34{
35 _worldPacket >> Size<uint32>(Items);
37 for (TransmogrifyItem& item : Items)
38 _worldPacket >> item;
39
41 _worldPacket >> Bits<1>(CurrentSpecOnly);
42}
43
45{
46 data.ResetBitPos();
47 data >> As<uint8>(transmogOutfitDataInfo.SetType);
48 data >> transmogOutfitDataInfo.Icon;
49 data >> SizedString::BitsSize<8>(transmogOutfitDataInfo.Name);
50 data >> Bits<1>(transmogOutfitDataInfo.SituationsEnabled);
51
52 data >> SizedString::Data(transmogOutfitDataInfo.Name);
53
54 return data;
55}
56
57ByteBuffer& operator<<(ByteBuffer& data, TransmogOutfitDataInfo const& transmogOutfitDataInfo)
58{
59 data << As<uint8>(transmogOutfitDataInfo.SetType);
60 data << uint32(transmogOutfitDataInfo.Icon);
61 data << SizedString::BitsSize<8>(transmogOutfitDataInfo.Name);
62 data << Bits<1>(transmogOutfitDataInfo.SituationsEnabled);
63 data.FlushBits();
64
65 data << SizedString::Data(transmogOutfitDataInfo.Name);
66
67 return data;
68}
69
71{
73 _worldPacket >> As<uint8>(Source);
75}
76
83
90
98
99ByteBuffer& operator>>(ByteBuffer& data, TransmogOutfitSituationInfo& transmogOutfitSituationInfo)
100{
101 data >> transmogOutfitSituationInfo.SituationID;
102 data >> transmogOutfitSituationInfo.SpecID;
103 data >> transmogOutfitSituationInfo.LoadoutID;
104 data >> transmogOutfitSituationInfo.EquipmentSetID;
105
106 return data;
107}
108
109ByteBuffer& operator<<(ByteBuffer& data, TransmogOutfitSituationInfo const& transmogOutfitSituationInfo)
110{
111 data << uint32(transmogOutfitSituationInfo.SituationID);
112 data << uint32(transmogOutfitSituationInfo.SpecID);
113 data << uint32(transmogOutfitSituationInfo.LoadoutID);
114 data << uint32(transmogOutfitSituationInfo.EquipmentSetID);
115
116 return data;
117}
118
120{
122 _worldPacket >> Npc;
123 _worldPacket >> Size<uint32>(Situations);
124 for (TransmogOutfitSituationInfo& situation : Situations)
125 _worldPacket >> situation;
126
129}
130
132{
134 _worldPacket << Size<uint32>(Situations);
135
136 for (TransmogOutfitSituationInfo const& situation : Situations)
137 _worldPacket << situation;
138
139 _worldPacket << Bits<1>(SituationsEnabled);
141
142 return &_worldPacket;
143}
144
146{
147 data >> As<int8>(transmogOutfitSlotData.Slot);
148 data >> As<uint8>(transmogOutfitSlotData.SlotOption);
149 data >> As<uint8>(transmogOutfitSlotData.SheatheCategory);
150 data >> transmogOutfitSlotData.ItemModifiedAppearanceID;
151 data >> As<uint8>(transmogOutfitSlotData.AppearanceDisplayType);
152 data >> transmogOutfitSlotData.SpellItemEnchantmentID;
153 data >> As<uint8>(transmogOutfitSlotData.IllusionDisplayType);
154 data >> transmogOutfitSlotData.Flags;
155
156 return data;
157}
158
159ByteBuffer& operator<<(ByteBuffer& data, TransmogOutfitSlotData const& transmogOutfitSlotData)
160{
161 data << As<int8>(transmogOutfitSlotData.Slot);
162 data << As<uint8>(transmogOutfitSlotData.SlotOption);
163 data << As<uint8>(transmogOutfitSlotData.SheatheCategory);
164 data << uint32(transmogOutfitSlotData.ItemModifiedAppearanceID);
165 data << As<uint8>(transmogOutfitSlotData.AppearanceDisplayType);
166 data << uint32(transmogOutfitSlotData.SpellItemEnchantmentID);
167 data << As<uint8>(transmogOutfitSlotData.IllusionDisplayType);
168 data << uint32(transmogOutfitSlotData.Flags);
169
170 return data;
171}
172
174{
176 _worldPacket >> Size<uint32>(Slots);
177 _worldPacket >> Npc;
179
180 for (TransmogOutfitSlotData& slot : Slots)
181 _worldPacket >> slot;
182
185
186 std::ranges::sort(Slots, std::ranges::less(), [](TransmogOutfitSlotData const& slot) { return std::pair(slot.Slot, slot.SlotOption); });
187}
188
190{
192 _worldPacket << Size<uint32>(Slots);
193
194 for (TransmogOutfitSlotData const& slot : Slots)
195 _worldPacket << slot;
196
197 return &_worldPacket;
198}
199
201{
202 _worldPacket << Bits<1>(IsFullUpdate);
203 _worldPacket << Bits<1>(IsSetFavorite);
204 _worldPacket << Size<uint32>(FavoriteAppearances);
205 _worldPacket << Size<uint32>(NewAppearances);
206 if (!FavoriteAppearances.empty())
208
209 if (!NewAppearances.empty())
211
212 return &_worldPacket;
213}
214}
uint32_t uint32
Definition Define.h:154
void append(T value)
Definition ByteBuffer.h:130
void ResetBitPos()
Definition ByteBuffer.h:152
void FlushBits()
Definition ByteBuffer.h:141
WorldPacket _worldPacket
Definition Packet.h:43
Array< TransmogrifyItem, MAX_TRANSMOGRIFY_ITEMS > Items
DataWriter< Container > Data(Container const &value)
ByteBuffer & operator>>(ByteBuffer &data, TransmogrifyItem &transmogItem)
ByteBuffer & operator<<(ByteBuffer &data, TransmogOutfitDataInfo const &transmogOutfitDataInfo)