fix: lobby music volume will be changed on options change without restart (also lobby music not looped anymore) (#25530)
* fix: lobby music volume will be changed on options change without restart (also lobby music not looped anymore) * refactor: now lobby music is part of ContentAudioSystem. Lobby playlist is used instead of single track. Client now selects next lobby soundtrack after previous finished. * refactor: incapsulated info on current lobby track in simple record * refactor: fixed inconsistent naming between song and soundtrack for lobbymusic * refactor: xml-doc for LobbyPlaylistChangedEvent * fix: inverted invalid _audio.PlayGlobal check to return only if lobby soundtrack play call failed --------- Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
This commit is contained in:
29
Content.Shared/Audio/Events/LobbyPlaylistChangedEvent.cs
Normal file
29
Content.Shared/Audio/Events/LobbyPlaylistChangedEvent.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.Audio.Events;
|
||||
|
||||
/// <summary>
|
||||
/// Event of changing lobby music playlist (on server).
|
||||
/// </summary>
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class LobbyPlaylistChangedEvent : EntityEventArgs
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public LobbyPlaylistChangedEvent(string[] playlist)
|
||||
{
|
||||
Playlist = playlist;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// List of soundtrack filenames for lobby playlist.
|
||||
/// </summary>
|
||||
public string[] Playlist;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Event of stopping lobby music.
|
||||
/// </summary>
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class LobbyMusicStopEvent : EntityEventArgs
|
||||
{
|
||||
}
|
||||
@@ -78,7 +78,6 @@ namespace Content.Shared.GameTicking
|
||||
public sealed class TickerLobbyStatusEvent : EntityEventArgs
|
||||
{
|
||||
public bool IsRoundStarted { get; }
|
||||
public string? LobbySong { get; }
|
||||
public string? LobbyBackground { get; }
|
||||
public bool YouAreReady { get; }
|
||||
// UTC.
|
||||
@@ -86,10 +85,9 @@ namespace Content.Shared.GameTicking
|
||||
public TimeSpan RoundStartTimeSpan { get; }
|
||||
public bool Paused { get; }
|
||||
|
||||
public TickerLobbyStatusEvent(bool isRoundStarted, string? lobbySong, string? lobbyBackground, bool youAreReady, TimeSpan startTime, TimeSpan preloadTime, TimeSpan roundStartTimeSpan, bool paused)
|
||||
public TickerLobbyStatusEvent(bool isRoundStarted, string? lobbyBackground, bool youAreReady, TimeSpan startTime, TimeSpan preloadTime, TimeSpan roundStartTimeSpan, bool paused)
|
||||
{
|
||||
IsRoundStarted = isRoundStarted;
|
||||
LobbySong = lobbySong;
|
||||
LobbyBackground = lobbyBackground;
|
||||
YouAreReady = youAreReady;
|
||||
StartTime = startTime;
|
||||
@@ -185,7 +183,6 @@ namespace Content.Shared.GameTicking
|
||||
public int RoundId { get; }
|
||||
public int PlayerCount { get; }
|
||||
public RoundEndPlayerInfo[] AllPlayersEndInfo { get; }
|
||||
public string? LobbySong;
|
||||
|
||||
/// <summary>
|
||||
/// Sound gets networked due to how entity lifecycle works between client / server and to avoid clipping.
|
||||
@@ -199,7 +196,6 @@ namespace Content.Shared.GameTicking
|
||||
int roundId,
|
||||
int playerCount,
|
||||
RoundEndPlayerInfo[] allPlayersEndInfo,
|
||||
string? lobbySong,
|
||||
string? restartSound)
|
||||
{
|
||||
GamemodeTitle = gamemodeTitle;
|
||||
@@ -208,7 +204,6 @@ namespace Content.Shared.GameTicking
|
||||
RoundId = roundId;
|
||||
PlayerCount = playerCount;
|
||||
AllPlayersEndInfo = allPlayersEndInfo;
|
||||
LobbySong = lobbySong;
|
||||
RestartSound = restartSound;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user