]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/menu/nexuiz/radiobutton.c
cl_hitsound + some menu changes
[divverent/nexuiz.git] / data / qcsrc / menu / nexuiz / radiobutton.c
1 #ifdef INTERFACE
2 CLASS(NexuizRadioButton) EXTENDS(RadioButton)
3         METHOD(NexuizRadioButton, configureNexuizRadioButton, void(entity, float, string, string, string))
4         METHOD(NexuizRadioButton, draw, void(entity))
5         METHOD(NexuizRadioButton, setChecked, void(entity, float))
6         ATTRIB(NexuizRadioButton, fontSize, float, SKINFONTSIZE_NORMAL)
7         ATTRIB(NexuizRadioButton, image, string, SKINGFX_RADIOBUTTON)
8         ATTRIB(NexuizRadioButton, color, vector, SKINCOLOR_RADIOBUTTON_N)
9         ATTRIB(NexuizRadioButton, colorC, vector, SKINCOLOR_RADIOBUTTON_C)
10         ATTRIB(NexuizRadioButton, colorF, vector, SKINCOLOR_RADIOBUTTON_F)
11         ATTRIB(NexuizRadioButton, colorD, vector, SKINCOLOR_RADIOBUTTON_D)
12
13         ATTRIB(NexuizRadioButton, cvarName, string, string_null)
14         ATTRIB(NexuizRadioButton, cvarValue, string, string_null)
15         ATTRIB(NexuizRadioButton, cvarOffValue, string, string_null)
16         METHOD(NexuizRadioButton, loadCvars, void(entity))
17         METHOD(NexuizRadioButton, saveCvars, void(entity))
18
19         ATTRIB(NexuizRadioButton, alpha, float, SKINALPHA_TEXT)
20         ATTRIB(NexuizRadioButton, disabledAlpha, float, SKINALPHA_DISABLED)
21 ENDCLASS(NexuizRadioButton)
22 entity makeNexuizRadioButton(float, string, string, string);
23 #endif
24
25 #ifdef IMPLEMENTATION
26 entity makeNexuizRadioButton(float theGroup, string theCvar, string theValue, string theText)
27 {
28         entity me;
29         me = spawnNexuizRadioButton();
30         me.configureNexuizRadioButton(me, theGroup, theCvar, theValue, theText);
31         return me;
32 }
33 void configureNexuizRadioButtonNexuizRadioButton(entity me, float theGroup, string theCvar, string theValue, string theText)
34 {
35         if(theCvar)
36         {
37                 me.cvarName = theCvar;
38                 me.cvarValue = theValue;
39                 me.loadCvars(me);
40         }
41         me.configureRadioButton(me, theText, me.fontSize, me.image, theGroup, 0);
42 }
43 void setCheckedNexuizRadioButton(entity me, float val)
44 {
45         if(val != me.checked)
46         {
47                 me.checked = val;
48                 me.saveCvars(me);
49         }
50 }
51 void loadCvarsNexuizRadioButton(entity me)
52 {
53         if(me.cvarValue)
54         {
55                 if(me.cvarName)
56                         me.checked = (cvar_string(me.cvarName) == me.cvarValue);
57         }
58         else
59         {
60                 if(me.cvarName)
61                 {
62                         me.checked = !!cvar(me.cvarName);
63                 }
64                 else
65                 {
66                         // this is difficult
67                         // this is the "generic" selection... but at this time, not
68                         // everything is constructed yet.
69                         // we need to set this later in draw()
70                         me.checked = 0;
71                 }
72         }
73 }
74 void drawNexuizRadioButton(entity me)
75 {
76         if not(me.cvarValue)
77                 if not(me.cvarName)
78                 {
79                         // this is the "other" option
80                         // always select this if none other is
81                         entity e;
82                         float found;
83                         found = 0;
84                         for(e = me.parent.firstChild; e; e = e.nextSibling)
85                                 if(e.group == me.group)
86                                         if(e.checked)
87                                                 found = 1;
88                         if(!found)
89                                 me.setChecked(me, 1);
90                 }
91         drawCheckBox(me);
92 }
93 void saveCvarsNexuizRadioButton(entity me)
94 {
95         if(me.cvarValue)
96         {
97                 if(me.cvarName)
98                 {
99                         if(me.checked)
100                                 cvar_set(me.cvarName, me.cvarValue);
101                         else if(me.cvarOffValue)
102                                 cvar_set(me.cvarName, me.cvarOffValue);
103                 }
104         }
105         else
106         {
107                 if(me.cvarName)
108                 {
109                         cvar_set(me.cvarName, ftos(me.checked));
110                 }
111         }
112 }
113 #endif