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 SoundComponent : SharedSoundComponent
{
///
/// 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);
}
}
}