]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/gametypebutton.qc
Sort menu classes
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / gametypebutton.qc
1 #ifndef GAMETYPEBUTTON_H
2 #define GAMETYPEBUTTON_H
3 CLASS(XonoticGametypeButton, RadioButton)
4         METHOD(XonoticGametypeButton, configureXonoticGametypeButton, void(entity, float, string, string))
5         METHOD(XonoticGametypeButton, setChecked, void(entity, float))
6         ATTRIB(XonoticGametypeButton, fontSize, float, SKINFONTSIZE_NORMAL)
7         ATTRIB(XonoticGametypeButton, image, string, SKINGFX_BUTTON_BIG)
8         ATTRIB(XonoticGametypeButton, color, vector, SKINCOLOR_BUTTON_N)
9         ATTRIB(XonoticGametypeButton, colorC, vector, SKINCOLOR_BUTTON_C)
10         ATTRIB(XonoticGametypeButton, colorF, vector, SKINCOLOR_BUTTON_F)
11         ATTRIB(XonoticGametypeButton, colorD, vector, SKINCOLOR_BUTTON_D)
12         ATTRIB(XonoticGametypeButton, srcMulti, float, 1)
13         ATTRIB(XonoticGametypeButton, useDownAsChecked, float, 1)
14
15         ATTRIB(XonoticGametypeButton, cvarName, string, string_null)
16         METHOD(XonoticGametypeButton, loadCvars, void(entity))
17         METHOD(XonoticGametypeButton, saveCvars, void(entity))
18
19         ATTRIB(XonoticGametypeButton, alpha, float, SKINALPHA_TEXT)
20         ATTRIB(XonoticGametypeButton, disabledAlpha, float, SKINALPHA_DISABLED)
21 ENDCLASS(XonoticGametypeButton)
22 entity makeXonoticGametypeButton(float, string, string);
23 #endif
24
25 #ifdef IMPLEMENTATION
26 void GameTypeButton_Click(entity me, entity other);
27 entity makeXonoticGametypeButton(float theGroup, string theCvar, string theText)
28 {
29         entity me;
30         me = NEW(XonoticGametypeButton);
31         me.configureXonoticGametypeButton(me, theGroup, theCvar, theText);
32         return me;
33 }
34 void XonoticGametypeButton_configureXonoticGametypeButton(entity me, float theGroup, string theCvar, string theText)
35 {
36         if(theCvar)
37         {
38                 me.cvarName = theCvar;
39                 me.tooltip = getZonedTooltipForIdentifier(theCvar);
40                 me.loadCvars(me);
41         }
42         me.configureRadioButton(me, theText, me.fontSize, me.image, theGroup, 0);
43         me.align = 0.5;
44         me.onClick = GameTypeButton_Click;
45         me.onClickEntity = NULL;
46 }
47 void XonoticGametypeButton_setChecked(entity me, float val)
48 {
49         if(val != me.checked)
50         {
51                 me.checked = val;
52                 me.saveCvars(me);
53         }
54 }
55 void XonoticGametypeButton_loadCvars(entity me)
56 {
57         if (!me.cvarName)
58                 return;
59
60         me.checked = cvar(me.cvarName);
61 }
62 void XonoticGametypeButton_saveCvars(entity me)
63 {
64         if (!me.cvarName)
65                 return;
66
67         cvar_set(me.cvarName, ftos(me.checked));
68 }
69 void GameTypeButton_Click(entity me, entity other)
70 {
71         RadioButton_Click(me, other);
72         me.parent.gameTypeChangeNotify(me.parent);
73 }
74 #endif