From 7ee0e2ad08fa73a1f71fe12bbac293c9a24dc0c5 Mon Sep 17 00:00:00 2001 From: joschiwald Date: Sat, 3 Dec 2016 16:45:30 +0100 Subject: Core/Packets: added SMSG_PLAY_SPEAKERBOT_SOUND packet class --- src/server/game/Entities/Object/Object.cpp | 15 ++++++--------- src/server/game/Entities/Object/Object.h | 4 ++-- src/server/game/Server/Packets/MiscPackets.cpp | 8 ++++++++ src/server/game/Server/Packets/MiscPackets.h | 13 +++++++++++++ src/server/game/Server/Protocol/Opcodes.cpp | 2 +- 5 files changed, 30 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 7efce3d5976..edd737b1771 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2978,23 +2978,20 @@ bool WorldObject::IsInPhase(WorldObject const* obj) const return Trinity::Containers::Intersects(_phases.begin(), _phases.end(), obj->GetPhases().begin(), obj->GetPhases().end()); } -void WorldObject::PlayDistanceSound(uint32 sound_id, Player* target /*= NULL*/) +void WorldObject::PlayDistanceSound(uint32 soundId, Player* target /*= nullptr*/) { - WorldPacket data(SMSG_PLAY_SPEAKERBOT_SOUND, 4 + 8); - data << uint32(sound_id); - data << GetGUID(); if (target) - target->SendDirectMessage(&data); + target->SendDirectMessage(WorldPackets::Misc::PlaySpeakerbotSound(GetGUID(), soundId).Write()); else - SendMessageToSet(&data, true); + SendMessageToSet(WorldPackets::Misc::PlaySpeakerbotSound(GetGUID(), soundId).Write(), true); } -void WorldObject::PlayDirectSound(uint32 sound_id, Player* target /*= NULL*/) +void WorldObject::PlayDirectSound(uint32 soundId, Player* target /*= nullptr*/) { if (target) - target->SendDirectMessage(WorldPackets::Misc::PlaySound(GetGUID(), sound_id).Write()); + target->SendDirectMessage(WorldPackets::Misc::PlaySound(GetGUID(), soundId).Write()); else - SendMessageToSet(WorldPackets::Misc::PlaySound(GetGUID(), sound_id).Write(), true); + SendMessageToSet(WorldPackets::Misc::PlaySound(GetGUID(), soundId).Write(), true); } void WorldObject::DestroyForNearbyPlayers() diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 082f3dde6d7..bbab30659b2 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -610,8 +610,8 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation virtual uint8 getLevelForTarget(WorldObject const* /*target*/) const { return 1; } - void PlayDistanceSound(uint32 sound_id, Player* target = NULL); - void PlayDirectSound(uint32 sound_id, Player* target = NULL); + void PlayDistanceSound(uint32 soundId, Player* target = nullptr); + void PlayDirectSound(uint32 soundId, Player* target = nullptr); virtual void SaveRespawnTime() { } void AddObjectToRemoveList(); diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index 6cde22d5130..dbd8771d9f2 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -442,6 +442,14 @@ WorldPacket const* WorldPackets::Misc::PlaySound::Write() return &_worldPacket; } +WorldPacket const* WorldPackets::Misc::PlaySpeakerbotSound::Write() +{ + _worldPacket << SourceObjectGUID; + _worldPacket << int32(SoundKitID); + + return &_worldPacket; +} + void WorldPackets::Misc::FarSight::Read() { Enable = _worldPacket.ReadBit(); diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 7985b0085c5..47dc8ea29eb 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -611,6 +611,19 @@ namespace WorldPackets int32 SoundKitID = 0; }; + class TC_GAME_API PlaySpeakerbotSound final : public ServerPacket + { + public: + PlaySpeakerbotSound() : ServerPacket(SMSG_PLAY_SPEAKERBOT_SOUND, 20) { } + PlaySpeakerbotSound(ObjectGuid const& sourceObjectGUID, int32 soundKitID) + : ServerPacket(SMSG_PLAY_SPEAKERBOT_SOUND, 20), SourceObjectGUID(sourceObjectGUID), SoundKitID(soundKitID) { } + + WorldPacket const* Write() override; + + ObjectGuid SourceObjectGUID; + int32 SoundKitID = 0; + }; + class CompleteCinematic final : public ClientPacket { public: diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 9a04e018908..fc636fa7f87 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1505,7 +1505,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_ORPHAN_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SCENE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SOUND, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SPEAKERBOT_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SPEAKERBOT_SOUND, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SPELL_VISUAL, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_SPELL_VISUAL_KIT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_TIME_WARNING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); -- cgit v1.2.3