diff --git a/Content.Client/Audio/Jukebox/JukeboxBoundUserInterface.cs b/Content.Client/Audio/Jukebox/JukeboxBoundUserInterface.cs index 865dfc478d0..184957b5553 100644 --- a/Content.Client/Audio/Jukebox/JukeboxBoundUserInterface.cs +++ b/Content.Client/Audio/Jukebox/JukeboxBoundUserInterface.cs @@ -44,6 +44,7 @@ protected override void Open() _menu.OnSongSelected += SelectSong; _menu.SetTime += SetTime; + _menu.SetVolume += SetVolume; PopulateMusic(); Reload(); } @@ -57,6 +58,7 @@ public void Reload() return; _menu.SetAudioStream(jukebox.AudioStream); + _menu.SetVolumeSlider(jukebox.Volume); if (_protoManager.TryIndex(jukebox.SelectedSongId, out var songProto)) { @@ -97,5 +99,18 @@ public void SetTime(float time) SendMessage(new JukeboxSetTimeMessage(sentTime)); } + public void SetVolume(float volume) + { + var sentVolume = volume; + + // Prediction + if (EntMan.TryGetComponent(Owner, out JukeboxComponent? jukebox) && + EntMan.TryGetComponent(jukebox.AudioStream, out AudioComponent? audioComp)) + { + audioComp.Volume = SharedJukeboxSystem.MapToRange(volume, jukebox.MinSlider, jukebox.MaxSlider, jukebox.MinVolume, jukebox.MaxVolume); + } + + SendMessage(new JukeboxSetVolumeMessage(sentVolume)); + } } diff --git a/Content.Client/Audio/Jukebox/JukeboxMenu.xaml b/Content.Client/Audio/Jukebox/JukeboxMenu.xaml index e8d39a9b119..f322289f08e 100644 --- a/Content.Client/Audio/Jukebox/JukeboxMenu.xaml +++ b/Content.Client/Audio/Jukebox/JukeboxMenu.xaml @@ -1,18 +1,31 @@ + SetSize="600 500" Title="{Loc 'jukebox-menu-title'}"> - -