From 47ac0004c2b61ecc55a301cf231ced64d765950e Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Sun, 23 Aug 2020 23:09:34 +0200 Subject: [PATCH] Core/Packets: converted SMSG_DESTROY_OBJECT to packet class --- src/server/game/Entities/Object/Object.cpp | 10 +++++----- src/server/game/Entities/Object/Object.h | 2 +- src/server/game/Server/Packets/MiscPackets.cpp | 8 ++++++++ src/server/game/Server/Packets/MiscPackets.h | 11 +++++++++++ 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index aef222f3107..3d1cef0863e 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -263,16 +263,16 @@ void Object::BuildOutOfRangeUpdateBlock(UpdateData* data) const data->AddOutOfRangeGUID(GetGUID()); } -void Object::DestroyForPlayer(Player* target, bool onDeath /*= false*/) const +void Object::DestroyForPlayer(Player* target, bool isDead /*= false*/) const { ASSERT(target); - WorldPacket data(SMSG_DESTROY_OBJECT, 8 + 1); - data << uint64(GetGUID()); + WorldPackets::Misc::DestroyObject packet; + packet.Guid = GetGUID(); //! If the following bool is true, the client will call "void CGUnit_C::OnDeath()" for this object. //! OnDeath() does for eg trigger death animation and interrupts certain spells/missiles/auras/sounds... - data << uint8(onDeath ? 1 : 0); - target->SendDirectMessage(&data); + packet.IsDead = isDead; + target->SendDirectMessage(packet.Write()); } int32 Object::GetInt32Value(uint16 index) const diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index fb82b3341b1..97c00163dc2 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -89,7 +89,7 @@ class TC_GAME_API Object void BuildValuesUpdateBlockForPlayer(UpdateData* data, Player* target) const; void BuildOutOfRangeUpdateBlock(UpdateData* data) const; - virtual void DestroyForPlayer(Player* target, bool onDeath = false) const; + virtual void DestroyForPlayer(Player* target, bool isDead = false) const; int32 GetInt32Value(uint16 index) const; uint32 GetUInt32Value(uint16 index) const; diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index 3a3791bd5fc..ac3f15aee11 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -241,3 +241,11 @@ WorldPacket const* WorldPackets::Misc::StartTimer::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::Misc::DestroyObject::Write() +{ + _worldPacket << Guid; + _worldPacket << uint8(IsDead); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 1d4cd3d7772..1f09a259408 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -295,6 +295,17 @@ namespace WorldPackets int32 TimeLeft = 0; int32 TotalTime = 0; }; + + class DestroyObject final : public ServerPacket + { + public: + DestroyObject() : ServerPacket(SMSG_DESTROY_OBJECT, 9) { } + + WorldPacket const* Write() override; + + ObjectGuid Guid; + bool IsDead = false; + }; } }