3 #include "../item/radiobutton.qc"
4 CLASS(XonoticColorButton, RadioButton)
5 METHOD(XonoticColorButton, configureXonoticColorButton, void(entity, float, float, float));
6 METHOD(XonoticColorButton, setChecked, void(entity, float));
7 METHOD(XonoticColorButton, draw, void(entity));
8 ATTRIB(XonoticColorButton, fontSize, float, 0)
9 ATTRIB(XonoticColorButton, image, string, SKINGFX_COLORBUTTON)
11 ATTRIB(XonoticColorButton, useDownAsChecked, float, 1)
13 ATTRIB(XonoticColorButton, cvarPart, float, 0)
14 ATTRIB(XonoticColorButton, cvarName, string, string_null)
15 ATTRIB(XonoticColorButton, cvarValueFloat, float, 0)
16 METHOD(XonoticColorButton, loadCvars, void(entity));
17 METHOD(XonoticColorButton, saveCvars, void(entity));
18 ENDCLASS(XonoticColorButton)
19 entity makeXonoticColorButton(float, float, float);
23 entity makeXonoticColorButton(float theGroup, float theColor, float theValue)
26 me = NEW(XonoticColorButton);
27 me.configureXonoticColorButton(me, theGroup, theColor, theValue);
30 void XonoticColorButton_configureXonoticColorButton(entity me, float theGroup, float theColor, float theValue)
34 // rearrange 1..14 for rainbow order
35 case 1: theValue = 10; break;
36 case 2: theValue = 4; break;
37 case 3: theValue = 1; break;
38 case 4: theValue = 14; break;
39 case 5: theValue = 12; break;
40 case 6: theValue = 7; break;
41 case 7: theValue = 3; break;
42 case 8: theValue = 2; break;
43 case 9: theValue = 6; break;
44 case 10: theValue = 5; break;
45 case 11: theValue = 13; break;
46 case 12: theValue = 11; break;
47 case 13: theValue = 8; break;
48 case 14: theValue = 9; break;
53 me.cvarName = "_cl_color";
54 me.cvarValueFloat = theValue;
55 me.cvarPart = theColor;
57 me.configureRadioButton(me, string_null, me.fontSize, me.image, theGroup, 0);
59 void XonoticColorButton_setChecked(entity me, float val)
67 void XonoticColorButton_loadCvars(entity me)
72 if(cvar_string(me.cvarName) == cvar_defstring(me.cvarName))
73 cvar_set(me.cvarName, ftos(16 * floor(random() * 15) + floor(random() * 15)));
76 me.checked = (cvar(me.cvarName) & 240) == me.cvarValueFloat * 16;
78 me.checked = (cvar(me.cvarName) & 15) == me.cvarValueFloat;
80 void XonoticColorButton_saveCvars(entity me)
88 cvar_set(me.cvarName, ftos((cvar(me.cvarName) & 15) + me.cvarValueFloat * 16));
90 cvar_set(me.cvarName, ftos((cvar(me.cvarName) & 240) + me.cvarValueFloat));
92 // TODO on an apply button, read _cl_color and execute the color command for it
94 void XonoticColorButton_draw(entity me)
96 me.color = colormapPaletteColor(me.cvarValueFloat, me.cvarPart);
100 SUPER(XonoticColorButton).draw(me);