]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Actually fix round restart audio this time (#24754)
authorHannah Giovanna Dawson <karakkaraz@gmail.com>
Sat, 3 Feb 2024 02:11:53 +0000 (02:11 +0000)
committerGitHub <noreply@github.com>
Sat, 3 Feb 2024 02:11:53 +0000 (13:11 +1100)
In which I'm a goober and don't clean up after
myself and accientally don't fix the issue I tried
to fix in my last round restart PR.

The audio is now maintained just like music during
restarts (yippee to ContentAudioSystem::OnRoundRestart)

This needs a refactor but at least the defect is fixed now.

Content.Client/Audio/BackgroundAudioSystem.cs
Content.Client/Audio/ContentAudioSystem.cs
Content.Client/GameTicking/Managers/ClientGameTicker.cs
Content.Server/GameTicking/GameTicker.RoundFlow.cs

index 27b2dcb1b73095987bf42bd36c9f0b7243444605..9c4bf3f266e0f4fedf36a7d7d54aea2652875eb2 100644 (file)
@@ -26,7 +26,8 @@ public sealed class BackgroundAudioSystem : EntitySystem
 
     private readonly AudioParams _lobbyParams = new(-5f, 1, "Master", 0, 0, 0, true, 0f);
 
-    public EntityUid? LobbyStream;
+    public EntityUid? LobbyMusicStream;
+    public EntityUid? LobbyRoundRestartAudioStream;
 
     public override void Initialize()
     {
@@ -115,7 +116,7 @@ public sealed class BackgroundAudioSystem : EntitySystem
 
     public void StartLobbyMusic()
     {
-        if (LobbyStream != null || !_configManager.GetCVar(CCVars.LobbyMusicEnabled))
+        if (LobbyMusicStream != null || !_configManager.GetCVar(CCVars.LobbyMusicEnabled))
             return;
 
         var file = _gameTicker.LobbySong;
@@ -124,13 +125,16 @@ public sealed class BackgroundAudioSystem : EntitySystem
             return;
         }
 
-        LobbyStream = _audio.PlayGlobal(file, Filter.Local(), false,
+        LobbyMusicStream = _audio.PlayGlobal(
+            file,
+            Filter.Local(),
+            false,
             _lobbyParams.WithVolume(_lobbyParams.Volume + SharedAudioSystem.GainToVolume(_configManager.GetCVar(CCVars.LobbyMusicVolume))))?.Entity;
     }
 
     private void EndLobbyMusic()
     {
-        LobbyStream = _audio.Stop(LobbyStream);
+        LobbyMusicStream = _audio.Stop(LobbyMusicStream);
     }
 
     private void PlayRestartSound(RoundRestartCleanupEvent ev)
@@ -144,10 +148,11 @@ public sealed class BackgroundAudioSystem : EntitySystem
             return;
         }
 
-        var volume = _lobbyParams.WithVolume(_lobbyParams.Volume +
-                                             SharedAudioSystem.GainToVolume(
-                                                 _configManager.GetCVar(CCVars.LobbyMusicVolume)));
-
-        _audio.PlayGlobal(file, Filter.Local(), false, volume);
+        LobbyRoundRestartAudioStream = _audio.PlayGlobal(
+            file,
+            Filter.Local(),
+            false,
+            _lobbyParams.WithVolume(_lobbyParams.Volume + SharedAudioSystem.GainToVolume(_configManager.GetCVar(CCVars.LobbyMusicVolume)))
+        )?.Entity;
     }
 }
index ae881766edaceae8c3652e5e2032ec8bda525721..c81e0a44f105a37e0e0f340a9cc0f7c97575e9b2 100644 (file)
@@ -50,15 +50,24 @@ public sealed partial class ContentAudioSystem : SharedContentAudioSystem
         _fadingOut.Clear();
 
         // Preserve lobby music but everything else should get dumped.
-        var lobbyStream = EntityManager.System<BackgroundAudioSystem>().LobbyStream;
-        TryComp(lobbyStream, out AudioComponent? audioComp);
-        var oldGain = audioComp?.Gain;
+        var lobbyMusic = EntityManager.System<BackgroundAudioSystem>().LobbyMusicStream;
+        TryComp(lobbyMusic, out AudioComponent? lobbyMusicComp);
+        var oldMusicGain = lobbyMusicComp?.Gain;
+
+        var restartAudio = EntityManager.System<BackgroundAudioSystem>().LobbyRoundRestartAudioStream;
+        TryComp(restartAudio, out AudioComponent? restartComp);
+        var oldAudioGain = restartComp?.Gain;
 
         SilenceAudio();
 
-        if (oldGain != null)
+        if (oldMusicGain != null)
+        {
+            Audio.SetGain(lobbyMusic, oldMusicGain.Value, lobbyMusicComp);
+        }
+
+        if (oldAudioGain != null)
         {
-            Audio.SetGain(lobbyStream, oldGain.Value, audioComp);
+            Audio.SetGain(restartAudio, oldAudioGain.Value, restartComp);
         }
     }
 
index a33a7a8e72272f2923dd3b54d0f43fdbdaec3ea2..1154dca350ce27e8ea868a0855eab09cfe25979d 100644 (file)
@@ -20,8 +20,6 @@ namespace Content.Client.GameTicking.Managers
     {
         [Dependency] private readonly IStateManager _stateManager = default!;
         [Dependency] private readonly IEntityManager _entityManager = default!;
-        [Dependency] private readonly IConfigurationManager _configManager = default!;
-        [Dependency] private readonly SharedAudioSystem _audio = default!;
 
         [ViewVariables] private bool _initialized;
         private Dictionary<NetEntity, Dictionary<string, uint?>>  _jobsAvailable = new();
index c3e33f90eec0c00cddb863013328166201b5d1ff..6f0463aaf8fd2323a4232ec0a1e1c503b6d4dbe2 100644 (file)
@@ -525,9 +525,6 @@ namespace Content.Server.GameTicking
             {
                 _playerGameStatuses[session.UserId] = LobbyEnabled ? PlayerGameStatus.NotReadyToPlay : PlayerGameStatus.ReadyToPlay;
             }
-
-            // Put a bangin' donk on it.
-            _audio.PlayGlobal(_audio.GetSound(new SoundCollectionSpecifier("RoundEnd")), Filter.Broadcast(), true);
         }
 
         public bool DelayStart(TimeSpan time)