From daef343c2c8e3312fe231bc1b22e05f794f22d83 Mon Sep 17 00:00:00 2001 From: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> Date: Thu, 13 Jan 2022 15:18:17 +0100 Subject: [PATCH] Fires now play a sound effect. (#6138) --- .../Atmos/EntitySystems/AirtightSystem.cs | 5 --- .../EntitySystems/AtmosphereSystem.CVars.cs | 2 - .../EntitySystems/AtmosphereSystem.Gases.cs | 37 +++++++++++++++++- .../AtmosphereSystem.HighPressureDelta.cs | 19 +++++---- .../EntitySystems/AtmosphereSystem.Hotspot.cs | 26 ++++++++++++ Content.Shared/CCVar/CCVars.cs | 6 --- Resources/Audio/Effects/fire.ogg | Bin 0 -> 24864 bytes Resources/Audio/Effects/license.txt | 2 + 8 files changed, 76 insertions(+), 21 deletions(-) create mode 100644 Resources/Audio/Effects/fire.ogg diff --git a/Content.Server/Atmos/EntitySystems/AirtightSystem.cs b/Content.Server/Atmos/EntitySystems/AirtightSystem.cs index 50849a64b6..4199bcea69 100644 --- a/Content.Server/Atmos/EntitySystems/AirtightSystem.cs +++ b/Content.Server/Atmos/EntitySystems/AirtightSystem.cs @@ -20,7 +20,6 @@ namespace Content.Server.Atmos.EntitySystems { SubscribeLocalEvent(OnAirtightInit); SubscribeLocalEvent(OnAirtightShutdown); - SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnAirtightPositionChanged); SubscribeLocalEvent(OnAirtightRotated); } @@ -58,10 +57,6 @@ namespace Content.Server.Atmos.EntitySystems RaiseLocalEvent(new AirtightChanged(airtight)); } - private void OnMapInit(EntityUid uid, AirtightComponent airtight, MapInitEvent args) - { - } - private void OnAirtightPositionChanged(EntityUid uid, AirtightComponent airtight, ref AnchorStateChangedEvent args) { var xform = EntityManager.GetComponent(uid); diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs index df9fbd7c1e..067c4581ab 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs @@ -9,7 +9,6 @@ namespace Content.Server.Atmos.EntitySystems [Dependency] private readonly IConfigurationManager _cfg = default!; public bool SpaceWind { get; private set; } - public string? SpaceWindSound { get; private set; } public bool MonstermosEqualization { get; private set; } public bool MonstermosDepressurization { get; private set; } public bool MonstermosRipTiles { get; private set; } @@ -24,7 +23,6 @@ namespace Content.Server.Atmos.EntitySystems private void InitializeCVars() { _cfg.OnValueChanged(CCVars.SpaceWind, value => SpaceWind = value, true); - _cfg.OnValueChanged(CCVars.SpaceWindSound, value => SpaceWindSound = value, true); _cfg.OnValueChanged(CCVars.MonstermosEqualization, value => MonstermosEqualization = value, true); _cfg.OnValueChanged(CCVars.MonstermosDepressurization, value => MonstermosDepressurization = value, true); _cfg.OnValueChanged(CCVars.MonstermosRipTiles, value => MonstermosRipTiles = value, true); diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs index 8fa2447e36..8c4136f184 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs @@ -21,6 +21,10 @@ namespace Content.Server.Atmos.EntitySystems /// List of gas reactions ordered by priority. /// public IEnumerable GasReactions => _gasReactions!; + + /// + /// Cached array of gas specific heats. + /// public float[] GasSpecificHeats => _gasSpecificHeats; private void InitializeGases() @@ -36,11 +40,17 @@ namespace Content.Server.Atmos.EntitySystems } } + /// + /// Calculates the heat capacity for a gas mixture. + /// public float GetHeatCapacity(GasMixture mixture) { return GetHeatCapacityCalculation(mixture.Moles, mixture.Immutable); } + /// + /// Calculates the heat capacity for a gas mixture, using the archived values. + /// public float GetHeatCapacityArchived(GasMixture mixture) { return GetHeatCapacityCalculation(mixture.MolesArchived, mixture.Immutable); @@ -60,16 +70,26 @@ namespace Content.Server.Atmos.EntitySystems return MathF.Max(NumericsHelpers.HorizontalAdd(tmp), Atmospherics.MinimumHeatCapacity); } + /// + /// Calculates the thermal energy for a gas mixture. + /// public float GetThermalEnergy(GasMixture mixture) { return mixture.Temperature * GetHeatCapacity(mixture); } + /// + /// Calculates the thermal energy for a gas mixture, using a cached heat capacity value. + /// public float GetThermalEnergy(GasMixture mixture, float cachedHeatCapacity) { return mixture.Temperature * cachedHeatCapacity; } + /// + /// Merges the gas mixture into the gas mixture. + /// The gas mixture is not modified by this method. + /// public void Merge(GasMixture receiver, GasMixture giver) { if (receiver.Immutable) return; @@ -88,6 +108,9 @@ namespace Content.Server.Atmos.EntitySystems NumericsHelpers.Add(receiver.Moles, giver.Moles); } + /// + /// Shares gas between two gas mixtures. Part of LINDA. + /// public float Share(GasMixture receiver, GasMixture sharer, int atmosAdjacentTurfs) { var temperatureDelta = receiver.TemperatureArchived - sharer.TemperatureArchived; @@ -169,6 +192,9 @@ namespace Content.Server.Atmos.EntitySystems } + /// + /// Shares temperature between two mixtures, taking a conduction coefficient into account. + /// public float TemperatureShare(GasMixture receiver, GasMixture sharer, float conductionCoefficient) { var temperatureDelta = receiver.TemperatureArchived - sharer.TemperatureArchived; @@ -192,6 +218,9 @@ namespace Content.Server.Atmos.EntitySystems return sharer.Temperature; } + /// + /// Shares temperature between a gas mixture and an abstract sharer, taking a conduction coefficient into account. + /// public float TemperatureShare(GasMixture receiver, float conductionCoefficient, float sharerTemperature, float sharerHeatCapacity) { var temperatureDelta = receiver.TemperatureArchived - sharerTemperature; @@ -271,6 +300,9 @@ namespace Content.Server.Atmos.EntitySystems return true; } + /// + /// Scrubs specified gases from a gas mixture into a gas mixture. + /// public void ScrubInto(GasMixture mixture, GasMixture destination, IReadOnlyCollection filterGases) { var buffer = new GasMixture(mixture.Volume){Temperature = mixture.Temperature}; @@ -284,6 +316,9 @@ namespace Content.Server.Atmos.EntitySystems Merge(destination, buffer); } + /// + /// Performs reactions for a given gas mixture on an optional holder. + /// public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder) { var reaction = ReactionResult.NoReaction; @@ -300,7 +335,7 @@ namespace Content.Server.Atmos.EntitySystems var doReaction = true; for (var i = 0; i < prototype.MinimumRequirements.Length; i++) { - if(i > Atmospherics.TotalNumberOfGases) + if(i >= Atmospherics.TotalNumberOfGases) throw new IndexOutOfRangeException("Reaction Gas Minimum Requirements Array Prototype exceeds total number of gases!"); var req = prototype.MinimumRequirements[i]; diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 73056d60f0..09a2a47446 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -9,25 +9,31 @@ using Robust.Shared.Map; using Robust.Shared.Maths; using Robust.Shared.Physics; using Robust.Shared.Player; +using Robust.Shared.ViewVariables; namespace Content.Server.Atmos.EntitySystems { public partial class AtmosphereSystem { + private const int SpaceWindSoundCooldownCycles = 75; + private int _spaceWindSoundCooldown = 0; + [ViewVariables(VVAccess.ReadWrite)] + public string? SpaceWindSound { get; private set; } = "/Audio/Effects/space_wind.ogg"; + private void HighPressureMovements(GridAtmosphereComponent gridAtmosphere, TileAtmosphere tile) { // TODO ATMOS finish this - if(tile.PressureDifference > 15) + // Don't play the space wind sound on tiles that are on fire... + if(tile.PressureDifference > 15 && !tile.Hotspot.Valid) { - if(_spaceWindSoundCooldown == 0) + if(_spaceWindSoundCooldown == 0 && !string.IsNullOrEmpty(SpaceWindSound)) { var coordinates = tile.GridIndices.ToEntityCoordinates(tile.GridIndex, _mapManager); - if(!string.IsNullOrEmpty(SpaceWindSound)) - SoundSystem.Play(Filter.Pvs(coordinates), SpaceWindSound, coordinates, - AudioHelpers.WithVariation(0.125f).WithVolume(MathHelper.Clamp(tile.PressureDifference / 10, 10, 100))); + SoundSystem.Play(Filter.Pvs(coordinates), SpaceWindSound, coordinates, + AudioHelpers.WithVariation(0.125f).WithVolume(MathHelper.Clamp(tile.PressureDifference / 10, 10, 100))); } } @@ -51,8 +57,7 @@ namespace Content.Server.Atmos.EntitySystems // TODO ATMOS Do space wind graphics here! } - _spaceWindSoundCooldown++; - if (_spaceWindSoundCooldown > 75) + if (_spaceWindSoundCooldown++ > SpaceWindSoundCooldownCycles) _spaceWindSoundCooldown = 0; } diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs index 7bb0c5baff..a77f8f0391 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs @@ -1,9 +1,15 @@ using Content.Server.Atmos.Components; using Content.Server.Atmos.Reactions; using Content.Shared.Atmos; +using Content.Shared.Audio; using Robust.Server.GameObjects; +using Robust.Shared.Audio; using Robust.Shared.GameObjects; using Robust.Shared.IoC; +using Robust.Shared.Map; +using Robust.Shared.Maths; +using Robust.Shared.Player; +using Robust.Shared.ViewVariables; namespace Content.Server.Atmos.EntitySystems { @@ -11,6 +17,13 @@ namespace Content.Server.Atmos.EntitySystems { [Dependency] private readonly IEntityLookup _lookup = default!; + private const int HotspotSoundCooldownCycles = 200; + + private int _hotspotSoundCooldown = 0; + + [ViewVariables(VVAccess.ReadWrite)] + public string? HotspotSound { get; private set; } = "/Audio/Effects/fire.ogg"; + private void ProcessHotspot(GridAtmosphereComponent gridAtmosphere, TileAtmosphere tile) { if (!tile.Hotspot.Valid) @@ -70,6 +83,19 @@ namespace Content.Server.Atmos.EntitySystems if (tile.Hotspot.Temperature > tile.MaxFireTemperatureSustained) tile.MaxFireTemperatureSustained = tile.Hotspot.Temperature; + if (_hotspotSoundCooldown++ == 0 && !string.IsNullOrEmpty(HotspotSound)) + { + var coordinates = tile.GridIndices.ToEntityCoordinates(tile.GridIndex, _mapManager); + // 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. + SoundSystem.Play(Filter.Pvs(coordinates), HotspotSound, coordinates, + AudioHelpers.WithVariation(0.15f/tile.Hotspot.State).WithVolume(-5f + 5f * tile.Hotspot.State)); + } + + if (_hotspotSoundCooldown > HotspotSoundCooldownCycles) + _hotspotSoundCooldown = 0; + // TODO ATMOS Maybe destroy location here? } diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 1b6bda71b8..f56b5bbab4 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -381,12 +381,6 @@ namespace Content.Shared.CCVar public static readonly CVarDef SpaceWind = CVarDef.Create("atmos.space_wind", true, CVar.SERVERONLY); - /// - /// The sound that plays when space wind occurs. - /// - public static readonly CVarDef SpaceWindSound = - CVarDef.Create("atmos.space_wind_sound", "/Audio/Effects/space_wind.ogg", CVar.SERVERONLY); - /// /// Whether monstermos tile equalization is enabled. /// diff --git a/Resources/Audio/Effects/fire.ogg b/Resources/Audio/Effects/fire.ogg new file mode 100644 index 0000000000000000000000000000000000000000..04b5eb34ef0236c884a3eb01494e1c334643beb8 GIT binary patch literal 24864 zcmagG1yo!?vo1QgOK^7^B)Cg(cXxO9;1Jw(Ab4)~C07$@pt`r$p-M1nsFXRUZ5(rNxS5q6ew+aaH%C`^j z^%3Il$2SP2x1Rs&dh7W{@qrIPbNdg z#=^$J!p*`#MyG0F?qO!*XhkOB=xO8Xkpbr z)Bpg`0RUqvAZm)G46qoKPv@Nul71`ovqYtXqWba7Vp#|ND zI375QAaWfdFU@vEr2m>1jL0@b79!7fT$G~7cl@<5p6`UNaY_`4sc}YDo^@W+thxi% zz|U=h_b~fE8N%Orkb%b{3X5-!E(-s~J`z}x?h0o0Z(3x4An-H+Qb|}cby%ZyMB~#` zO4p1kn4Ht>5^CxS8sN*rK+Dr&(bHqm(_be&Oz)e&&bKhVr7(ksFcZA+|D<33n-6d4 z@6^d40C|+WX}iDz3W9R$dVnxkmxC@ugDzAOs#JrnjBtN7JOlvSR9Ka< z-<3nkjbqSF0Gy=U#fL%irUR zk^l4c=`UWu6CuyBOtTGwXHPWwtCk=zTfBUDG30-ezzrhv_sBA*GH=FtQ8V}R%CNF# ze?+Ng(YBVQXZ^LH{RI9l*p|SNjQ+fgsZ6&C8RX33eEV!z&8E_r`VK(Xjz6rRU z%}gd-*|Ijcug+BF!PizSa48CuMcdS>{*T{(U{Pk6J@JEg8{8vmCCjcA!2n!(G|#>m zM|i9I-{B(+wwuWk-at+;nSVU2DHeGNc?yYp0%}Sg>kzPrBraZ3wk$+h6`!`)J^1g; z$pC;*^uH+nuk0_B|Dm`jIhuZiu3?OAl<_UA?495{t?fk@LuLh|n2{5V;<%=RT(@do zX}jX41zm<>kg6=O_@76CjY?*oC<2TB*GaI_P}%SZxV2Sn}9h^xs^JGr|r3-+}eNJO==Fn$W*K2{Mgk9n20< z6h-)F;Q#U*7p%b~qTwVexq2#v8OHHz4y7B8X-o+f4h1!AgK2D!SsV*BE`wQ4i&+he zc~6VwW(&O*f1T$4ILtq{*bn!bp@su*jR65Bt-f31* znPnNd$7KbG|C{GnN0+8Ymqtb(M#j@crP)MfmbVtzk5r$w{a@4n@*F8wDsTdOj)W`K z|L~k{Rw6O5H`OyL-29uP;51mF?h?5F(*OWKcOtUf-*rSqm1$m;b6%B6LtXIy>@i^K zJcq(82UxMG002G!KnXT-D0;MOqNt;wHazPA6-+)aYImyTk*X|jX|~z~FFbMR2rFz(2s*HsNNoZ*NEA9IvY#C?B|--Pkaa_V|3v9H z%q0Nmw16#Vs>u`%IV@^9Oo>S>i$zR@#Z-=Q4o($yjZsXEd3B9d90iSLY6VOMgjV6al4vS@VjddK2`DTk%oB*vfk4<(39q{b}nCh{Z=5Ms%V37VFRti{u zS#fDBHgl@DYp7^g=%{Pxcv|Q@XlO0?%YmtC3d`6U8qFHZcMck9{@d;v23i)&4;nf+ z0eXvJ+xPz4cyF8+=RLqwlLZTt7LQFjn@k(qg0JP7bmiq`<;@P|)m3^0N96_OBlTA0 z)s-XlH5JwNr(kOJ*YbMC@^Z$C`pV~W#?$7nOF+jJMec^J&%AH%>3e=bRud6cWZDY1lJARFnloKi7&Rw1dp`5DyzKW zwBC`SxAIg}MZ@19)nb#|KnK@xlRI8-F|MHeq>X;G6D){zZNQ1BorTC?l?zPBsjouv zHye6Dn6z6RaCzq2z4s`rK}Hx%0AmB<4I7vv!ujM3kU=~U09f)vEH!lcelmA-)f2KJ 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/license.txt b/Resources/Audio/Effects/license.txt index 8cba3cecd0..edac43a6ec 100644 --- a/Resources/Audio/Effects/license.txt +++ b/Resources/Audio/Effects/license.txt @@ -14,3 +14,5 @@ voteding.ogg taken from "Bike, Bell Ding, Single, 01-01.wav" by InspectorJ (www. poster_broken.ogg taken from https://github.com/tgstation/tgstation/blob/2834383245d2129a106acef3afd17b81e1e64777/sound/items/poster_ripped.ogg poster_being_set.ogg taken from https://github.com/tgstation/tgstation/blob/2834383245d2129a106acef3afd17b81e1e64777/sound/items/poster_ripped.ogg + +fire.ogg taken and edited from https://freesound.org/people/raremess/sounds/222557/