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