From d61704df33dd003f1eff870f9a7dbbcb8424994b Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Tue, 17 Jun 2025 16:52:11 -0400 Subject: [PATCH] Convert `AtmosphereSystem` sound path strings to `SoundSpecifier`s (#38403) * Convert AtmosphereSystem sound path strings to SoundSpecifiers * Convert to SoundCollections --- .../AtmosphereSystem.HighPressureDelta.cs | 9 ++++++--- .../Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs | 9 ++++++--- Resources/Prototypes/SoundCollections/atmospherics.yml | 10 ++++++++++ 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index cdf7018e23..9720cd38a8 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -7,6 +7,7 @@ using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; +using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Utility; @@ -14,12 +15,14 @@ namespace Content.Server.Atmos.EntitySystems { public sealed partial class AtmosphereSystem { + private static readonly ProtoId DefaultSpaceWindSounds = "SpaceWind"; + private const int SpaceWindSoundCooldownCycles = 75; private int _spaceWindSoundCooldown = 0; [ViewVariables(VVAccess.ReadWrite)] - public string? SpaceWindSound { get; private set; } = "/Audio/Effects/space_wind.ogg"; + public SoundSpecifier? SpaceWindSound { get; private set; } = new SoundCollectionSpecifier(DefaultSpaceWindSounds, AudioParams.Default.WithVariation(0.125f)); private readonly HashSet> _activePressures = new(8); @@ -105,10 +108,10 @@ namespace Content.Server.Atmos.EntitySystems // Don't play the space wind sound on tiles that are on fire... if (tile.PressureDifference > 15 && !tile.Hotspot.Valid) { - if (_spaceWindSoundCooldown == 0 && !string.IsNullOrEmpty(SpaceWindSound)) + if (_spaceWindSoundCooldown == 0 && SpaceWindSound != null) { var coordinates = _mapSystem.ToCenterCoordinates(tile.GridIndex, tile.GridIndices); - _audio.PlayPvs(SpaceWindSound, coordinates, AudioParams.Default.WithVariation(0.125f).WithVolume(MathHelper.Clamp(tile.PressureDifference / 10, 10, 100))); + _audio.PlayPvs(SpaceWindSound, coordinates, SpaceWindSound.Params.WithVolume(MathHelper.Clamp(tile.PressureDifference / 10, 10, 100))); } } diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs index 70f91a5dc1..613fcd14a6 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs @@ -7,12 +7,15 @@ using Content.Shared.Database; using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Map.Components; +using Robust.Shared.Prototypes; using Robust.Shared.Random; namespace Content.Server.Atmos.EntitySystems { public sealed partial class AtmosphereSystem { + private static readonly ProtoId DefaultHotspotSounds = "AtmosHotspot"; + [Dependency] private readonly DecalSystem _decalSystem = default!; [Dependency] private readonly IRobustRandom _random = default!; @@ -21,7 +24,7 @@ namespace Content.Server.Atmos.EntitySystems private int _hotspotSoundCooldown = 0; [ViewVariables(VVAccess.ReadWrite)] - public string? HotspotSound { get; private set; } = "/Audio/Effects/fire.ogg"; + public SoundSpecifier? HotspotSound { get; private set; } = new SoundCollectionSpecifier(DefaultHotspotSounds); private void ProcessHotspot( Entity ent, @@ -105,14 +108,14 @@ namespace Content.Server.Atmos.EntitySystems if (tile.Hotspot.Temperature > tile.MaxFireTemperatureSustained) tile.MaxFireTemperatureSustained = tile.Hotspot.Temperature; - if (_hotspotSoundCooldown++ == 0 && !string.IsNullOrEmpty(HotspotSound)) + if (_hotspotSoundCooldown++ == 0 && HotspotSound != null) { var coordinates = _mapSystem.ToCenterCoordinates(tile.GridIndex, tile.GridIndices); // A few details on the audio parameters for fire. // The greater the fire state, the lesser the pitch variation. // The greater the fire state, the greater the volume. - _audio.PlayPvs(HotspotSound, coordinates, AudioParams.Default.WithVariation(0.15f/tile.Hotspot.State).WithVolume(-5f + 5f * tile.Hotspot.State)); + _audio.PlayPvs(HotspotSound, coordinates, HotspotSound.Params.WithVariation(0.15f / tile.Hotspot.State).WithVolume(-5f + 5f * tile.Hotspot.State)); } if (_hotspotSoundCooldown > HotspotSoundCooldownCycles) diff --git a/Resources/Prototypes/SoundCollections/atmospherics.yml b/Resources/Prototypes/SoundCollections/atmospherics.yml index 20f359690e..5778ac2647 100644 --- a/Resources/Prototypes/SoundCollections/atmospherics.yml +++ b/Resources/Prototypes/SoundCollections/atmospherics.yml @@ -4,3 +4,13 @@ - /Audio/Effects/squeak1.ogg - /Audio/Effects/squeak2.ogg - /Audio/Effects/squeak3.ogg + +- type: soundCollection + id: SpaceWind + files: + - /Audio/Effects/space_wind.ogg + +- type: soundCollection + id: AtmosHotspot + files: + - /Audio/Effects/fire.ogg -- 2.51.2