From c2722959a97648f3331290c55d014f314fa0e1bf Mon Sep 17 00:00:00 2001 From: Mogadischu Date: Thu, 15 Jan 2015 02:25:19 +0100 Subject: Core/PacketIO: Updated corpse related packet structures --- src/server/game/Handlers/MiscHandler.cpp | 40 ++++++++++++-------------------- 1 file changed, 15 insertions(+), 25 deletions(-) (limited to 'src/server/game/Handlers/MiscHandler.cpp') diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 569bcf73ffa..e2c71e65e87 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -61,12 +61,10 @@ #include "ClientConfigPackets.h" #include "MiscPackets.h" -void WorldSession::HandleRepopRequestOpcode(WorldPacket& recvData) +void WorldSession::HandleRepopRequest(WorldPackets::Misc::RepopRequest& packet) { TC_LOG_DEBUG("network", "WORLD: Recvd CMSG_REPOP_REQUEST Message"); - recvData.read_skip(); - if (GetPlayer()->IsAlive() || GetPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) return; @@ -501,14 +499,14 @@ void WorldSession::HandleZoneUpdateOpcode(WorldPacket& recvData) //GetPlayer()->SendInitWorldStates(true, newZone); } -void WorldSession::HandleReturnToGraveyard(WorldPacket& /*recvPacket*/) +void WorldSession::HandlePortGraveyard(WorldPackets::Misc::PortGraveyard& /*packet*/) { if (GetPlayer()->IsAlive() || !GetPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) return; GetPlayer()->RepopAtGraveyard(); } -void WorldSession::HandleRequestCemeteryList(WorldPacket& /*recvPacket*/) +void WorldSession::HandleRequestCemeteryList(WorldPackets::Misc::RequestCemeteryList& /*packet*/) { uint32 zoneId = _player->GetZoneId(); uint32 team = _player->GetTeam(); @@ -529,14 +527,14 @@ void WorldSession::HandleRequestCemeteryList(WorldPacket& /*recvPacket*/) return; } - WorldPacket data(SMSG_REQUEST_CEMETERY_LIST_RESPONSE, 4 + 4 * graveyardIds.size()); - data.WriteBit(0); // Is MicroDungeon (WorldMapFrame.lua) - - data.WriteBits(graveyardIds.size(), 24); - for (uint32 id : graveyardIds) - data << id; - - SendPacket(&data); + WorldPackets::Misc::RequestCemeteryListResponse packet; + packet.IsGossipTriggered = false; + packet.CemeteryID.reserve(graveyardIds.size()); + + for (uint32 id : graveyardIds) + packet.CemeteryID.push_back(id); + + SendPacket(packet.Write()); } void WorldSession::HandleSetSelectionOpcode(WorldPackets::Misc::SetSelection& packet) @@ -761,13 +759,10 @@ void WorldSession::HandleBugOpcode(WorldPacket& recvData) CharacterDatabase.Execute(stmt); } -void WorldSession::HandleReclaimCorpseOpcode(WorldPacket& recvData) +void WorldSession::HandleReclaimCorpse(WorldPackets::Misc::ReclaimCorpse& packet) { TC_LOG_DEBUG("network", "WORLD: Received CMSG_RECLAIM_CORPSE"); - ObjectGuid guid; - recvData >> guid; - if (_player->IsAlive()) return; @@ -798,25 +793,20 @@ void WorldSession::HandleReclaimCorpseOpcode(WorldPacket& recvData) _player->SpawnCorpseBones(); } -void WorldSession::HandleResurrectResponseOpcode(WorldPacket& recvData) +void WorldSession::HandleResurrectResponse(WorldPackets::Misc::ResurrectResponse& packet) { TC_LOG_DEBUG("network", "WORLD: Received CMSG_RESURRECT_RESPONSE"); - ObjectGuid guid; - uint8 status; - recvData >> guid; - recvData >> status; - if (GetPlayer()->IsAlive()) return; - if (status == 0) + if (packet.Response == 0) { GetPlayer()->ClearResurrectRequestData(); // reject return; } - if (!GetPlayer()->IsResurrectRequestedBy(guid)) + if (!GetPlayer()->IsResurrectRequestedBy(packet.Resurrecter)) return; GetPlayer()->ResurrectUsingRequestData(); -- cgit v1.2.3