]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Remove trailing 0s before saving float numbers into cvars in the menu. Reason: with...
authorterencehill <piuntn@gmail.com>
Sun, 27 Mar 2016 14:10:27 +0000 (16:10 +0200)
committerterencehill <piuntn@gmail.com>
Sun, 27 Mar 2016 14:10:27 +0000 (16:10 +0200)
qcsrc/common/util.qh
qcsrc/lib/string.qh
qcsrc/menu/xonotic/checkbox.qc
qcsrc/menu/xonotic/slider.qc

index 7bc8675335958fef698d3c06692b63a0eb7edb86..da6574c0a8c34800513cc2b3f7e9e6b3126ed252 100644 (file)
@@ -27,8 +27,8 @@ void depthfirst(entity start, .entity up, .entity downleft, .entity right, void(
 float median(float a, float b, float c);
 
 // converts a number to a string with the indicated number of decimals
-// works for up to 10 decimals!
 string ftos_decimals(float number, float decimals);
+string ftos_mindecimals(float number);
 
 bool fexists(string f);
 
index 47a8175cac598554b3f2965a7dfc83db5429d2f5..380afb9eeccdbf8a52818efdb5ae29e71fa904f3 100644 (file)
@@ -281,7 +281,6 @@ void buf_save(float buf, string pFilename)
 
 /**
  * converts a number to a string with the indicated number of decimals
- * works for up to 10 decimals!
  */
 string ftos_decimals(float number, int decimals)
 {
@@ -291,6 +290,20 @@ string ftos_decimals(float number, int decimals)
        return sprintf("%.*f", decimals, number);
 }
 
+// strips trailing 0s from a float number, e.g. 1.200000 -> 1.2
+string ftos_mindecimals(float number)
+{
+       string s = ftos(number);
+       int k = strstrofs(s, ".", 0);
+       if(k >= 0)
+       {
+               int i = strlen(s);
+               while(substring(s, i - 1, 1) == "0") i--;
+               s = substring(s, 0, i);
+       }
+       return s;
+}
+
 int vercmp_recursive(string v1, string v2)
 {
        int dot1 = strstrofs(v1, ".", 0);
index 21743b9a1506801ea9a4a86bce1843c706d85447..6015e48bad45369c9b350e4eefe38d29202f2e8a 100644 (file)
@@ -77,9 +77,9 @@ void XonoticCheckBox_saveCvars(entity me)
                return;
 
        if(me.checked)
-               cvar_set(me.cvarName, ftos(me.yesValue));
+               cvar_set(me.cvarName, ftos_mindecimals(me.yesValue));
        else
-               cvar_set(me.cvarName, ftos(me.noValue));
+               cvar_set(me.cvarName, ftos_mindecimals(me.noValue));
 
        CheckSendCvars(me, me.cvarName);
 }
index fc4228cf98b0503b55f013a15df217d1909978f5..c8e057a641416aa922a9760b6cbaafa3072b881e 100644 (file)
@@ -58,7 +58,7 @@ void XonoticSlider_saveCvars(entity me)
        if (!me.cvarName)
                return;
 
-       cvar_set(me.cvarName, ftos(me.value));
+       cvar_set(me.cvarName, ftos_mindecimals(me.value));
 
        CheckSendCvars(me, me.cvarName);
 }