aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarbenium <carbenium@outlook.com>2016-02-01 20:14:10 +0100
committerCarbenium <carbenium@outlook.com>2016-02-01 20:14:10 +0100
commit6fbfc61de1931f1e70aee80249535436e368c113 (patch)
tree6e9b6d972b5f5e78053009fc654d8be7d6716bfa
parenta174fa4d7b0b76f47239a76a8c4c36d6090217da (diff)
Core/PacketIO: Updated and enabled CMSG_DISMISS_CRITTER
-rw-r--r--src/server/game/Handlers/PetHandler.cpp12
-rw-r--r--src/server/game/Server/Packets/AllPackets.h1
-rw-r--r--src/server/game/Server/Packets/PartyPackets.cpp2
-rw-r--r--src/server/game/Server/Packets/PetPackets.cpp24
-rw-r--r--src/server/game/Server/Packets/PetPackets.h39
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rw-r--r--src/server/game/Server/WorldSession.h7
7 files changed, 76 insertions, 11 deletions
diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp
index 83792e6fc05..20c31930de6 100644
--- a/src/server/game/Handlers/PetHandler.cpp
+++ b/src/server/game/Handlers/PetHandler.cpp
@@ -33,22 +33,18 @@
#include "SpellHistory.h"
#include "SpellInfo.h"
#include "Player.h"
+#include "PetPackets.h"
#include "SpellPackets.h"
#include "QueryPackets.h"
-void WorldSession::HandleDismissCritter(WorldPacket& recvData)
+void WorldSession::HandleDismissCritter(WorldPackets::Pet::DismissCritter& packet)
{
- ObjectGuid guid;
- recvData >> guid;
-
- TC_LOG_DEBUG("network", "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("network", "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 186d702cc8b..f9d06a56286 100644
--- a/src/server/game/Server/Packets/AllPackets.h
+++ b/src/server/game/Server/Packets/AllPackets.h
@@ -50,6 +50,7 @@
#include "NPCPackets.h"
#include "PacketUtilities.h"
#include "PartyPackets.h"
+#include "PetPackets.h"
#include "PetitionPackets.h"
#include "QueryPackets.h"
#include "QuestPackets.h"
diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp
index e93c0030cd5..01a2da40c7b 100644
--- a/src/server/game/Server/Packets/PartyPackets.cpp
+++ b/src/server/game/Server/Packets/PartyPackets.cpp
@@ -503,7 +503,7 @@ void WorldPackets::Party::PartyMemberStats::Initialize(Player const* player)
// Pet
if (player->GetPet())
{
- Pet* pet = player->GetPet();
+ ::Pet* pet = player->GetPet();
MemberStats.PetStats = boost::in_place();
diff --git a/src/server/game/Server/Packets/PetPackets.cpp b/src/server/game/Server/Packets/PetPackets.cpp
new file mode 100644
index 00000000000..fb0d9beff83
--- /dev/null
+++ b/src/server/game/Server/Packets/PetPackets.cpp
@@ -0,0 +1,24 @@
+#include "PetPackets.h"
+/*
+ * Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
+ *
+ * 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 100644
index 00000000000..69d251eb76c
--- /dev/null
+++ b/src/server/game/Server/Packets/PetPackets.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
+ *
+ * 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/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index a40564aa1f2..b9767a7299e 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -320,7 +320,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_DF_SET_ROLES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgSetRolesOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_DF_TELEPORT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgTeleportOpcode );
DEFINE_HANDLER(CMSG_DISCARDED_TIME_SYNC_ACKS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_DISMISS_CRITTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleDismissCritter );
+ DEFINE_HANDLER(CMSG_DISMISS_CRITTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Pet::DismissCritter, &WorldSession::HandleDismissCritter);
DEFINE_HANDLER(CMSG_DO_MASTER_LOOT_ROLL, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_DO_READY_CHECK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::DoReadyCheck, &WorldSession::HandleDoReadyCheckOpcode);
DEFINE_HANDLER(CMSG_DUEL_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Duel::DuelResponse, &WorldSession::HandleDuelResponseOpcode);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 529aa3a56d2..b539ff4391b 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -476,6 +476,11 @@ namespace WorldPackets
class ClearRaidMarker;
}
+ namespace Pet
+ {
+ class DismissCritter;
+ }
+
namespace Petition
{
class DeclinePetition;
@@ -1450,7 +1455,7 @@ class WorldSession
void HandleSetActionBarToggles(WorldPackets::Character::SetActionBarToggles& packet);
void HandleTotemDestroyed(WorldPackets::Totem::TotemDestroyed& totemDestroyed);
- void HandleDismissCritter(WorldPacket& recvData);
+ void HandleDismissCritter(WorldPackets::Pet::DismissCritter& dismissCritter);
//Battleground
void HandleBattlemasterHelloOpcode(WorldPackets::NPC::Hello& hello);