From cf9fa507d0f7c75632b253bfbb78e140a637e7a5 Mon Sep 17 00:00:00 2001 From: MitchesD Date: Thu, 16 Jul 2015 22:01:22 +0200 Subject: Core/PacketIO: updated CMSG_SUMMON_RESPONSE --- src/server/game/Handlers/MovementHandler.cpp | 9 ++------- src/server/game/Server/Packets/MovementPackets.cpp | 6 ++++++ src/server/game/Server/Packets/MovementPackets.h | 11 +++++++++++ src/server/game/Server/Protocol/Opcodes.cpp | 2 +- src/server/game/Server/WorldSession.h | 3 ++- 5 files changed, 22 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index 13914adcae3..597ddc296cd 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -511,17 +511,12 @@ void WorldSession::HandleMovementAckMessage(WorldPackets::Movement::MovementAckM GetPlayer()->ValidateMovementInfo(&movementAck.Ack.movementInfo); } -void WorldSession::HandleSummonResponseOpcode(WorldPacket& recvData) +void WorldSession::HandleSummonResponseOpcode(WorldPackets::Movement::SummonResponse& packet) { if (!_player->IsAlive() || _player->IsInCombat()) return; - ObjectGuid summoner_guid; - bool agree; - recvData >> summoner_guid; - recvData >> agree; - - _player->SummonIfPossible(agree); + _player->SummonIfPossible(packet.Accept); } void WorldSession::HandleSetCollisionHeightAck(WorldPackets::Movement::MoveSetCollisionHeightAck& setCollisionHeightAck) diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 789c37cd72a..65847ccfa6e 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -674,3 +674,9 @@ void WorldPackets::Movement::MoveTimeSkipped::Read() _worldPacket >> MoverGUID; _worldPacket >> TimeSkipped; } + +void WorldPackets::Movement::SummonResponse::Read() +{ + _worldPacket >> SummonerGUID; + Accept = _worldPacket.ReadBit(); +} diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index 2543a990937..22d1b62a08c 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -401,6 +401,17 @@ namespace WorldPackets ObjectGuid MoverGUID; uint32 TimeSkipped = 0; }; + + class SummonResponse final : public ClientPacket + { + public: + SummonResponse(WorldPacket&& packet) : ClientPacket(CMSG_SUMMON_RESPONSE, std::move(packet)) { } + + void Read() override; + + bool Accept = false; + ObjectGuid SummonerGUID; + }; } ByteBuffer& operator<<(ByteBuffer& data, Movement::MonsterSplineFilterKey const& monsterSplineFilterKey); diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 8d59f77b0ea..b497c7830a0 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -761,7 +761,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_STAND_STATE_CHANGE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::StandStateChange, &WorldSession::HandleStandStateChangeOpcode); DEFINE_HANDLER(CMSG_START_SPECTATOR_WAR_GAME, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_START_WAR_GAME, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); - DEFINE_OPCODE_HANDLER_OLD(CMSG_SUMMON_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSummonResponseOpcode ); + DEFINE_HANDLER(CMSG_SUMMON_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Movement::SummonResponse, &WorldSession::HandleSummonResponseOpcode); DEFINE_HANDLER(CMSG_SUPPORT_TICKET_SUBMIT_BUG, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Ticket::SupportTicketSubmitBug, &WorldSession::HandleSupportTicketSubmitBug); DEFINE_HANDLER(CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Ticket::SupportTicketSubmitComplaint, &WorldSession::HandleSupportTicketSubmitComplaint); DEFINE_HANDLER(CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Ticket::SupportTicketSubmitSuggestion, &WorldSession::HandleSupportTicketSubmitSuggestion); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 2ff82e187bd..e8627f1ed22 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -360,6 +360,7 @@ namespace WorldPackets class SetActiveMover; class MoveSetCollisionHeightAck; class MoveTimeSkipped; + class SummonResponse; } namespace NPC @@ -1313,7 +1314,7 @@ class WorldSession void HandleQueryCorpseLocation(WorldPackets::Query::QueryCorpseLocationFromClient& packet); void HandleQueryCorpseTransport(WorldPackets::Query::QueryCorpseTransport& packet); void HandleResurrectResponse(WorldPackets::Misc::ResurrectResponse& packet); - void HandleSummonResponseOpcode(WorldPacket& recvData); + void HandleSummonResponseOpcode(WorldPackets::Movement::SummonResponse& packet); void HandleJoinChannel(WorldPackets::Channel::JoinChannel& packet); void HandleLeaveChannel(WorldPackets::Channel::LeaveChannel& packet); -- cgit v1.2.3