]> de.git.xonotic.org Git - voretournament/voretournament.git/blob - data/qcsrc/menu/voret/crosshairbutton.c
Actually, set the gametype in the .instantaction file
[voretournament/voretournament.git] / data / qcsrc / menu / voret / crosshairbutton.c
1 #ifdef INTERFACE\r
2 CLASS(VoretCrosshairButton) EXTENDS(RadioButton)\r
3         METHOD(VoretCrosshairButton, configureVoretCrosshairButton, void(entity, float, float))\r
4         METHOD(VoretCrosshairButton, setChecked, void(entity, float))\r
5         METHOD(VoretCrosshairButton, draw, void(entity))\r
6         ATTRIB(VoretCrosshairButton, fontSize, float, SKINFONTSIZE_NORMAL)\r
7         ATTRIB(VoretCrosshairButton, image, string, SKINGFX_CROSSHAIRBUTTON)\r
8 \r
9         ATTRIB(VoretCrosshairButton, useDownAsChecked, float, 1)\r
10         ATTRIB(VoretCrosshairButton, src3, string, string_null)\r
11 \r
12         ATTRIB(VoretCrosshairButton, cvarName, string, string_null)\r
13         ATTRIB(VoretCrosshairButton, cvarValueFloat, float, 0)\r
14         METHOD(VoretCrosshairButton, loadCvars, void(entity))\r
15         METHOD(VoretCrosshairButton, saveCvars, void(entity))\r
16 ENDCLASS(VoretCrosshairButton)\r
17 entity makeVoretCrosshairButton(float, float);\r
18 #endif\r
19 \r
20 #ifdef IMPLEMENTATION\r
21 entity makeVoretCrosshairButton(float theGroup, float theCrosshair)\r
22 {\r
23         entity me;\r
24         me = spawnVoretCrosshairButton();\r
25         me.configureVoretCrosshairButton(me, theGroup, theCrosshair);\r
26         return me;\r
27 }\r
28 void configureVoretCrosshairButtonVoretCrosshairButton(entity me, float theGroup, float theCrosshair)\r
29 {\r
30         me.cvarName = "crosshair";\r
31         me.cvarValueFloat = theCrosshair;\r
32         me.loadCvars(me);\r
33         me.configureRadioButton(me, string_null, me.fontSize, me.image, theGroup, 0);\r
34         me.srcMulti = 1;\r
35         me.src3 = strzone(strcat("/gfx/crosshair", ftos(me.cvarValueFloat)));\r
36 }\r
37 void setCheckedVoretCrosshairButton(entity me, float val)\r
38 {\r
39         if(val != me.checked)\r
40         {\r
41                 me.checked = val;\r
42                 me.saveCvars(me);\r
43         }\r
44 }\r
45 void loadCvarsVoretCrosshairButton(entity me)\r
46 {\r
47         if not(me.cvarName)\r
48                 return;\r
49 \r
50         me.checked = (cvar(me.cvarName) == me.cvarValueFloat);\r
51 }\r
52 void saveCvarsVoretCrosshairButton(entity me)\r
53 {\r
54         if not(me.cvarName)\r
55                 return;\r
56 \r
57         if(me.checked)\r
58                 cvar_set(me.cvarName, ftos(me.cvarValueFloat));\r
59         // TODO on an apply button, read _cl_color and execute the color command for it\r
60 }\r
61 void drawVoretCrosshairButton(entity me)\r
62 {\r
63         vector sz, rgb;\r
64         float a;\r
65 \r
66         rgb = eX * cvar("crosshair_color_red") + eY * cvar("crosshair_color_green") + eZ * cvar("crosshair_color_blue");\r
67         a = cvar("crosshair_color_alpha");\r
68 \r
69         if(!me.checked && !me.focused)\r
70         {\r
71                 a *= me.disabledAlpha;\r
72                 rgb = '1 1 1';\r
73         }\r
74 \r
75         drawCheckBox(me);\r
76 \r
77         sz = draw_PictureSize(me.src3);\r
78         sz = globalToBoxSize(sz, draw_scale);\r
79         sz = sz * cvar("crosshair_size");\r
80         if(sz_x > 0.95)\r
81                 sz = sz * (0.95 / sz_x);\r
82         if(sz_y > 0.95)\r
83                 sz = sz * (0.95 / sz_y);\r
84 \r
85         draw_Picture('0.5 0.5 0' - 0.5 * sz, me.src3, sz, rgb, a);\r
86 }\r
87 #endif\r