TrinityCore
Loading...
Searching...
No Matches
TalentPackets.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 "TalentPackets.h"
19#include "PacketOperators.h"
20
22{
24{
25 data >> pvpTalent.PvPTalentID;
26 data >> pvpTalent.Slot;
27
28 return data;
29}
30
31ByteBuffer& operator<<(ByteBuffer& data, PvPTalent const& pvpTalent)
32{
33 data << uint16(pvpTalent.PvPTalentID);
34 data << uint8(pvpTalent.Slot);
35
36 return data;
37}
38
40{
41 data << int32(talentEntry.TalentID);
42 data << int32(talentEntry.Rank);
43
44 return data;
45}
46
48{
49 data << uint8(talentGroupInfo.NumTalents);
50 data << Size<uint32>(talentGroupInfo.Talents);
51
52 data << uint8(talentGroupInfo.NumGlyphs);
53 data << Size<uint32>(talentGroupInfo.GlyphIDs);
54
55 data << int8(talentGroupInfo.Role);
56 data << int32(talentGroupInfo.PrimarySpecialization);
57
58 for (ClassicTalentEntry const& talentEntry : talentGroupInfo.Talents)
59 data << talentEntry;
60
61 if (!talentGroupInfo.GlyphIDs.empty())
62 data.append(talentGroupInfo.GlyphIDs.data(), talentGroupInfo.GlyphIDs.size());
63
64 data.WriteBit(talentGroupInfo.Unused1125);
65 data.FlushBits();
66
67 return data;
68}
69
71{
72 data << int32(talentInfoUpdate.UnspentTalentPoints);
73 data << uint8(talentInfoUpdate.ActiveGroup);
74 data << Size<uint32>(talentInfoUpdate.Talents);
75
76 for (ClassicTalentGroupInfo const& talents : talentInfoUpdate.Talents)
77 data << talents;
78
79 data << Bits<1>(talentInfoUpdate.IsPetTalents);
80 data.FlushBits();
81
82 return data;
83}
84
86{
89 _worldPacket << Size<uint32>(Info.TalentGroups);
90
91 for (TalentGroupInfo& talentGroupInfo : Info.TalentGroups)
92 {
93 _worldPacket << uint32(talentGroupInfo.SpecID);
94 _worldPacket << Size<uint32>(talentGroupInfo.TalentIDs);
95 _worldPacket << Size<uint32>(talentGroupInfo.PvPTalents);
96 _worldPacket << Size<uint32>(talentGroupInfo.GlyphIDs);
97
98 for (uint16 talent : talentGroupInfo.TalentIDs)
99 _worldPacket << uint16(talent);
100
101 for (PvPTalent talent : talentGroupInfo.PvPTalents)
102 _worldPacket << talent;
103
104 for (uint32 talent : talentGroupInfo.GlyphIDs)
105 _worldPacket << uint32(talent);
106 }
107
108 return &_worldPacket;
109}
110
112{
113 _worldPacket >> BitsSize<6>(Talents);
114 for (uint16& talent : Talents)
115 _worldPacket >> talent;
116}
117
126
132
134{
135 _worldPacket << Bits<4>(Reason);
137 _worldPacket << Size<uint32>(Talents);
138 if (!Talents.empty())
139 _worldPacket.append(Talents.data(), Talents.size());
140
141 return &_worldPacket;
142}
143
144ByteBuffer& operator<<(ByteBuffer& data, GlyphBinding const& glyphBinding)
145{
146 data << uint32(glyphBinding.SpellID);
147 data << uint16(glyphBinding.GlyphID);
148
149 return data;
150}
151
153{
154 _worldPacket << Size<uint32>(Glyphs);
155 for (GlyphBinding const& glyph : Glyphs)
156 _worldPacket << glyph;
157
158 _worldPacket << Bits<1>(IsFullUpdate);
160
161 return &_worldPacket;
162}
163
165{
166 _worldPacket >> Size<uint32>(Talents);
167 for (PvPTalent& pvpTalent : Talents)
168 _worldPacket >> pvpTalent;
169}
170
172{
173 _worldPacket << Bits<4>(Reason);
175 _worldPacket << Size<uint32>(Talents);
176 for (PvPTalent pvpTalent : Talents)
177 _worldPacket << pvpTalent;
178
179 return &_worldPacket;
180}
181}
uint8_t uint8
Definition Define.h:156
int8_t int8
Definition Define.h:152
int32_t int32
Definition Define.h:150
uint16_t uint16
Definition Define.h:155
uint32_t uint32
Definition Define.h:154
void append(T value)
Definition ByteBuffer.h:130
bool WriteBit(bool bit)
Definition ByteBuffer.h:158
void FlushBits()
Definition ByteBuffer.h:141
WorldPacket _worldPacket
Definition Packet.h:43
std::vector< GlyphBinding > Glyphs
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
Array< uint16, MAX_TALENT_TIERS > Talents
WorldPacket const * Write() override
WorldPacket const * Write() override
ByteBuffer & operator>>(ByteBuffer &data, PvPTalent &pvpTalent)
ByteBuffer & operator<<(ByteBuffer &data, PvPTalent const &pvpTalent)
std::vector< ClassicTalentEntry > Talents
std::vector< ClassicTalentGroupInfo > Talents
std::vector< TalentGroupInfo > TalentGroups