]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/xonotic/colorbutton.c
Merge branch 'master' into TimePath/issue-1170
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / colorbutton.c
index 2ca8c86c4078d056c86ba0d8512709b7d45b5df8..bcbdfee8db9d3585a4aa4e51567492207cd392bc 100644 (file)
@@ -3,9 +3,8 @@ CLASS(XonoticColorButton) EXTENDS(RadioButton)
        METHOD(XonoticColorButton, configureXonoticColorButton, void(entity, float, float, float))
        METHOD(XonoticColorButton, setChecked, void(entity, float))
        METHOD(XonoticColorButton, draw, void(entity))
-       ATTRIB(XonoticColorButton, fontSize, float, SKINFONTSIZE_NORMAL)
+       ATTRIB(XonoticColorButton, fontSize, float, 0)
        ATTRIB(XonoticColorButton, image, string, SKINGFX_COLORBUTTON)
-       ATTRIB(XonoticColorButton, image2, string, SKINGFX_COLORBUTTON_COLOR)
 
        ATTRIB(XonoticColorButton, useDownAsChecked, float, 1)
 
@@ -28,13 +27,32 @@ entity makeXonoticColorButton(float theGroup, float theColor, float theValue)
 }
 void XonoticColorButton_configureXonoticColorButton(entity me, float theGroup, float theColor, float theValue)
 {
+       switch(theValue)
+       {
+               // rearrange 1..14 for rainbow order
+               case  1: theValue = 10; break;
+               case  2: theValue =  4; break;
+               case  3: theValue =  1; break;
+               case  4: theValue = 14; break;
+               case  5: theValue = 12; break;
+               case  6: theValue =  7; break;
+               case  7: theValue =  3; break;
+               case  8: theValue =  2; break;
+               case  9: theValue =  6; break;
+               case 10: theValue =  5; break;
+               case 11: theValue = 13; break;
+               case 12: theValue = 11; break;
+               case 13: theValue =  8; break;
+               case 14: theValue =  9; break;
+               default:
+                       // no change
+                       break;
+       }
        me.cvarName = "_cl_color";
        me.cvarValueFloat = theValue;
        me.cvarPart = theColor;
        me.loadCvars(me);
        me.configureRadioButton(me, string_null, me.fontSize, me.image, theGroup, 0);
-       me.srcMulti = 1;
-       me.src2 = me.image2;
 }
 void XonoticColorButton_setChecked(entity me, float val)
 {
@@ -46,9 +64,12 @@ void XonoticColorButton_setChecked(entity me, float val)
 }
 void XonoticColorButton_loadCvars(entity me)
 {
-       if not(me.cvarName)
+       if (!me.cvarName)
                return;
 
+       if(cvar_string(me.cvarName) == cvar_defstring(me.cvarName))
+               cvar_set(me.cvarName, ftos(16 * floor(random() * 15) + floor(random() * 15)));
+
        if(me.cvarPart == 1)
                me.checked = (cvar(me.cvarName) & 240) == me.cvarValueFloat * 16;
        else
@@ -56,21 +77,24 @@ void XonoticColorButton_loadCvars(entity me)
 }
 void XonoticColorButton_saveCvars(entity me)
 {
-       if not(me.cvarName)
+       if (!me.cvarName)
                return;
 
        if(me.checked)
        {
                if(me.cvarPart == 1)
-                       cvar_set(me.cvarName, ftos(cvar(me.cvarName) & 15 + me.cvarValueFloat * 16));
+                       cvar_set(me.cvarName, ftos((cvar(me.cvarName) & 15) + me.cvarValueFloat * 16));
                else
-                       cvar_set(me.cvarName, ftos(cvar(me.cvarName) & 240 + me.cvarValueFloat));
+                       cvar_set(me.cvarName, ftos((cvar(me.cvarName) & 240) + me.cvarValueFloat));
        }
        // TODO on an apply button, read _cl_color and execute the color command for it
 }
 void XonoticColorButton_draw(entity me)
 {
-       me.color2 = colormapPaletteColor(me.cvarValueFloat, me.cvarPart);
+       me.color  = colormapPaletteColor(me.cvarValueFloat, me.cvarPart);
+       me.colorC = me.color;
+       me.colorF = me.color;
+       me.colorD = me.color;
        SUPER(XonoticColorButton).draw(me);
 }
 #endif