Files
tbd-station-14/Content.Server/Construction/Completions/PlaySound.cs
2024-08-18 21:01:43 -06:00

31 lines
1.1 KiB
C#

using Content.Shared.Construction;
using JetBrains.Annotations;
using Robust.Shared.Audio;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Random;
namespace Content.Server.Construction.Completions
{
[UsedImplicitly]
[DataDefinition]
public sealed partial class PlaySound : IGraphAction
{
[DataField("sound", required: true)] public SoundSpecifier Sound { get; private set; } = default!;
[DataField("AudioParams")]
public AudioParams AudioParams = AudioParams.Default;
[ViewVariables(VVAccess.ReadWrite)]
[DataField("variation")]
public float Variation = 0.125f;
public void PerformAction(EntityUid uid, EntityUid? userUid, IEntityManager entityManager)
{
var scale = (float) IoCManager.Resolve<IRobustRandom>().NextGaussian(1, Variation);
if (entityManager.TryGetComponent<TransformComponent>(uid, out var xform))
entityManager.EntitySysManager.GetEntitySystem<SharedAudioSystem>()
.PlayPvs(Sound, xform.Coordinates, AudioParams.WithPitchScale(scale));
}
}
}