X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fslider_decibels.c;h=bf847e31264765b9a4ed63e200c0ba80505ada51;hb=dc891780036706390bcaa27975dcb71e499deeae;hp=6068c1c15bfde9cb9495cf3b8a74b2c2d47f3ec6;hpb=664311178a4a786b2d7fa1b7a0eff68e8ae186fc;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/menu/xonotic/slider_decibels.c b/qcsrc/menu/xonotic/slider_decibels.c index 6068c1c15..bf847e312 100644 --- a/qcsrc/menu/xonotic/slider_decibels.c +++ b/qcsrc/menu/xonotic/slider_decibels.c @@ -48,7 +48,7 @@ void XonoticDecibelsSlider_loadCvars(entity me) { float v; - if not(me.cvarName) + if (!me.cvarName) return; v = cvar(me.cvarName); @@ -61,7 +61,7 @@ void XonoticDecibelsSlider_loadCvars(entity me) } void XonoticDecibelsSlider_saveCvars(entity me) { - if not(me.cvarName) + if (!me.cvarName) return; if(me.value > me.valueMax - 0.5 * me.valueStep) @@ -77,12 +77,29 @@ string XonoticDecibelsSlider_valueToText(entity me, float v) return CTX(_("VOL^MAX")); else if(v <= me.valueMin) return CTX(_("VOL^OFF")); + else if(autocvar_menu_snd_sliderscale == 3) // fake percent scale + return sprintf("%d %%", (v - me.valueMin) / (me.valueMax - me.valueMin) * 100); else if(autocvar_menu_snd_sliderscale == 2) // 0..10 scale - return sprintf(_("%.1f"), (v - me.valueMin) / (me.valueMax - me.valueMin) * 10); - else if(autocvar_menu_snd_sliderscale == 1) // percent scale - return sprintf(_("%.2f %%"), fromDecibelOfSquare(v, me.valueMin)); + return sprintf("%.1f", (v - me.valueMin) / (me.valueMax - me.valueMin) * 10); + else if(autocvar_menu_snd_sliderscale == 1) // real percent scale + return sprintf("%.2f %%", fromDecibelOfSquare(v, me.valueMin) * 100); else // decibel scale return sprintf(_("%s dB"), ftos_decimals(toDecibelOfSquare(fromDecibelOfSquare(v, me.valueMin), 0), me.valueDigits)); } +void _TEST_XonoticDecibelsSlider() +{ + float i; + for(i = -400; i < 0; ++i) + { + float db = i * 0.1; + float v = fromDecibelOfSquare(db, -40); + float dbv = toDecibelOfSquare(v, -40); + float d = dbv - db; + printf("%f -> %f -> %f (diff: %f)\n", db, v, dbv, d); + TEST_Check(fabs(d) > 0.02); + } + TEST_OK(); +} + #endif