using Content.Shared.GameObjects.Components.Sound; using Robust.Shared.Audio; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.Network; namespace Content.Server.GameObjects.Components.Sound { [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); } } }