]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix Round Restarted Announcements not playing (#23387)
authorHannah Giovanna Dawson <karakkaraz@gmail.com>
Sat, 6 Jan 2024 03:15:28 +0000 (03:15 +0000)
committerGitHub <noreply@github.com>
Sat, 6 Jan 2024 03:15:28 +0000 (14:15 +1100)
* Fix Round Restarted Announcements not playing

Just make the RoundFlow manager play the funny
announcement sound effect, rather than pass it
through to players in an event that doesn't work.

Only three round end announcements probably
isn't enough. Maybe it is time for fresh memes.

* Remove the handling in ClientGameTicker.

* Pass in a specific filepass to broadcast.

* you make one line change in vscode and the linter
goes AH-HAH I CAN HELP YOU LET ME CLEAN
THIS UP and I'm like πŸ˜” and have to revert

Content.Client/GameTicking/Managers/ClientGameTicker.cs
Content.Server/GameTicking/GameTicker.RoundFlow.cs
Content.Shared/GameTicking/SharedGameTicker.cs

index a25b592f574ad30f2fe1477af785ec1ef7928c87..1d44430c910c6e7651dd9e6f5ace797cf3242ec2 100644 (file)
@@ -35,7 +35,6 @@ namespace Content.Client.GameTicking.Managers
         [ViewVariables] public bool AreWeReady { get; private set; }
         [ViewVariables] public bool IsGameStarted { get; private set; }
         [ViewVariables] public string? LobbySong { get; private set; }
-        [ViewVariables] public string? RestartSound { get; private set; }
         [ViewVariables] public string? LobbyBackground { get; private set; }
         [ViewVariables] public bool DisallowedLateJoin { get; private set; }
         [ViewVariables] public string? ServerInfoBlob { get; private set; }
@@ -68,7 +67,6 @@ namespace Content.Client.GameTicking.Managers
             });
             SubscribeNetworkEvent<TickerLateJoinStatusEvent>(LateJoinStatus);
             SubscribeNetworkEvent<TickerJobsAvailableEvent>(UpdateJobsAvailable);
-            SubscribeNetworkEvent<RoundRestartCleanupEvent>(RoundRestartCleanup);
 
             _initialized = true;
         }
@@ -147,7 +145,6 @@ namespace Content.Client.GameTicking.Managers
         {
             // Force an update in the event of this song being the same as the last.
             SetLobbySong(message.LobbySong, true);
-            RestartSound = message.RestartSound;
 
             // Don't open duplicate windows (mainly for replays).
             if (_window?.RoundId == message.RoundId)
@@ -156,22 +153,5 @@ namespace Content.Client.GameTicking.Managers
             //This is not ideal at all, but I don't see an immediately better fit anywhere else.
             _window = new RoundEndSummaryWindow(message.GamemodeTitle, message.RoundEndText, message.RoundDuration, message.RoundId, message.AllPlayersEndInfo, _entityManager);
         }
-
-        private void RoundRestartCleanup(RoundRestartCleanupEvent ev)
-        {
-            if (string.IsNullOrEmpty(RestartSound))
-                return;
-
-            if (!_configManager.GetCVar(CCVars.RestartSoundsEnabled))
-            {
-                RestartSound = null;
-                return;
-            }
-
-            _audio.PlayGlobal(RestartSound, Filter.Local(), false);
-
-            // Cleanup the sound, we only want it to play when the round restarts after it ends normally.
-            RestartSound = null;
-        }
     }
 }
index cec0b442b053e2f0f9069883a267dedb8b86e80d..081cf533cd3ec260a93ecf0c763bbbb66788cf7a 100644 (file)
@@ -387,8 +387,7 @@ namespace Content.Server.GameTicking
             var listOfPlayerInfoFinal = listOfPlayerInfo.OrderBy(pi => pi.PlayerOOCName).ToArray();
 
             RaiseNetworkEvent(new RoundEndMessageEvent(gamemodeTitle, roundEndText, roundDuration, RoundId,
-                listOfPlayerInfoFinal.Length, listOfPlayerInfoFinal, LobbySong,
-                new SoundCollectionSpecifier("RoundEnd").GetSound()));
+                listOfPlayerInfoFinal.Length, listOfPlayerInfoFinal, LobbySong));
         }
 
         private async void SendRoundEndDiscordMessage()
@@ -523,8 +522,11 @@ namespace Content.Server.GameTicking
             _playerGameStatuses.Clear();
             foreach (var session in _playerManager.Sessions)
             {
-                _playerGameStatuses[session.UserId] = LobbyEnabled ?  PlayerGameStatus.NotReadyToPlay : PlayerGameStatus.ReadyToPlay;
+                _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)
@@ -538,7 +540,7 @@ namespace Content.Server.GameTicking
 
             RaiseNetworkEvent(new TickerLobbyCountdownEvent(_roundStartTime, Paused));
 
-            _chatManager.DispatchServerAnnouncement(Loc.GetString("game-ticker-delay-start", ("seconds",time.TotalSeconds)));
+            _chatManager.DispatchServerAnnouncement(Loc.GetString("game-ticker-delay-start", ("seconds", time.TotalSeconds)));
 
             return true;
         }
index cfb8809c690c76e6462448daf2b0bb8cf984dcbb..d8ce4585a735ab7d491cb7a987239f0cdc646338 100644 (file)
@@ -166,8 +166,7 @@ namespace Content.Shared.GameTicking
             int roundId,
             int playerCount,
             RoundEndPlayerInfo[] allPlayersEndInfo,
-            string? lobbySong,
-            string? restartSound)
+            string? lobbySong)
         {
             GamemodeTitle = gamemodeTitle;
             RoundEndText = roundEndText;
@@ -176,11 +175,9 @@ namespace Content.Shared.GameTicking
             PlayerCount = playerCount;
             AllPlayersEndInfo = allPlayersEndInfo;
             LobbySong = lobbySong;
-            RestartSound = restartSound;
         }
     }
 
-
     [Serializable, NetSerializable]
     public enum PlayerGameStatus : sbyte
     {