using Content.Shared.Sound; using Robust.Shared.Audio; using Robust.Shared.GameObjects; using Robust.Shared.Network; namespace Content.Server.Sound.Components { [RegisterComponent] public class LoopingLoopingSoundComponent : SharedLoopingSoundComponent { /// /// Stops all sounds. /// /// User that will be affected. public void StopAllSounds(INetChannel? channel) { SendNetworkMessage(new StopAllSoundsMessage(), channel); } /// /// Stops a certain scheduled sound from playing. /// /// User that will be affected. public void StopScheduledSound(string filename, INetChannel? channel) { SendNetworkMessage(new StopSoundScheduleMessage() {Filename = filename}, channel); } /// /// Adds an scheduled sound to be played. /// /// User that will be affected. public void AddScheduledSound(ScheduledSound schedule, INetChannel? channel) { SendNetworkMessage(new ScheduledSoundMessage() {Schedule = schedule}, channel); } public override void StopAllSounds() { StopAllSounds(null); } public override void StopScheduledSound(string filename) { StopScheduledSound(filename, null); } public override void AddScheduledSound(ScheduledSound schedule) { AddScheduledSound(schedule, null); } /// /// Play an audio file following the entity. /// /// The resource path to the OGG Vorbis file to play. /// User that will be affected. public void Play(string filename, AudioParams? audioParams = null, INetChannel? channel = null) { AddScheduledSound(new ScheduledSound() { Filename = filename, AudioParams = audioParams, }, channel); } } }