1 #ifndef COLORPICKER_STRING_H
2 #define COLORPICKER_STRING_H
3 #include "../item/image.qc"
4 CLASS(XonoticColorpickerString, Image)
5 METHOD(XonoticColorpickerString, configureXonoticColorpickerString, void(entity, string, string))
6 METHOD(XonoticColorpickerString, mousePress, float(entity, vector))
7 METHOD(XonoticColorpickerString, mouseRelease, float(entity, vector))
8 METHOD(XonoticColorpickerString, mouseDrag, float(entity, vector))
9 ATTRIB(XonoticColorpickerString, cvarName, string, string_null)
10 METHOD(XonoticColorpickerString, loadCvars, void(entity))
11 METHOD(XonoticColorpickerString, saveCvars, void(entity))
12 ATTRIB(XonoticColorpickerString, prevcoords, vector, '0 0 0')
13 ATTRIB(XonoticColorpickerString, image, string, SKINGFX_COLORPICKER)
14 ATTRIB(XonoticColorpickerString, imagemargin, vector, SKINMARGIN_COLORPICKER)
15 ATTRIB(XonoticColorpickerString, focusable, float, 1)
16 METHOD(XonoticColorpickerString, draw, void(entity))
17 ATTRIB(XonoticColorpickerString, disabledAlpha, float, 0.3)
18 ENDCLASS(XonoticColorpickerString)
19 entity makeXonoticColorpickerString(string theCvar, string theDefaultCvar);
23 entity makeXonoticColorpickerString(string theCvar, string theDefaultCvar)
26 me = NEW(XonoticColorpickerString);
27 me.configureXonoticColorpickerString(me, theCvar, theDefaultCvar);
31 void XonoticColorpickerString_configureXonoticColorpickerString(entity me, string theCvar, string theDefaultCvar)
33 me.cvarName = theCvar;
34 me.configureImage(me, me.image);
37 me.cvarName = theCvar;
38 me.tooltip = getZonedTooltipForIdentifier(theCvar);
43 void XonoticColorpickerString_loadCvars(entity me)
48 if(substring(me.cvarName, -1, 1) == "_")
50 me.prevcoords = color_hslimage(
51 eX * cvar(strcat(me.cvarName, "red")) +
52 eY * cvar(strcat(me.cvarName, "green")) +
53 eZ * cvar(strcat(me.cvarName, "blue")),
57 me.prevcoords = color_hslimage(stov(cvar_string(me.cvarName)), me.imagemargin);
60 void XonoticColorpickerString_saveCvars(entity me)
65 if(substring(me.cvarName, -1, 1) == "_")
67 vector v = hslimage_color(me.prevcoords, me.imagemargin);
68 cvar_set(strcat(me.cvarName, "red"), ftos(v.x));
69 cvar_set(strcat(me.cvarName, "green"), ftos(v.y));
70 cvar_set(strcat(me.cvarName, "blue"), ftos(v.z));
73 cvar_set(me.cvarName, sprintf("%v", hslimage_color(me.prevcoords, me.imagemargin)));
76 float XonoticColorpickerString_mousePress(entity me, vector coords)
78 me.mouseDrag(me, coords);
82 float XonoticColorpickerString_mouseDrag(entity me, vector coords)
87 margin = me.imagemargin;
88 if(coords.x >= margin.x)
89 if(coords.y >= margin.y)
90 if(coords.x <= 1 - margin.x)
91 if(coords.y <= 1 - margin.y)
93 me.prevcoords = coords;
100 float XonoticColorpickerString_mouseRelease(entity me, vector coords)
102 m_play_click_sound(MENU_SOUND_SLIDE);
103 me.mouseDrag(me, coords);
107 void XonoticColorpickerString_draw(entity me)
112 draw_alpha *= me.disabledAlpha;
114 SUPER(XonoticColorpickerString).draw(me);
117 sz = draw_PictureSize(strcat(me.src, "_selected"));
118 sz = globalToBoxSize(sz, draw_scale);
121 draw_Picture(me.imgOrigin + me.prevcoords - 0.5 * sz, strcat(me.src, "_selected"), sz, '1 1 1', 1);