]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/xonotic/textslider.c
Merge branch 'TimePath/combined_updates' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / textslider.c
index 2236bc51fe362b88705c10b353e0e57b6e5ef7fe..844b3efed531b4399d5cbce3bee17e01e37e1e70 100644 (file)
@@ -6,17 +6,18 @@ CLASS(XonoticTextSlider) EXTENDS(TextSlider)
        ATTRIB(XonoticTextSlider, fontSize, float, SKINFONTSIZE_NORMAL)
        ATTRIB(XonoticTextSlider, valueSpace, float, SKINWIDTH_SLIDERTEXT)
        ATTRIB(XonoticTextSlider, image, string, SKINGFX_SLIDER)
-       ATTRIB(XonoticSlider, tolerance, vector, SKINTOLERANCE_SLIDER)
+       ATTRIB(XonoticTextSlider, tolerance, vector, SKINTOLERANCE_SLIDER)
        ATTRIB(XonoticTextSlider, align, float, 0.5)
-       ATTRIB(XonoticSlider, color, vector, SKINCOLOR_SLIDER_N)
-       ATTRIB(XonoticSlider, colorC, vector, SKINCOLOR_SLIDER_C)
-       ATTRIB(XonoticSlider, colorF, vector, SKINCOLOR_SLIDER_F)
-       ATTRIB(XonoticSlider, colorD, vector, SKINCOLOR_SLIDER_D)
-       ATTRIB(XonoticSlider, color2, vector, SKINCOLOR_SLIDER_S)
+       ATTRIB(XonoticTextSlider, color, vector, SKINCOLOR_SLIDER_N)
+       ATTRIB(XonoticTextSlider, colorC, vector, SKINCOLOR_SLIDER_C)
+       ATTRIB(XonoticTextSlider, colorF, vector, SKINCOLOR_SLIDER_F)
+       ATTRIB(XonoticTextSlider, colorD, vector, SKINCOLOR_SLIDER_D)
+       ATTRIB(XonoticTextSlider, color2, vector, SKINCOLOR_SLIDER_S)
 
        ATTRIB(XonoticTextSlider, cvarName, string, string_null)
        METHOD(XonoticTextSlider, loadCvars, void(entity))
        METHOD(XonoticTextSlider, saveCvars, void(entity))
+       ATTRIB(XonoticTextSlider, sendCvars, float, 0)
 
        ATTRIB(XonoticTextSlider, alpha, float, SKINALPHA_TEXT)
        ATTRIB(XonoticTextSlider, disabledAlpha, float, SKINALPHA_DISABLED)
@@ -32,7 +33,7 @@ entity makeXonoticTextSlider(string theCvar)
        me.configureXonoticTextSlider(me, theCvar);
        return me;
 }
-void configureXonoticTextSliderXonoticTextSlider(entity me, string theCvar)
+void XonoticTextSlider_configureXonoticTextSlider(entity me, string theCvar)
 {
        me.configureSliderVisuals(me, me.fontSize, me.align, me.valueSpace, me.image);
        if(theCvar)
@@ -42,17 +43,17 @@ void configureXonoticTextSliderXonoticTextSlider(entity me, string theCvar)
                // don't load it yet
        }
 }
-void setValueXonoticTextSlider(entity me, float val)
+void XonoticTextSlider_setValue(entity me, float val)
 {
        if(val != me.value)
        {
-               setValueSlider( me, val );
+               SUPER(XonoticTextSlider).setValue( me, val );
                me.saveCvars(me);
        }
 }
-void loadCvarsXonoticTextSlider(entity me)
+void XonoticTextSlider_loadCvars(entity me)
 {
-       if not(me.cvarName)
+       if (!me.cvarName)
                return;
 
        var float n = tokenize_console(me.cvarName);
@@ -61,10 +62,20 @@ void loadCvarsXonoticTextSlider(entity me)
        for(i = 1; i < n; ++i)
                s = strcat(s, " ", cvar_string(argv(i)));
        me.setValueFromIdentifier(me, s);
+       if(me.value < 0 && n > 1)
+       {
+               // if it failed: check if all cvars have the same value
+               // if yes, try its value as 1-word identifier
+               for(i = 1; i < n; ++i)
+                       if(cvar_string(argv(i)) != cvar_string(argv(i-1)))
+                               break;
+               if(i >= n)
+                       me.setValueFromIdentifier(me, cvar_string(argv(0)));
+       }
 }
-void saveCvarsXonoticTextSlider(entity me)
+void XonoticTextSlider_saveCvars(entity me)
 {
-       if not(me.cvarName)
+       if (!me.cvarName)
                return;
 
        if(me.value >= 0 && me.value < me.nValues)
@@ -74,6 +85,7 @@ void saveCvarsXonoticTextSlider(entity me)
                {
                        // this is a special case to allow spaces in the identifiers
                        cvar_set(argv(0), me.getIdentifier(me));
+                       CheckSendCvars(me, argv(0));
                }
                else
                {
@@ -82,19 +94,25 @@ void saveCvarsXonoticTextSlider(entity me)
                        if(m == n + 1)
                        {
                                for(i = 0; i < n; ++i)
+                               {
                                        cvar_set(argv(i), argv(n));
+                                       CheckSendCvars(me, argv(i));
+                               }
                        }
                        else if(m == n * 2)
                        {
                                for(i = 0; i < n; ++i)
+                               {
                                        cvar_set(argv(i), argv(i + n));
+                                       CheckSendCvars(me, argv(i));
+                               }
                        }
                        else
                                error("XonoticTextSlider: invalid identifier ", me.getIdentifier(me), " does not match cvar list ", me.cvarName);
                }
        }
 }
-void configureXonoticTextSliderValuesXonoticTextSlider(entity me)
+void XonoticTextSlider_configureXonoticTextSliderValues(entity me)
 {
        me.configureTextSliderValues(me, string_null);
        me.loadCvars(me);