]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/menu-div0test/nexuiz/checkbox.c
fix selection bugs when enabling/disabling the checkboxes
[divverent/nexuiz.git] / data / qcsrc / menu-div0test / nexuiz / checkbox.c
1 #ifdef INTERFACE
2 CLASS(NexuizCheckBox) EXTENDS(CheckBox)
3         METHOD(NexuizCheckBox, configureNexuizCheckBox, void(entity, float, string, string))
4         METHOD(NexuizCheckBox, setChecked, void(entity, float))
5         ATTRIB(NexuizCheckBox, fontSize, float, SKINFONTSIZE_NORMAL)
6         ATTRIB(NexuizCheckBox, image, string, SKINGFX_CHECKBOX)
7         ATTRIB(NexuizCheckBox, inverted, float, 0)
8
9         ATTRIB(NexuizCheckBox, cvarName, string, string_null)
10         METHOD(NexuizCheckBox, loadCvars, void(entity))
11         METHOD(NexuizCheckBox, saveCvars, void(entity))
12 ENDCLASS(NexuizCheckBox)
13 entity makeNexuizCheckBox(float, string, string);
14 #endif
15
16 #ifdef IMPLEMENTATION
17 entity makeNexuizCheckBox(float isInverted, string theCvar, string theText)
18 {
19         entity me;
20         me = spawnNexuizCheckBox();
21         me.configureNexuizCheckBox(me, isInverted, theCvar, theText);
22         return me;
23 }
24 void configureNexuizCheckBoxNexuizCheckBox(entity me, float isInverted, string theCvar, string theText)
25 {
26         me.inverted = isInverted;
27         me.checked = 0;
28         if(theCvar)
29         {
30                 me.cvarName = theCvar;
31                 me.loadCvars(me);
32         }
33         me.configureCheckBox(me, theText, me.fontSize, me.image);
34 }
35 void setCheckedNexuizCheckBox(entity me, float val)
36 {
37         if(val != me.checked)
38         {
39                 me.checked = val;
40                 me.saveCvars(me);
41         }
42 }
43 void loadCvarsNexuizCheckBox(entity me)
44 {
45         me.checked = me.inverted - !!cvar(me.cvarName);
46 }
47 void saveCvarsNexuizCheckBox(entity me)
48 {
49         cvar_set(me.cvarName, ftos(fabs(me.inverted - me.checked)));
50 }
51 #endif