diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 16 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Object.h | 9 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.h | 14 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 |
5 files changed, 37 insertions, 11 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index cffc9b1eae7..f86485a44bb 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -3561,7 +3561,7 @@ void WorldObject::MovePositionToFirstCollision(Position &pos, float dist, float } } -void WorldObject::PlayDistanceSound(uint32 soundId, Player* target /*= nullptr*/) +void WorldObject::PlayDistanceSound(uint32 soundId, Player const* target /*= nullptr*/) const { if (target) target->SendDirectMessage(WorldPackets::Misc::PlaySpeakerbotSound(GetGUID(), soundId).Write()); @@ -3569,7 +3569,15 @@ void WorldObject::PlayDistanceSound(uint32 soundId, Player* target /*= nullptr*/ SendMessageToSet(WorldPackets::Misc::PlaySpeakerbotSound(GetGUID(), soundId).Write(), true); } -void WorldObject::PlayDirectSound(uint32 soundId, Player* target /*= nullptr*/, uint32 broadcastTextId /*= 0*/) +void WorldObject::StopDistanceSound(Player const* target /*= nullptr*/) const +{ + if (target) + target->SendDirectMessage(WorldPackets::Misc::StopSpeakerbotSound(GetGUID()).Write()); + else + SendMessageToSet(WorldPackets::Misc::StopSpeakerbotSound(GetGUID()).Write(), true); +} + +void WorldObject::PlayDirectSound(uint32 soundId, Player const* target /*= nullptr*/, uint32 broadcastTextId /*= 0*/) const { if (target) target->SendDirectMessage(WorldPackets::Misc::PlaySound(GetGUID(), soundId, broadcastTextId).Write()); @@ -3577,7 +3585,7 @@ void WorldObject::PlayDirectSound(uint32 soundId, Player* target /*= nullptr*/, SendMessageToSet(WorldPackets::Misc::PlaySound(GetGUID(), soundId, broadcastTextId).Write(), true); } -void WorldObject::PlayDirectMusic(uint32 musicId, Player* target /*= nullptr*/) +void WorldObject::PlayDirectMusic(uint32 musicId, Player const* target /*= nullptr*/) const { if (target) target->SendDirectMessage(WorldPackets::Misc::PlayMusic(musicId).Write()); @@ -3585,7 +3593,7 @@ void WorldObject::PlayDirectMusic(uint32 musicId, Player* target /*= nullptr*/) SendMessageToSet(WorldPackets::Misc::PlayMusic(musicId).Write(), true); } -void WorldObject::PlayObjectSound(int32 soundKitId, ObjectGuid targetObjectGUID, Player* target /*= nullptr*/, int32 broadcastTextId /*= 0*/) +void WorldObject::PlayObjectSound(int32 soundKitId, ObjectGuid targetObjectGUID, Player const* target /*= nullptr*/, int32 broadcastTextId /*= 0*/) const { WorldPackets::Misc::PlayObjectSound pkt; pkt.TargetObjectGUID = targetObjectGUID; diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index fbf52fc0a60..cbb0486ea90 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -578,10 +578,11 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation virtual uint8 GetLevelForTarget(WorldObject const* /*target*/) const { return 1; } - void PlayDistanceSound(uint32 soundId, Player* target = nullptr); - void PlayDirectSound(uint32 soundId, Player* target = nullptr, uint32 broadcastTextId = 0); - void PlayDirectMusic(uint32 musicId, Player* target = nullptr); - void PlayObjectSound(int32 soundKitId, ObjectGuid targetObject, Player* target = nullptr, int32 broadcastTextId = 0); + void PlayDistanceSound(uint32 soundId, Player const* target = nullptr) const; + void StopDistanceSound(Player const* target = nullptr) const; + void PlayDirectSound(uint32 soundId, Player const* target = nullptr, uint32 broadcastTextId = 0) const; + void PlayDirectMusic(uint32 musicId, Player const* target = nullptr) const; + void PlayObjectSound(int32 soundKitId, ObjectGuid targetObject, Player const* target = nullptr, int32 broadcastTextId = 0) const; void AddObjectToRemoveList(); diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index 41f012e26a8..5e7c646d529 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -525,6 +525,13 @@ WorldPacket const* WorldPackets::Misc::PlaySpeakerbotSound::Write() return &_worldPacket; } +WorldPacket const* WorldPackets::Misc::StopSpeakerbotSound::Write() +{ + _worldPacket << SourceObjectGUID; + + 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 040c2a6e3c2..10aeacead81 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -654,10 +654,9 @@ namespace WorldPackets int32 BroadcastTextID = 0; }; - class TC_GAME_API PlaySpeakerbotSound final : public ServerPacket + class 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) { } @@ -667,6 +666,17 @@ namespace WorldPackets int32 SoundKitID = 0; }; + class StopSpeakerbotSound final : public ServerPacket + { + public: + StopSpeakerbotSound(ObjectGuid const& sourceObjectGUID) + : ServerPacket(SMSG_STOP_SPEAKERBOT_SOUND, 16), SourceObjectGUID(sourceObjectGUID) { } + + WorldPacket const* Write() override; + + ObjectGuid SourceObjectGUID; + }; + 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 74adcc445b8..80a289eb9c4 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -2073,7 +2073,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_STARTER_BUILD_ACTIVATE_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_ELAPSED_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_SPEAKERBOT_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_SPEAKERBOT_SOUND, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_STREAMING_MOVIES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUGGEST_INVITE_INFORM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); |