diff --git a/src/cvars.cpp b/src/cvars.cpp index 994a9ee4a..76f9ddbf0 100644 --- a/src/cvars.cpp +++ b/src/cvars.cpp @@ -318,8 +318,10 @@ consvar_t cv_controlperkey = Player("controlperkey", "One").values({{1, "One"}, // actual general (maximum) sound & music volume, saved into the config // Volume scale is 0-100 in new mixer. 100 is treated as -0dB or 100% gain. No more weirdness to work around SDL_mixer // problems -consvar_t cv_digmusicvolume = Player("musicvolume", "80").min_max(0, 100); -consvar_t cv_soundvolume = Player("soundvolume", "80").min_max(0, 100); +void DigMusicVolume_OnChange(void); +void SoundVolume_OnChange(void); +consvar_t cv_digmusicvolume = Player("musicvolume", "80").min_max(0, 100).onchange_noinit(DigMusicVolume_OnChange); +consvar_t cv_soundvolume = Player("soundvolume", "80").min_max(0, 100).onchange_noinit(SoundVolume_OnChange); #ifdef HAVE_DISCORDRPC void DRPC_UpdatePresence(void); diff --git a/src/s_sound.c b/src/s_sound.c index bee22e443..5b72f4fa4 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -2540,3 +2540,21 @@ void PlaySoundIfUnfocused_OnChange(void) if (window_notinfocus && !cv_playsoundifunfocused.value) S_StopSounds(); } + +void DigMusicVolume_OnChange(void); +void DigMusicVolume_OnChange(void) +{ + if (!cv_gamedigimusic.value) + { + CV_SetValue(&cv_gamedigimusic, 1); + } +} + +void SoundVolume_OnChange(void); +void SoundVolume_OnChange(void) +{ + if (!cv_gamesounds.value) + { + CV_SetValue(&cv_gamesounds, 1); + } +}