diff options
author | NoName <322016+Faq@users.noreply.github.com> | 2020-04-08 22:35:01 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-08 21:35:01 +0200 |
commit | 566dcfc5181b91f884ad4e6c917afce70bf67fb8 (patch) | |
tree | 89528356aab74ebe13bb62b012bcfa511e480acd | |
parent | 31018c36527755166d8a297ac9e6c98a66f014ae (diff) |
Core/PacketIO: Updated CMSG_DISMISS_CRITTER (#24412)
based on cherry-pick 6fbfc61de1931f1e70aee80249535436e368c113
Co-authored-by: Carbenium <carbenium@outlook.com>
-rw-r--r-- | src/server/game/Handlers/PetHandler.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Server/Packets/AllPackets.h | 1 | ||||
-rwxr-xr-x | src/server/game/Server/Packets/PetPackets.cpp | 23 | ||||
-rwxr-xr-x | src/server/game/Server/Packets/PetPackets.h | 39 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 8 |
5 files changed, 74 insertions, 9 deletions
diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index eba79a86927..4a68a7c2d16 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -27,6 +27,7 @@ #include "Opcodes.h" #include "Pet.h" #include "PetAI.h" +#include "PetPackets.h" #include "Player.h" #include "Spell.h" #include "SpellHistory.h" @@ -36,19 +37,14 @@ #include "World.h" #include "WorldPacket.h" -void WorldSession::HandleDismissCritter(WorldPacket& recvData) +void WorldSession::HandleDismissCritter(WorldPackets::Pet::DismissCritter& packet) { - ObjectGuid guid; - recvData >> guid; - - TC_LOG_DEBUG("network.opcode", "WORLD: Received CMSG_DISMISS_CRITTER for %s", guid.ToString().c_str()); - - Unit* pet = ObjectAccessor::GetCreatureOrPetOrVehicle(*_player, guid); + Unit* pet = ObjectAccessor::GetCreatureOrPetOrVehicle(*_player, packet.CritterGUID); if (!pet) { TC_LOG_DEBUG("entities.pet", "Vanitypet (%s) does not exist - player '%s' (%s / account: %u) attempted to dismiss it (possibly lagged out)", - guid.ToString().c_str(), GetPlayer()->GetName().c_str(), GetPlayer()->GetGUID().ToString().c_str(), GetAccountId()); + packet.CritterGUID.ToString().c_str(), GetPlayer()->GetName().c_str(), GetPlayer()->GetGUID().ToString().c_str(), GetAccountId()); return; } diff --git a/src/server/game/Server/Packets/AllPackets.h b/src/server/game/Server/Packets/AllPackets.h index c6f6c672277..424970d458d 100644 --- a/src/server/game/Server/Packets/AllPackets.h +++ b/src/server/game/Server/Packets/AllPackets.h @@ -24,6 +24,7 @@ #include "GuildPackets.h" #include "NPCPackets.h" #include "MiscPackets.h" +#include "PetPackets.h" #include "QueryPackets.h" #include "QuestPackets.h" #include "SpellPackets.h" diff --git a/src/server/game/Server/Packets/PetPackets.cpp b/src/server/game/Server/Packets/PetPackets.cpp new file mode 100755 index 00000000000..ce2c2950719 --- /dev/null +++ b/src/server/game/Server/Packets/PetPackets.cpp @@ -0,0 +1,23 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "PetPackets.h" + +void WorldPackets::Pet::DismissCritter::Read() +{ + _worldPacket >> CritterGUID; +} diff --git a/src/server/game/Server/Packets/PetPackets.h b/src/server/game/Server/Packets/PetPackets.h new file mode 100755 index 00000000000..120cdade5a6 --- /dev/null +++ b/src/server/game/Server/Packets/PetPackets.h @@ -0,0 +1,39 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef PetPackets_h__ +#define PetPackets_h__ + +#include "Packet.h" +#include "ObjectGuid.h" + +namespace WorldPackets +{ + namespace Pet + { + class DismissCritter final : public ClientPacket + { + public: + DismissCritter(WorldPacket&& packet) : ClientPacket(CMSG_DISMISS_CRITTER, std::move(packet)) { } + + void Read() override; + + ObjectGuid CritterGUID; + }; + } +} +#endif // PetPackets_h__ diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index a7ac4260a8d..e6a857eb9f0 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -141,6 +141,12 @@ namespace WorldPackets class OpeningCinematic; class WorldTeleport; } + + namespace Pet + { + class DismissCritter; + } + namespace Query { class QueryCreature; @@ -905,7 +911,7 @@ class TC_GAME_API WorldSession void HandleSetActionBarToggles(WorldPacket& recvData); void HandleTotemDestroyed(WorldPackets::Totem::TotemDestroyed& totemDestroyed); - void HandleDismissCritter(WorldPacket& recvData); + void HandleDismissCritter(WorldPackets::Pet::DismissCritter& dismissCritter); //Battleground void HandleBattlemasterHelloOpcode(WorldPacket& recvData); |