diff options
author | Ovahlord <dreadkiller@gmx.de> | 2024-06-06 01:03:43 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-06-06 01:03:43 +0200 |
commit | be00f49a12bc8406de153fb9c5f0d658ad851d65 (patch) | |
tree | e440f3086be4023c3e541a09b3f9243e201e4323 | |
parent | 0d9df719ef5f1dcc105417495d248a6db4bd1052 (diff) |
Core/Packets: added structure and handler for CMSG_LEARN_PREVIEW_TALENTS
-rw-r--r-- | src/server/game/Handlers/SkillHandler.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Server/Packets/TalentPackets.cpp | 16 | ||||
-rw-r--r-- | src/server/game/Server/Packets/TalentPackets.h | 11 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 2 |
5 files changed, 34 insertions, 0 deletions
diff --git a/src/server/game/Handlers/SkillHandler.cpp b/src/server/game/Handlers/SkillHandler.cpp index 61ae29e8ab4..58c6c39f1ab 100644 --- a/src/server/game/Handlers/SkillHandler.cpp +++ b/src/server/game/Handlers/SkillHandler.cpp @@ -50,6 +50,10 @@ void WorldSession::HandleLearnTalentsOpcode(WorldPackets::Talent::LearnTalents& _player->SendTalentsInfoData(); } +void WorldSession::HandleLearnPreviewTalentsOpcode(WorldPackets::Talent::LearnPreviewTalents& /*packet*/) +{ +} + void WorldSession::HandleConfirmRespecWipeOpcode(WorldPackets::Talent::ConfirmRespecWipe& confirmRespecWipe) { Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(confirmRespecWipe.RespecMaster, UNIT_NPC_FLAG_TRAINER, UNIT_NPC_FLAG_2_NONE); diff --git a/src/server/game/Server/Packets/TalentPackets.cpp b/src/server/game/Server/Packets/TalentPackets.cpp index 20753c7de5d..790f1703742 100644 --- a/src/server/game/Server/Packets/TalentPackets.cpp +++ b/src/server/game/Server/Packets/TalentPackets.cpp @@ -24,6 +24,13 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Talent::TalentInfo const& return data; } +ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Talent::TalentInfo& talent) +{ + data >> talent.TalentID; + data >> talent.Rank; + return data; +} + WorldPacket const* WorldPackets::Talent::UpdateTalentData::Write() { _worldPacket << uint32(Info.UnspentTalentPoints); @@ -103,3 +110,12 @@ WorldPacket const* WorldPackets::Talent::ActiveGlyphs::Write() return &_worldPacket; } + +void WorldPackets::Talent::LearnPreviewTalents::Read() +{ + Talents.resize(_worldPacket.read<uint32>()); + _worldPacket >> TalentTab; + + for (TalentInfo& talent : Talents) + _worldPacket >> talent; +} diff --git a/src/server/game/Server/Packets/TalentPackets.h b/src/server/game/Server/Packets/TalentPackets.h index dee21268b70..aab470db9e0 100644 --- a/src/server/game/Server/Packets/TalentPackets.h +++ b/src/server/game/Server/Packets/TalentPackets.h @@ -69,6 +69,17 @@ namespace WorldPackets Array<uint16, MAX_TALENT_TIERS> Talents; }; + class LearnPreviewTalents final : public ClientPacket + { + public: + LearnPreviewTalents(WorldPacket&& packet) : ClientPacket(CMSG_LEARN_PREVIEW_TALENTS, std::move(packet)) { } + + void Read() override; + + uint32 TalentTab = 0; + Array<TalentInfo, 100> Talents; + }; + class RespecWipeConfirm final : public ServerPacket { public: diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 64b9ffb6e54..409c6d0c572 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -550,6 +550,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_LATENCY_REPORT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LEARN_PVP_TALENTS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LEARN_TALENTS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleLearnTalentsOpcode); + DEFINE_HANDLER(CMSG_LEARN_PREVIEW_TALENTS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleLearnPreviewTalentsOpcode); DEFINE_HANDLER(CMSG_LEAVE_GROUP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLeaveGroupOpcode); DEFINE_HANDLER(CMSG_LEAVE_PET_BATTLE_QUEUE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_LFG_LIST_APPLY_TO_GROUP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index a0c382a4a7f..6705c645a93 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -730,6 +730,7 @@ namespace WorldPackets namespace Talent { class LearnTalents; + class LearnPreviewTalents; class ConfirmRespecWipe; } @@ -1511,6 +1512,7 @@ class TC_GAME_API WorldSession void HandleUpdateMissileTrajectory(WorldPackets::Spells::UpdateMissileTrajectory& packet); void HandleLearnTalentsOpcode(WorldPackets::Talent::LearnTalents& packet); + void HandleLearnPreviewTalentsOpcode(WorldPackets::Talent::LearnPreviewTalents& packet); void HandleConfirmRespecWipeOpcode(WorldPackets::Talent::ConfirmRespecWipe& confirmRespecWipe); void HandleUnlearnSkillOpcode(WorldPackets::Spells::UnlearnSkill& packet); void HandleTradeSkillSetFavorite(WorldPackets::Spells::TradeSkillSetFavorite const& tradeSkillSetFavorite); |