]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/xonotic/slider_decibels.c
Merge branch 'master' into terencehill/insta_notifications
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / slider_decibels.c
index 6068c1c15bfde9cb9495cf3b8a74b2c2d47f3ec6..bf847e31264765b9a4ed63e200c0ba80505ada51 100644 (file)
@@ -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