aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoName <322016+Faq@users.noreply.github.com>2020-04-08 22:35:01 +0300
committerGitHub <noreply@github.com>2020-04-08 21:35:01 +0200
commit566dcfc5181b91f884ad4e6c917afce70bf67fb8 (patch)
tree89528356aab74ebe13bb62b012bcfa511e480acd
parent31018c36527755166d8a297ac9e6c98a66f014ae (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.cpp12
-rw-r--r--src/server/game/Server/Packets/AllPackets.h1
-rwxr-xr-xsrc/server/game/Server/Packets/PetPackets.cpp23
-rwxr-xr-xsrc/server/game/Server/Packets/PetPackets.h39
-rw-r--r--src/server/game/Server/WorldSession.h8
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);