diff --git a/Content.Client/Audio/ContentAudioSystem.cs b/Content.Client/Audio/ContentAudioSystem.cs index 3bba6864a4..2dc950ee26 100644 --- a/Content.Client/Audio/ContentAudioSystem.cs +++ b/Content.Client/Audio/ContentAudioSystem.cs @@ -20,6 +20,18 @@ public sealed partial class ContentAudioSystem : SharedContentAudioSystem private const float MinVolume = -32f; private const float DefaultDuration = 2f; + /* + * Gain multipliers for specific audio sliders. + * The float value will get multiplied by this when setting + * i.e. a gain of 0.5f x 3 will equal 1.5f which is supported in OpenAL. + */ + + public const float MasterVolumeMultiplier = 3f; + public const float MidiVolumeMultiplier = 0.25f; + public const float AmbienceMultiplier = 3f; + public const float AmbientMusicMultiplier = 3f; + public const float LobbyMultiplier = 3f; + public override void Initialize() { base.Initialize(); diff --git a/Content.Client/Options/UI/Tabs/AudioTab.xaml.cs b/Content.Client/Options/UI/Tabs/AudioTab.xaml.cs index bb7c10c696..80e13d4a43 100644 --- a/Content.Client/Options/UI/Tabs/AudioTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/AudioTab.xaml.cs @@ -1,3 +1,4 @@ +using Content.Client.Audio; using Content.Shared.CCVar; using Robust.Client.Audio; using Robust.Client.AutoGenerated; @@ -83,7 +84,7 @@ namespace Content.Client.Options.UI.Tabs private void OnMasterVolumeSliderChanged(Range range) { - _audio.SetMasterGain(MasterVolumeSlider.Value / 100f); + _audio.SetMasterGain(MasterVolumeSlider.Value / 100f * ContentAudioSystem.MasterVolumeMultiplier); UpdateChanges(); } @@ -112,13 +113,13 @@ namespace Content.Client.Options.UI.Tabs private void OnApplyButtonPressed(BaseButton.ButtonEventArgs args) { - _cfg.SetCVar(CVars.AudioMasterVolume, MasterVolumeSlider.Value / 100f); + _cfg.SetCVar(CVars.AudioMasterVolume, MasterVolumeSlider.Value / 100f * ContentAudioSystem.MasterVolumeMultiplier); // Want the CVar updated values to have the multiplier applied // For the UI we just display 0-100 still elsewhere - _cfg.SetCVar(CVars.MidiVolume, MidiVolumeSlider.Value / 100f); - _cfg.SetCVar(CCVars.AmbienceVolume, AmbienceVolumeSlider.Value / 100f); - _cfg.SetCVar(CCVars.AmbientMusicVolume, AmbientMusicVolumeSlider.Value / 100f); - _cfg.SetCVar(CCVars.LobbyMusicVolume, LobbyVolumeSlider.Value / 100f); + _cfg.SetCVar(CVars.MidiVolume, MidiVolumeSlider.Value / 100f * ContentAudioSystem.MidiVolumeMultiplier); + _cfg.SetCVar(CCVars.AmbienceVolume, AmbienceVolumeSlider.Value / 100f * ContentAudioSystem.AmbienceMultiplier); + _cfg.SetCVar(CCVars.AmbientMusicVolume, AmbientMusicVolumeSlider.Value / 100f * ContentAudioSystem.AmbientMusicMultiplier); + _cfg.SetCVar(CCVars.LobbyMusicVolume, LobbyVolumeSlider.Value / 100f * ContentAudioSystem.LobbyMultiplier); _cfg.SetCVar(CCVars.MaxAmbientSources, (int)AmbienceSoundsSlider.Value); @@ -137,11 +138,11 @@ namespace Content.Client.Options.UI.Tabs private void Reset() { - MasterVolumeSlider.Value = _cfg.GetCVar(CVars.AudioMasterVolume) * 100f; - MidiVolumeSlider.Value = _cfg.GetCVar(CVars.MidiVolume) * 100f; - AmbienceVolumeSlider.Value = _cfg.GetCVar(CCVars.AmbienceVolume) * 100f; - AmbientMusicVolumeSlider.Value = _cfg.GetCVar(CCVars.AmbientMusicVolume) * 100f; - LobbyVolumeSlider.Value = _cfg.GetCVar(CCVars.LobbyMusicVolume) * 100f; + MasterVolumeSlider.Value = _cfg.GetCVar(CVars.AudioMasterVolume) * 100f / ContentAudioSystem.MasterVolumeMultiplier; + MidiVolumeSlider.Value = _cfg.GetCVar(CVars.MidiVolume) * 100f / ContentAudioSystem.MidiVolumeMultiplier; + AmbienceVolumeSlider.Value = _cfg.GetCVar(CCVars.AmbienceVolume) * 100f / ContentAudioSystem.AmbienceMultiplier; + AmbientMusicVolumeSlider.Value = _cfg.GetCVar(CCVars.AmbientMusicVolume) * 100f / ContentAudioSystem.AmbientMusicMultiplier; + LobbyVolumeSlider.Value = _cfg.GetCVar(CCVars.LobbyMusicVolume) * 100f / ContentAudioSystem.LobbyMultiplier; AmbienceSoundsSlider.Value = _cfg.GetCVar(CCVars.MaxAmbientSources); @@ -152,24 +153,19 @@ namespace Content.Client.Options.UI.Tabs UpdateChanges(); } - private float GetGain(float value) - { - return value; - } - private void UpdateChanges() { // y'all need jesus. var isMasterVolumeSame = - Math.Abs(MasterVolumeSlider.Value - _cfg.GetCVar(CVars.AudioMasterVolume) * 100f) < 0.01f; + Math.Abs(MasterVolumeSlider.Value - _cfg.GetCVar(CVars.AudioMasterVolume) * 100f / ContentAudioSystem.MasterVolumeMultiplier) < 0.01f; var isMidiVolumeSame = - Math.Abs(MidiVolumeSlider.Value - _cfg.GetCVar(CVars.MidiVolume) * 100f) < 0.01f; + Math.Abs(MidiVolumeSlider.Value - _cfg.GetCVar(CVars.MidiVolume) * 100f / ContentAudioSystem.MidiVolumeMultiplier) < 0.01f; var isAmbientVolumeSame = - Math.Abs(AmbienceVolumeSlider.Value - _cfg.GetCVar(CCVars.AmbienceVolume) * 100f) < 0.01f; + Math.Abs(AmbienceVolumeSlider.Value - _cfg.GetCVar(CCVars.AmbienceVolume) * 100f / ContentAudioSystem.AmbienceMultiplier) < 0.01f; var isAmbientMusicVolumeSame = - Math.Abs(AmbientMusicVolumeSlider.Value - _cfg.GetCVar(CCVars.AmbientMusicVolume) * 100f) < 0.01f; + Math.Abs(AmbientMusicVolumeSlider.Value - _cfg.GetCVar(CCVars.AmbientMusicVolume) * 100f / ContentAudioSystem.AmbientMusicMultiplier) < 0.01f; var isLobbyVolumeSame = - Math.Abs(LobbyVolumeSlider.Value - _cfg.GetCVar(CCVars.LobbyMusicVolume) * 100f) < 0.01f; + Math.Abs(LobbyVolumeSlider.Value - _cfg.GetCVar(CCVars.LobbyMusicVolume) * 100f / ContentAudioSystem.LobbyMultiplier) < 0.01f; var isAmbientSoundsSame = (int)AmbienceSoundsSlider.Value == _cfg.GetCVar(CCVars.MaxAmbientSources); var isLobbySame = LobbyMusicCheckBox.Pressed == _cfg.GetCVar(CCVars.LobbyMusicEnabled);