-#ifndef COLORPICKER_STRING_H
-#define COLORPICKER_STRING_H
-#include "../item/image.qc"
-CLASS(XonoticColorpickerString, Image)
- METHOD(XonoticColorpickerString, configureXonoticColorpickerString, void(entity, string, string));
- METHOD(XonoticColorpickerString, mousePress, float(entity, vector));
- METHOD(XonoticColorpickerString, mouseRelease, float(entity, vector));
- METHOD(XonoticColorpickerString, mouseDrag, float(entity, vector));
- ATTRIB(XonoticColorpickerString, cvarName, string, string_null)
- METHOD(XonoticColorpickerString, loadCvars, void(entity));
- METHOD(XonoticColorpickerString, saveCvars, void(entity));
- ATTRIB(XonoticColorpickerString, prevcoords, vector, '0 0 0')
- ATTRIB(XonoticColorpickerString, image, string, SKINGFX_COLORPICKER)
- ATTRIB(XonoticColorpickerString, imagemargin, vector, SKINMARGIN_COLORPICKER)
- ATTRIB(XonoticColorpickerString, focusable, float, 1)
- METHOD(XonoticColorpickerString, draw, void(entity));
- ATTRIB(XonoticColorpickerString, disabledAlpha, float, 0.3)
-ENDCLASS(XonoticColorpickerString)
-entity makeXonoticColorpickerString(string theCvar, string theDefaultCvar);
-#endif
-
-#ifdef IMPLEMENTATION
+#include "colorpicker_string.qh"
+
+.bool disabled;
+
entity makeXonoticColorpickerString(string theCvar, string theDefaultCvar)
{
entity me;
void XonoticColorpickerString_configureXonoticColorpickerString(entity me, string theCvar, string theDefaultCvar)
{
- me.cvarName = theCvar;
me.configureImage(me, me.image);
- if(theCvar)
- {
- me.cvarName = theCvar;
- me.tooltip = getZonedTooltipForIdentifier(theCvar);
- me.loadCvars(me);
- }
+ me.controlledCvar = (theCvar) ? theCvar : string_null;
+ me.loadCvars(me);
}
void XonoticColorpickerString_loadCvars(entity me)
{
- if (!me.cvarName)
+ if (!me.controlledCvar)
return;
- if(substring(me.cvarName, -1, 1) == "_")
+ if(substring(me.controlledCvar, -1, 1) == "_")
{
me.prevcoords = color_hslimage(
- eX * cvar(strcat(me.cvarName, "red")) +
- eY * cvar(strcat(me.cvarName, "green")) +
- eZ * cvar(strcat(me.cvarName, "blue")),
+ eX * cvar(strcat(me.controlledCvar, "red")) +
+ eY * cvar(strcat(me.controlledCvar, "green")) +
+ eZ * cvar(strcat(me.controlledCvar, "blue")),
me.imagemargin);
}
else
- me.prevcoords = color_hslimage(stov(cvar_string(me.cvarName)), me.imagemargin);
+ me.prevcoords = color_hslimage(stov(cvar_string(me.controlledCvar)), me.imagemargin);
}
void XonoticColorpickerString_saveCvars(entity me)
{
- if (!me.cvarName)
+ if (!me.controlledCvar)
return;
- if(substring(me.cvarName, -1, 1) == "_")
+ if(substring(me.controlledCvar, -1, 1) == "_")
{
vector v = hslimage_color(me.prevcoords, me.imagemargin);
- cvar_set(strcat(me.cvarName, "red"), ftos(v.x));
- cvar_set(strcat(me.cvarName, "green"), ftos(v.y));
- cvar_set(strcat(me.cvarName, "blue"), ftos(v.z));
+ cvar_set(strcat(me.controlledCvar, "red"), ftos(v.x));
+ cvar_set(strcat(me.controlledCvar, "green"), ftos(v.y));
+ cvar_set(strcat(me.controlledCvar, "blue"), ftos(v.z));
}
else
- cvar_set(me.cvarName, sprintf("%v", hslimage_color(me.prevcoords, me.imagemargin)));
+ cvar_set(me.controlledCvar, sprintf("%v", hslimage_color(me.prevcoords, me.imagemargin)));
}
-float XonoticColorpickerString_mousePress(entity me, vector coords)
+METHOD(XonoticColorpickerString, mousePress, bool(XonoticColorpickerString this, vector pos))
{
- me.mouseDrag(me, coords);
- return 1;
+ this.mouseDrag(this, pos);
+ return true;
}
float XonoticColorpickerString_mouseDrag(entity me, vector coords)
draw_alpha = save;
}
-#endif