diff options
author | Ovahlord <dreadkiller@gmx.de> | 2024-11-12 21:43:46 +0100 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-11-12 21:46:04 +0100 |
commit | 5da7cae3d8f60a4099a81f4fe5791f10954e7a17 (patch) | |
tree | 051b32bd54c463f7ad70c02ef199a7dbda37f919 /src | |
parent | 95766668f8bbaac1ce304eeb746696f97e3414d3 (diff) |
Core/Packets: updated SMSG_INSPECT_RESULT packet structure to 4.4.1
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Guilds/Guild.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Server/Packets/InspectPackets.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Server/Packets/InspectPackets.h | 5 | ||||
-rw-r--r-- | src/server/game/Server/Packets/TalentPackets.cpp | 95 | ||||
-rw-r--r-- | src/server/game/Server/Packets/TalentPackets.h | 4 |
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); } } |