]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/mainwindow.c
Merge branch 'terencehill/start_ammo' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / mainwindow.c
1 #ifdef INTERFACE
2 CLASS(MainWindow) EXTENDS(ModalController)
3         METHOD(MainWindow, configureMainWindow, void(entity))
4         METHOD(MainWindow, draw, void(entity))
5         ATTRIB(MainWindow, firstRunDialog, entity, NULL)
6         ATTRIB(MainWindow, advancedDialog, entity, NULL)
7         ATTRIB(MainWindow, mutatorsDialog, entity, NULL)
8         ATTRIB(MainWindow, mapInfoDialog, entity, NULL)
9         ATTRIB(MainWindow, userbindEditDialog, entity, NULL)
10         ATTRIB(MainWindow, winnerDialog, entity, NULL)
11         ATTRIB(MainWindow, serverInfoDialog, entity, NULL)
12         ATTRIB(MainWindow, cvarsDialog, entity, NULL)
13         ATTRIB(MainWindow, screenshotViewerDialog, entity, NULL)
14         ATTRIB(MainWindow, viewDialog, entity, NULL)
15         ATTRIB(MainWindow, hudconfirmDialog, entity, NULL)
16         ATTRIB(MainWindow, languageWarningDialog, entity, NULL)
17         ATTRIB(MainWindow, mainNexposee, entity, NULL)
18         ATTRIB(MainWindow, fadedAlpha, float, SKINALPHA_BEHIND)
19         ATTRIB(MainWindow, dialogToShow, entity, NULL)
20         ATTRIB(MainWindow, demostartconfirmDialog, entity, NULL)
21         ATTRIB(MainWindow, demotimeconfirmDialog, entity, NULL)
22 ENDCLASS(MainWindow)
23 #endif
24
25 #ifdef IMPLEMENTATION
26 void MainWindow_draw(entity me)
27 {
28         SUPER(MainWindow).draw(me);
29
30         if(me.dialogToShow)
31         {
32                 DialogOpenButton_Click_withCoords(world, me.dialogToShow, '0 0 0', eX * conwidth + eY * conheight);
33                 me.dialogToShow = NULL;
34         }
35 }
36
37 void DemoButton_Click(entity me, entity other)
38 {
39         if(me.text == _("Do not press this button again!"))
40                 DialogOpenButton_Click(me, other);
41         else
42                 me.setText(me, _("Do not press this button again!"));
43 }
44
45 void MainWindow_configureMainWindow(entity me)
46 {
47         entity n, i;
48
49         // dialog run upon startup
50         me.firstRunDialog = i = spawnXonoticFirstRunDialog();
51         i.configureDialog(i);
52         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
53
54
55         // hud_configure dialogs
56         i = spawnXonoticHUDExitDialog();
57         i.configureDialog(i);
58         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
59
60         i = spawnXonoticHUDNotificationDialog();
61         i.configureDialog(i);
62         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
63
64         i = spawnXonoticHUDAmmoDialog();
65         i.configureDialog(i);
66         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
67
68         i = spawnXonoticHUDHealthArmorDialog();
69         i.configureDialog(i);
70         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
71
72         i = spawnXonoticHUDChatDialog();
73         i.configureDialog(i);
74         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
75
76         i = spawnXonoticHUDModIconsDialog();
77         i.configureDialog(i);
78         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
79
80         i = spawnXonoticHUDPowerupsDialog();
81         i.configureDialog(i);
82         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
83
84         i = spawnXonoticHUDPressedKeysDialog();
85         i.configureDialog(i);
86         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
87
88         i = spawnXonoticHUDRaceTimerDialog();
89         i.configureDialog(i);
90         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
91
92         i = spawnXonoticHUDRadarDialog();
93         i.configureDialog(i);
94         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
95
96         i = spawnXonoticHUDScoreDialog();
97         i.configureDialog(i);
98         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
99
100         i = spawnXonoticHUDTimerDialog();
101         i.configureDialog(i);
102         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
103
104         i = spawnXonoticHUDVoteDialog();
105         i.configureDialog(i);
106         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
107
108         i = spawnXonoticHUDWeaponsDialog();
109         i.configureDialog(i);
110         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
111
112         i = spawnXonoticHUDEngineInfoDialog();
113         i.configureDialog(i);
114         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
115
116         i = spawnXonoticHUDInfoMessagesDialog();
117         i.configureDialog(i);
118         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
119         
120         i = spawnXonoticHUDPhysicsDialog();
121         i.configureDialog(i);
122         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
123         
124         me.screenshotViewerDialog = i = spawnXonoticScreenshotViewerDialog();
125         i.configureDialog(i);
126         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
127
128         i = spawnXonoticHUDCenterprintDialog();
129         i.configureDialog(i);
130         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
131
132         i = spawnXonoticHUDBuffsDialog();
133         i.configureDialog(i);
134         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
135
136
137         // dialogs used by settings
138         me.userbindEditDialog = i = spawnXonoticUserbindEditDialog();
139         i.configureDialog(i);
140         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
141
142         me.cvarsDialog = i = spawnXonoticCvarsDialog();
143         i.configureDialog(i);
144         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
145
146         me.languageWarningDialog = i = spawnXonoticLanguageWarningDialog();
147         i.configureDialog(i);
148         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
149
150         me.hudconfirmDialog = i = spawnXonoticHUDConfirmDialog();
151         i.configureDialog(i);
152         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
153
154
155         // dialog used by singleplayer
156         me.winnerDialog = i = spawnXonoticWinnerDialog();
157         i.configureDialog(i);
158         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
159
160
161         // dialog used by multiplayer/join
162         me.serverInfoDialog = i = spawnXonoticServerInfoDialog();
163         i.configureDialog(i);
164         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
165         
166         me.demostartconfirmDialog = i = spawnXonoticDemoStartConfirmDialog();
167         i.configureDialog(i);
168         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
169
170         me.demotimeconfirmDialog = i = spawnXonoticDemoTimeConfirmDialog();
171         i.configureDialog(i);
172         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
173
174
175         // dialogs used by multiplayer/create
176         me.mapInfoDialog = i = spawnXonoticMapInfoDialog();
177         i.configureDialog(i);
178         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
179
180         me.mutatorsDialog = i = spawnXonoticMutatorsDialog();
181         i.configureDialog(i);
182         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
183
184         // mutator dialogs
185         i = spawnXonoticSandboxToolsDialog();
186         i.configureDialog(i);
187         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z * SKINALPHA_DIALOG_SANDBOXTOOLS);
188
189
190         // miscellaneous dialogs
191         i = spawnXonoticTeamSelectDialog();
192         i.configureDialog(i);
193         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
194
195         i = spawnXonoticMonsterToolsDialog();
196         i.configureDialog(i);
197         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z * SKINALPHA_DIALOG_SANDBOXTOOLS);
198
199
200         // main dialogs/windows
201         me.mainNexposee = n = spawnXonoticNexposee();
202         /*
203                 if(checkextension("DP_GECKO_SUPPORT"))
204                 {
205                         i = spawnXonoticNewsDialog();
206                         i.configureDialog(i);
207                         n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
208                         n.setNexposee(n, i, '0.1 0.1 0', SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
209                 }
210         */
211                 i = spawnXonoticSingleplayerDialog();
212                 i.configureDialog(i);
213                 n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
214                 n.setNexposee(n, i, SKINPOSITION_DIALOG_SINGLEPLAYER, SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
215
216                 i = spawnXonoticMultiplayerDialog();
217                 i.configureDialog(i);
218                 n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
219                 n.setNexposee(n, i, SKINPOSITION_DIALOG_MULTIPLAYER, SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
220
221                 i = spawnXonoticSettingsDialog();
222                 i.configureDialog(i);
223                 n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
224                 n.setNexposee(n, i, SKINPOSITION_DIALOG_SETTINGS, SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
225
226                 i = spawnXonoticCreditsDialog();
227                 i.configureDialog(i);
228                 n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
229                 n.setNexposee(n, i, SKINPOSITION_DIALOG_CREDITS, SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
230                 n.pullNexposee(n, i, eY * (SKINHEIGHT_TITLE * SKINFONTSIZE_TITLE / conheight));
231
232                 i = spawnXonoticQuitDialog();
233                 i.configureDialog(i);
234                 n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
235                 n.setNexposee(n, i, SKINPOSITION_DIALOG_QUIT, SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
236                 n.pullNexposee(n, i, eY * (SKINHEIGHT_TITLE * SKINFONTSIZE_TITLE / conheight));
237
238         me.addItem(me, n, '0 0 0', '1 1 0', SKINALPHAS_MAINMENU_z);
239         me.moveItemAfter(me, n, NULL);
240
241         me.initializeDialog(me, n);
242
243         if(cvar_string("_cl_name") == cvar_defstring("_cl_name"))
244                 me.dialogToShow = me.firstRunDialog;
245 }
246 #endif
247
248 /* Click. The c-word is here so you can grep for it :-) */