]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/colorpicker_string.qc
Add TheAudioMonkey to credits
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / colorpicker_string.qc
1 #include "colorpicker_string.qh"
2
3 .bool disabled;
4
5 entity makeXonoticColorpickerString(string theCvar, string theDefaultCvar)
6 {
7         entity me;
8         me = NEW(XonoticColorpickerString);
9         me.configureXonoticColorpickerString(me, theCvar, theDefaultCvar);
10         return me;
11 }
12
13 void XonoticColorpickerString_configureXonoticColorpickerString(entity me, string theCvar, string theDefaultCvar)
14 {
15         me.configureImage(me, me.image);
16         me.cvarName = (theCvar) ? theCvar : string_null;
17         me.loadCvars(me);
18 }
19
20 void XonoticColorpickerString_loadCvars(entity me)
21 {
22         if (!me.cvarName)
23                 return;
24
25         if(substring(me.cvarName, -1, 1) == "_")
26         {
27                 me.prevcoords = color_hslimage(
28                         eX * cvar(strcat(me.cvarName, "red")) +
29                         eY * cvar(strcat(me.cvarName, "green")) +
30                         eZ * cvar(strcat(me.cvarName, "blue")),
31                         me.imagemargin);
32         }
33         else
34                 me.prevcoords = color_hslimage(stov(cvar_string(me.cvarName)), me.imagemargin);
35 }
36
37 void XonoticColorpickerString_saveCvars(entity me)
38 {
39         if (!me.cvarName)
40                 return;
41
42         if(substring(me.cvarName, -1, 1) == "_")
43         {
44                 vector v = hslimage_color(me.prevcoords, me.imagemargin);
45                 cvar_set(strcat(me.cvarName, "red"), ftos(v.x));
46                 cvar_set(strcat(me.cvarName, "green"), ftos(v.y));
47                 cvar_set(strcat(me.cvarName, "blue"), ftos(v.z));
48         }
49         else
50                 cvar_set(me.cvarName, sprintf("%v", hslimage_color(me.prevcoords, me.imagemargin)));
51 }
52
53 float XonoticColorpickerString_mousePress(entity me, vector coords)
54 {
55         me.mouseDrag(me, coords);
56         return 1;
57 }
58
59 float XonoticColorpickerString_mouseDrag(entity me, vector coords)
60 {
61         if(me.disabled)
62                 return 0;
63         vector margin;
64         margin = me.imagemargin;
65         if(coords.x >= margin.x)
66         if(coords.y >= margin.y)
67         if(coords.x <= 1 - margin.x)
68         if(coords.y <= 1 - margin.y)
69         {
70                 me.prevcoords = coords;
71                 me.saveCvars(me);
72         }
73
74         return 1;
75 }
76
77 float XonoticColorpickerString_mouseRelease(entity me, vector coords)
78 {
79         m_play_click_sound(MENU_SOUND_SLIDE);
80         me.mouseDrag(me, coords);
81         return 1;
82 }
83
84 void XonoticColorpickerString_draw(entity me)
85 {
86         float save;
87         save = draw_alpha;
88         if(me.disabled)
89                 draw_alpha *= me.disabledAlpha;
90
91         SUPER(XonoticColorpickerString).draw(me);
92
93         vector sz;
94         sz = draw_PictureSize(strcat(me.src, "_selected"));
95         sz = globalToBoxSize(sz, draw_scale);
96
97         if(!me.disabled)
98                 draw_Picture(me.imgOrigin + me.prevcoords - 0.5 * sz, strcat(me.src, "_selected"), sz, '1 1 1', 1);
99
100         draw_alpha = save;
101 }