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