#ifdef INTERFACE CLASS(VoretColorButton) EXTENDS(RadioButton) METHOD(VoretColorButton, configureVoretColorButton, void(entity, float, float, float)) METHOD(VoretColorButton, setChecked, void(entity, float)) METHOD(VoretColorButton, draw, void(entity)) ATTRIB(VoretColorButton, fontSize, float, SKINFONTSIZE_NORMAL) ATTRIB(VoretColorButton, image, string, SKINGFX_COLORBUTTON) ATTRIB(VoretColorButton, image2, string, SKINGFX_COLORBUTTON_COLOR) ATTRIB(VoretColorButton, useDownAsChecked, float, 1) ATTRIB(VoretColorButton, cvarPart, float, 0) ATTRIB(VoretColorButton, cvarName, string, string_null) ATTRIB(VoretColorButton, cvarValueFloat, float, 0) METHOD(VoretColorButton, loadCvars, void(entity)) METHOD(VoretColorButton, saveCvars, void(entity)) ENDCLASS(VoretColorButton) entity makeVoretColorButton(float, float, float); #endif #ifdef IMPLEMENTATION entity makeVoretColorButton(float theGroup, float theColor, float theValue) { entity me; me = spawnVoretColorButton(); me.configureVoretColorButton(me, theGroup, theColor, theValue); return me; } void configureVoretColorButtonVoretColorButton(entity me, float theGroup, float theColor, float theValue) { 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 setCheckedVoretColorButton(entity me, float val) { if(val != me.checked) { me.checked = val; me.saveCvars(me); } } void loadCvarsVoretColorButton(entity me) { if not(me.cvarName) return; if(me.cvarPart == 1) me.checked = (cvar(me.cvarName) & 240) == me.cvarValueFloat * 16; else me.checked = (cvar(me.cvarName) & 15) == me.cvarValueFloat; } void saveCvarsVoretColorButton(entity me) { if not(me.cvarName) return; if(me.checked) { if(me.cvarPart == 1) cvar_set(me.cvarName, ftos(cvar(me.cvarName) & 15 + me.cvarValueFloat * 16)); else 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 drawVoretColorButton(entity me) { me.color2 = colormapPaletteColor(me.cvarValueFloat, me.cvarPart); drawCheckBox(me); } #endif