]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/menu/nexuiz/crosshairbutton.c
menu-div0test -> menu
[divverent/nexuiz.git] / data / qcsrc / menu / nexuiz / crosshairbutton.c
1 #ifdef INTERFACE
2 CLASS(NexuizCrosshairButton) EXTENDS(RadioButton)
3         METHOD(NexuizCrosshairButton, configureNexuizCrosshairButton, void(entity, float, float))
4         METHOD(NexuizCrosshairButton, setChecked, void(entity, float))
5         METHOD(NexuizCrosshairButton, draw, void(entity))
6         ATTRIB(NexuizCrosshairButton, fontSize, float, SKINFONTSIZE_NORMAL)
7         ATTRIB(NexuizCrosshairButton, image, string, SKINGFX_CROSSHAIRBUTTON)
8
9         ATTRIB(NexuizCrosshairButton, useDownAsChecked, float, 1)
10
11         ATTRIB(NexuizCrosshairButton, cvarName, string, string_null)
12         ATTRIB(NexuizCrosshairButton, cvarValueFloat, float, 0)
13         METHOD(NexuizCrosshairButton, loadCvars, void(entity))
14         METHOD(NexuizCrosshairButton, saveCvars, void(entity))
15
16         ATTRIB(NexuizCrosshairButton, disabledAlpha, float, SKINALPHA_DISABLED)
17 ENDCLASS(NexuizCrosshairButton)
18 entity makeNexuizCrosshairButton(float, float);
19 #endif
20
21 #ifdef IMPLEMENTATION
22 entity makeNexuizCrosshairButton(float theGroup, float theCrosshair)
23 {
24         entity me;
25         me = spawnNexuizCrosshairButton();
26         me.configureNexuizCrosshairButton(me, theGroup, theCrosshair);
27         return me;
28 }
29 void configureNexuizCrosshairButtonNexuizCrosshairButton(entity me, float theGroup, float theCrosshair)
30 {
31         me.cvarName = "crosshair";
32         me.cvarValueFloat = theCrosshair;
33         me.loadCvars(me);
34         me.configureRadioButton(me, string_null, me.fontSize, me.image, theGroup, 0);
35         me.srcMulti = 1;
36         me.src2 = strzone(strcat("/gfx/crosshair", ftos(me.cvarValueFloat)));
37 }
38 void setCheckedNexuizCrosshairButton(entity me, float val)
39 {
40         if(val != me.checked)
41         {
42                 me.checked = val;
43                 me.saveCvars(me);
44         }
45 }
46 void loadCvarsNexuizCrosshairButton(entity me)
47 {
48         me.checked = (cvar(me.cvarName) == me.cvarValueFloat);
49 }
50 void saveCvarsNexuizCrosshairButton(entity me)
51 {
52         if(me.checked)
53                 cvar_set(me.cvarName, ftos(me.cvarValueFloat));
54         // TODO on an apply button, read _cl_color and execute the color command for it
55 }
56 void drawNexuizCrosshairButton(entity me)
57 {
58         me.color2 = eX * cvar("crosshair_color_red") + eY * cvar("crosshair_color_green") + eZ * cvar("crosshair_color_blue");
59         me.alpha2 = cvar("crosshair_color_alpha");
60         me.src2scale = min((draw_PictureSize(me.src2) * eY * cvar("crosshair_size")) / me.size_y, (draw_PictureSize(me.src2) * eX * cvar("crosshair_size")) / me.size_x, 0.8);
61         if(!me.checked && !me.focused)
62         {
63                 me.alpha2 *= me.disabledAlpha;
64                 me.color2 = '1 1 1';
65         }
66         drawCheckBox(me);
67 }
68 #endif