Round end sound now respects lobby music option toggle. (#8699)

Now it only plays when the round restarts *after* a regular roundend.
Meaning that if you spam the "restartroundnow" command, it won't play even if you have roundend sounds enabled in the options.
This commit is contained in:
Vera Aguilera Puerto
2022-06-12 03:23:28 +02:00
committed by GitHub
parent 2bc332a1b6
commit 0c337d6235
3 changed files with 25 additions and 3 deletions

View File

@@ -7,7 +7,9 @@ using Content.Shared.GameWindow;
using JetBrains.Annotations;
using Robust.Client.Graphics;
using Robust.Client.State;
using Robust.Shared.Audio;
using Robust.Shared.Network;
using Robust.Shared.Player;
using Robust.Shared.Utility;
namespace Content.Client.GameTicking.Managers
@@ -23,6 +25,7 @@ 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; }
@@ -55,6 +58,7 @@ namespace Content.Client.GameTicking.Managers
});
SubscribeNetworkEvent<TickerLateJoinStatusEvent>(LateJoinStatus);
SubscribeNetworkEvent<TickerJobsAvailableEvent>(UpdateJobsAvailable);
SubscribeNetworkEvent<RoundRestartCleanupEvent>(RoundRestartCleanup);
Status = new Dictionary<NetUserId, LobbyPlayerStatus>();
_initialized = true;
@@ -128,8 +132,21 @@ namespace Content.Client.GameTicking.Managers
Get<BackgroundAudioSystem>().StartLobbyMusic();
}
RestartSound = message.RestartSound;
//This is not ideal at all, but I don't see an immediately better fit anywhere else.
var roundEnd = new RoundEndSummaryWindow(message.GamemodeTitle, message.RoundEndText, message.RoundDuration, message.RoundId, message.AllPlayersEndInfo);
}
private void RoundRestartCleanup(RoundRestartCleanupEvent ev)
{
if (string.IsNullOrEmpty(RestartSound))
return;
SoundSystem.Play(Filter.Empty(), RestartSound);
// Cleanup the sound, we only want it to play when the round restarts after it ends normally.
RestartSound = null;
}
}
}

View File

@@ -326,7 +326,10 @@ namespace Content.Server.GameTicking
// This ordering mechanism isn't great (no ordering of minds) but functions
var listOfPlayerInfoFinal = listOfPlayerInfo.OrderBy(pi => pi.PlayerOOCName).ToArray();
_playersInGame.Clear();
RaiseNetworkEvent(new RoundEndMessageEvent(gamemodeTitle, roundEndText, roundDuration, RoundId, listOfPlayerInfoFinal.Length, listOfPlayerInfoFinal, LobbySong));
RaiseNetworkEvent(new RoundEndMessageEvent(gamemodeTitle, roundEndText, roundDuration, RoundId,
listOfPlayerInfoFinal.Length, listOfPlayerInfoFinal, LobbySong,
new SoundCollectionSpecifier("RoundEnd").GetSound()));
}
public void RestartRound()
@@ -349,7 +352,6 @@ namespace Content.Server.GameTicking
LobbySong = _robustRandom.Pick(_lobbyMusicCollection.PickFiles).ToString();
RandomizeLobbyBackground();
ResettingCleanup();
SoundSystem.Play(Filter.Broadcast(), new SoundCollectionSpecifier("RoundEnd").GetSound());
if (!LobbyEnabled)
{

View File

@@ -139,6 +139,7 @@ namespace Content.Shared.GameTicking
public int PlayerCount { get; }
public RoundEndPlayerInfo[] AllPlayersEndInfo { get; }
public string? LobbySong;
public string? RestartSound;
public RoundEndMessageEvent(
string gamemodeTitle,
@@ -147,7 +148,8 @@ namespace Content.Shared.GameTicking
int roundId,
int playerCount,
RoundEndPlayerInfo[] allPlayersEndInfo,
string? lobbySong)
string? lobbySong,
string? restartSound)
{
GamemodeTitle = gamemodeTitle;
RoundEndText = roundEndText;
@@ -156,6 +158,7 @@ namespace Content.Shared.GameTicking
PlayerCount = playerCount;
AllPlayersEndInfo = allPlayersEndInfo;
LobbySong = lobbySong;
RestartSound = restartSound;
}
}