From 113202ea488ebbdb5eb5996533572d587bda39ff Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Tue, 7 Apr 2020 15:51:25 +0200 Subject: [PATCH] Core/Packets: converted SMSG_PLAY_MUSIC to packet class and corrected packet structure --- src/server/game/Entities/Object/Object.cpp | 8 +++----- src/server/game/Maps/Map.cpp | 15 +++------------ src/server/game/Server/Packets/MiscPackets.cpp | 8 ++++++++ src/server/game/Server/Packets/MiscPackets.h | 12 ++++++++++++ src/server/game/Spells/SpellEffects.cpp | 12 +++++------- 5 files changed, 31 insertions(+), 24 deletions(-) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index e1bf2e30f85..6956a1677bf 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2626,14 +2626,12 @@ void WorldObject::PlayDirectSound(uint32 sound_id, Player* target /*= nullptr*/) SendMessageToSet(packet.Write(), true); } -void WorldObject::PlayDirectMusic(uint32 music_id, Player* target /*= nullptr*/) +void WorldObject::PlayDirectMusic(uint32 musicId, Player* target /*= nullptr*/) { - WorldPacket data(SMSG_PLAY_MUSIC, 4); - data << uint32(music_id); if (target) - target->SendDirectMessage(&data); + target->SendDirectMessage(WorldPackets::Misc::PlayMusic(musicId, GetGUID()).Write()); else - SendMessageToSet(&data, true); + SendMessageToSet(WorldPackets::Misc::PlayMusic(musicId, GetGUID()).Write(), true); } void WorldObject::DestroyForNearbyPlayers() diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index cd6a34bb3ae..5bed6a3b227 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -32,6 +32,7 @@ #include "MapInstanced.h" #include "MapManager.h" #include "MMapFactory.h" +#include "MiscPackets.h" #include "MotionMaster.h" #include "ObjectAccessor.h" #include "ObjectGridLoader.h" @@ -4674,12 +4675,7 @@ void Map::SendZoneDynamicInfo(uint32 zoneId, Player* player) const return; if (uint32 music = itr->second.MusicId) - { - WorldPacket data(SMSG_PLAY_MUSIC, 4); - data << uint32(music); - data << uint64(player->GetGUID()); - player->SendDirectMessage(&data); - } + player->SendDirectMessage(WorldPackets::Misc::PlayMusic(music, player->GetGUID()).Write()); SendZoneWeather(itr->second, player); @@ -4733,12 +4729,7 @@ void Map::SetZoneMusic(uint32 zoneId, uint32 musicId) for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) if (Player* player = itr->GetSource()) if (player->GetZoneId() == zoneId && !player->HasAuraType(SPELL_AURA_FORCE_WEATHER)) - { - WorldPacket data(SMSG_PLAY_MUSIC, 4); - data << uint32(musicId); - data << uint64(player->GetGUID()); - player->SendDirectMessage(&data); - } + player->SendDirectMessage(WorldPackets::Misc::PlayMusic(musicId, player->GetGUID()).Write); } } diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index 3d6c69e7a84..010b0afce43 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -154,3 +154,11 @@ WorldPacket const* WorldPackets::Misc::PlayObjectSound::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::Misc::PlayMusic::Write() +{ + _worldPacket << uint32(SoundKitID); + _worldPacket << SourceObjectGUID; + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 535981f51b3..ce29fe83704 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -177,6 +177,18 @@ namespace WorldPackets ObjectGuid TargetObjectGUID; uint32 SoundKitID = 0; }; + + class PlayMusic final : public ServerPacket + { + public: + PlayMusic() : ServerPacket(SMSG_PLAY_MUSIC, 4 + 8) { } + PlayMusic(uint32 soundKitID, ObjectGuid sourceObjectGuid) : ServerPacket(SMSG_PLAY_MUSIC, 4), SoundKitID(soundKitID), SourceObjectGUID(sourceObjectGuid) { } + + WorldPacket const* Write() override; + + uint32 SoundKitID = 0; + ObjectGuid SourceObjectGUID; + }; } } diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 6240d016860..73664deacef 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -38,6 +38,7 @@ #include "Language.h" #include "Log.h" #include "LootMgr.h" +#include "MiscPackets.h" #include "MotionMaster.h" #include "ObjectAccessor.h" #include "ObjectMgr.h" @@ -5405,18 +5406,15 @@ void Spell::EffectPlayMusic(SpellEffIndex effIndex) if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) return; - uint32 soundid = m_spellInfo->Effects[effIndex].MiscValue; + uint32 soundId = m_spellInfo->Effects[effIndex].MiscValue; - if (!sSoundEntriesStore.LookupEntry(soundid)) + if (!sSoundEntriesStore.LookupEntry(soundId)) { - TC_LOG_ERROR("spells", "EffectPlayMusic: Sound (Id: %u) does not exist in spell %u.", soundid, m_spellInfo->Id); + TC_LOG_ERROR("spells", "EffectPlayMusic: Sound (Id: %u) does not exist in spell %u.", soundId, m_spellInfo->Id); return; } - WorldPacket data(SMSG_PLAY_MUSIC, 4); - data << uint32(soundid); - data << uint64(unitTarget->GetGUID()); - unitTarget->ToPlayer()->SendDirectMessage(&data); + unitTarget->ToPlayer()->SendDirectMessage(WorldPackets::Misc::PlayMusic(soundId, unitTarget->GetGUID()).Write()); } void Spell::EffectSpecCount(SpellEffIndex /*effIndex*/)