From a9075e5d247e425d737ff334b67c2146a6869cc8 Mon Sep 17 00:00:00 2001 From: Hannah Giovanna Dawson Date: Sat, 6 Jan 2024 03:15:28 +0000 Subject: [PATCH] Fix Round Restarted Announcements not playing (#23387) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- .../GameTicking/Managers/ClientGameTicker.cs | 20 ------------------- .../GameTicking/GameTicker.RoundFlow.cs | 10 ++++++---- .../GameTicking/SharedGameTicker.cs | 5 +---- 3 files changed, 7 insertions(+), 28 deletions(-) diff --git a/Content.Client/GameTicking/Managers/ClientGameTicker.cs b/Content.Client/GameTicking/Managers/ClientGameTicker.cs index a25b592f57..1d44430c91 100644 --- a/Content.Client/GameTicking/Managers/ClientGameTicker.cs +++ b/Content.Client/GameTicking/Managers/ClientGameTicker.cs @@ -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(LateJoinStatus); SubscribeNetworkEvent(UpdateJobsAvailable); - SubscribeNetworkEvent(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; - } } } diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs index cec0b442b0..081cf533cd 100644 --- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs +++ b/Content.Server/GameTicking/GameTicker.RoundFlow.cs @@ -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; } diff --git a/Content.Shared/GameTicking/SharedGameTicker.cs b/Content.Shared/GameTicking/SharedGameTicker.cs index cfb8809c69..d8ce4585a7 100644 --- a/Content.Shared/GameTicking/SharedGameTicker.cs +++ b/Content.Shared/GameTicking/SharedGameTicker.cs @@ -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 {