aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Guilds/Guild.cpp1
-rw-r--r--src/server/game/Server/Packets/InspectPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/InspectPackets.h5
-rw-r--r--src/server/game/Server/Packets/TalentPackets.cpp95
-rw-r--r--src/server/game/Server/Packets/TalentPackets.h4
5 files changed, 65 insertions, 49 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index 8a5ead4c218..df4855208d5 100644
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -1360,7 +1360,6 @@ void Guild::HandleRoster(WorldSession* session)
memberData.GuildClubMemberID = Battlenet::Services::Clubs::CreateClubMemberId(member.GetGUID());
memberData.Authenticated = false;
- memberData.SorEligible = false;
memberData.Name = member.GetName();
memberData.Note = member.GetPublicNote();
diff --git a/src/server/game/Server/Packets/InspectPackets.cpp b/src/server/game/Server/Packets/InspectPackets.cpp
index cd188712349..e3dc44075c2 100644
--- a/src/server/game/Server/Packets/InspectPackets.cpp
+++ b/src/server/game/Server/Packets/InspectPackets.cpp
@@ -185,8 +185,6 @@ InspectItemData::InspectItemData(::Item const* item, uint8 index)
WorldPacket const* InspectResult::Write()
{
_worldPacket << DisplayInfo;
- _worldPacket << uint32(Glyphs.size());
- _worldPacket << uint32(Talents.size());
_worldPacket << uint32(PvpTalents.size());
_worldPacket << int32(ItemLevel);
_worldPacket << uint8(LifetimeMaxRank);
@@ -194,13 +192,12 @@ WorldPacket const* InspectResult::Write()
_worldPacket << uint16(YesterdayHK);
_worldPacket << uint32(LifetimeHK);
_worldPacket << uint32(HonorLevel);
- if (!Glyphs.empty())
- _worldPacket.append(Glyphs.data(), Glyphs.size());
- if (!Talents.empty())
- _worldPacket.append(Talents.data(), Talents.size());
+
if (!PvpTalents.empty())
_worldPacket.append(PvpTalents.data(), PvpTalents.size());
+ _worldPacket << TalentInfo;
+
_worldPacket.WriteBit(GuildData.has_value());
_worldPacket.WriteBit(AzeriteLevel.has_value());
_worldPacket.FlushBits();
diff --git a/src/server/game/Server/Packets/InspectPackets.h b/src/server/game/Server/Packets/InspectPackets.h
index 12dafef3aad..5fcdc0a873c 100644
--- a/src/server/game/Server/Packets/InspectPackets.h
+++ b/src/server/game/Server/Packets/InspectPackets.h
@@ -24,6 +24,7 @@
#include "ObjectGuid.h"
#include "RaceMask.h"
#include "SharedDefines.h"
+#include "TalentPackets.h".h"
#include "TraitPacketsCommon.h"
class Item;
@@ -135,9 +136,9 @@ namespace WorldPackets
WorldPacket const* Write() override;
PlayerModelDisplayInfo DisplayInfo;
- std::vector<uint16> Glyphs;
- std::vector<uint16> Talents;
std::array<uint16, 3> PvpTalents;
+ Talent::TalentInfoUpdate TalentInfo;
+
Optional<InspectGuildData> GuildData;
std::array<PVPBracketData, 9> Bracket;
Optional<int32> AzeriteLevel;
diff --git a/src/server/game/Server/Packets/TalentPackets.cpp b/src/server/game/Server/Packets/TalentPackets.cpp
index 301ed235b5f..1ecbb2d3a63 100644
--- a/src/server/game/Server/Packets/TalentPackets.cpp
+++ b/src/server/game/Server/Packets/TalentPackets.cpp
@@ -17,57 +17,29 @@
#include "TalentPackets.h"
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Talent::TalentInfo const& talent)
+namespace WorldPackets::Talent
{
- data << uint32(talent.TalentID);
- data << uint32(talent.Rank);
- return data;
-}
-
-ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Talent::TalentInfo& talent)
+ByteBuffer& operator>>(ByteBuffer& data, TalentInfo& talent)
{
data >> talent.TalentID;
data >> talent.Rank;
return data;
}
-WorldPacket const* WorldPackets::Talent::UpdateTalentData::Write()
+WorldPacket const* UpdateTalentData::Write()
{
- _worldPacket << uint32(Info.UnspentTalentPoints);
- _worldPacket << uint8(Info.ActiveGroup);
- _worldPacket << uint32(Info.TalentGroups.size());
-
- for (auto& talentGroupInfo : Info.TalentGroups)
- {
- _worldPacket << uint8(talentGroupInfo.Talents.size());
- _worldPacket << uint32(talentGroupInfo.Talents.size());
-
- _worldPacket << uint8(talentGroupInfo.Glyphs.size());
- _worldPacket << uint32(talentGroupInfo.Glyphs.size());
-
- _worldPacket << uint8(talentGroupInfo.SpecID);
- _worldPacket << uint32(talentGroupInfo.PrimarySpecialization);
-
- for (TalentInfo const& talent : talentGroupInfo.Talents)
- _worldPacket << talent;
-
- for (uint16 glyph : talentGroupInfo.Glyphs)
- _worldPacket << glyph;
- }
-
- _worldPacket.WriteBit(Info.IsPetTalents);
- _worldPacket.FlushBits();
+ _worldPacket << Info;
return &_worldPacket;
}
-void WorldPackets::Talent::LearnTalent::Read()
+void LearnTalent::Read()
{
_worldPacket >> TalentID;
_worldPacket >> Rank;
}
-WorldPacket const* WorldPackets::Talent::RespecWipeConfirm::Write()
+WorldPacket const* RespecWipeConfirm::Write()
{
_worldPacket << int8(RespecType);
_worldPacket << uint32(Cost);
@@ -75,13 +47,13 @@ WorldPacket const* WorldPackets::Talent::RespecWipeConfirm::Write()
return &_worldPacket;
}
-void WorldPackets::Talent::ConfirmRespecWipe::Read()
+void ConfirmRespecWipe::Read()
{
_worldPacket >> RespecMaster;
_worldPacket >> RespecType;
}
-WorldPacket const* WorldPackets::Talent::LearnTalentFailed::Write()
+WorldPacket const* LearnTalentFailed::Write()
{
_worldPacket.WriteBits(Reason, 4);
_worldPacket << int32(SpellID);
@@ -92,14 +64,14 @@ WorldPacket const* WorldPackets::Talent::LearnTalentFailed::Write()
return &_worldPacket;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Talent::GlyphBinding const& glyphBinding)
+ByteBuffer& operator<<(ByteBuffer& data, GlyphBinding const& glyphBinding)
{
data << uint32(glyphBinding.SpellID);
data << uint16(glyphBinding.GlyphID);
return data;
}
-WorldPacket const* WorldPackets::Talent::ActiveGlyphs::Write()
+WorldPacket const* ActiveGlyphs::Write()
{
_worldPacket << uint32(Glyphs.size());
for (GlyphBinding const& glyph : Glyphs)
@@ -111,7 +83,7 @@ WorldPacket const* WorldPackets::Talent::ActiveGlyphs::Write()
return &_worldPacket;
}
-void WorldPackets::Talent::LearnPreviewTalents::Read()
+void LearnPreviewTalents::Read()
{
Talents.resize(_worldPacket.read<uint32>());
_worldPacket >> TabIndex;
@@ -120,7 +92,50 @@ void WorldPackets::Talent::LearnPreviewTalents::Read()
_worldPacket >> talent;
}
-void WorldPackets::Talent::SetPrimaryTalentTree::Read()
+void SetPrimaryTalentTree::Read()
{
_worldPacket >> TabIndex;
}
+
+ByteBuffer& operator<<(ByteBuffer& data, TalentInfoUpdate const& talentInfoUpdate)
+{
+ data << uint32(talentInfoUpdate.UnspentTalentPoints);
+ data << uint8(talentInfoUpdate.ActiveGroup);
+ data << uint32(talentInfoUpdate.TalentGroups.size());
+
+ for (TalentGroupInfo const& talentGroupInfo : talentInfoUpdate.TalentGroups)
+ data << talentGroupInfo;
+
+ data << Bits<1>(talentInfoUpdate.IsPetTalents);
+ data.FlushBits();
+
+ return data;
+}
+
+
+ByteBuffer& operator<<(ByteBuffer& data, TalentGroupInfo const& talentGroupInfo)
+{
+ data << uint8(talentGroupInfo.Talents.size());
+ data << uint32(talentGroupInfo.Talents.size());
+
+ data << uint8(talentGroupInfo.Glyphs.size());
+ data << uint32(talentGroupInfo.Glyphs.size());
+
+ data << uint8(talentGroupInfo.SpecID);
+ data << uint32(talentGroupInfo.PrimarySpecialization);
+
+ for (TalentInfo const& talent : talentGroupInfo.Talents)
+ data << talent;
+
+ data.append(talentGroupInfo.Glyphs.data(), talentGroupInfo.Glyphs.size());
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, TalentInfo const& talentInfo)
+{
+ data << uint32(talentInfo.TalentID);
+ data << uint32(talentInfo.Rank);
+ return data;
+}
+}
diff --git a/src/server/game/Server/Packets/TalentPackets.h b/src/server/game/Server/Packets/TalentPackets.h
index 9a42ed42d02..8a7558438ba 100644
--- a/src/server/game/Server/Packets/TalentPackets.h
+++ b/src/server/game/Server/Packets/TalentPackets.h
@@ -145,6 +145,10 @@ namespace WorldPackets
std::vector<GlyphBinding> Glyphs;
bool IsFullUpdate = false;
};
+
+ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Talent::TalentInfoUpdate const& talentInfoUpdate);
+ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Talent::TalentGroupInfo const& talentGroupInfo);
+ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Talent::TalentInfo const& talentInfo);
}
}