[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; }
});
SubscribeNetworkEvent<TickerLateJoinStatusEvent>(LateJoinStatus);
SubscribeNetworkEvent<TickerJobsAvailableEvent>(UpdateJobsAvailable);
- SubscribeNetworkEvent<RoundRestartCleanupEvent>(RoundRestartCleanup);
_initialized = true;
}
{
// 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)
//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;
- }
}
}
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()
_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)
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;
}
int roundId,
int playerCount,
RoundEndPlayerInfo[] allPlayersEndInfo,
- string? lobbySong,
- string? restartSound)
+ string? lobbySong)
{
GamemodeTitle = gamemodeTitle;
RoundEndText = roundEndText;
PlayerCount = playerCount;
AllPlayersEndInfo = allPlayersEndInfo;
LobbySong = lobbySong;
- RestartSound = restartSound;
}
}
-
[Serializable, NetSerializable]
public enum PlayerGameStatus : sbyte
{