]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/mainwindow.qc
b07785258b4f4cedf10bd7017957a85682cd8d44
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / mainwindow.qc
1 #include "mainwindow.qh"
2
3 #include <menu/mutators/_mod.qh>
4
5 #include "nexposee.qh"
6 #include "inputbox.qh"
7 #include "dialog_termsofservice.qh"
8 #include "dialog_firstrun.qh"
9 #include "dialog_hudsetup_exit.qh"
10 #include "dialog_hudpanel_notification.qh"
11 #include "dialog_hudpanel_ammo.qh"
12 #include "dialog_hudpanel_healtharmor.qh"
13 #include "dialog_hudpanel_chat.qh"
14 #include "dialog_hudpanel_modicons.qh"
15 #include "dialog_hudpanel_powerups.qh"
16 #include "dialog_hudpanel_pressedkeys.qh"
17 #include "dialog_hudpanel_racetimer.qh"
18 #include "dialog_hudpanel_radar.qh"
19 #include "dialog_hudpanel_score.qh"
20 #include "dialog_hudpanel_timer.qh"
21 #include "dialog_hudpanel_vote.qh"
22 #include "dialog_hudpanel_weapons.qh"
23 #include "dialog_hudpanel_engineinfo.qh"
24 #include "dialog_hudpanel_infomessages.qh"
25 #include "dialog_hudpanel_physics.qh"
26 #include "dialog_hudpanel_centerprint.qh"
27 #include "dialog_hudpanel_itemstime.qh"
28 #include "dialog_hudpanel_quickmenu.qh"
29 #include "dialog_hudpanel_strafehud.qh"
30
31 #include "dialog_settings_input_userbind.qh"
32 #include "dialog_settings_bindings_reset.qh"
33 #include "dialog_settings_misc_cvars.qh"
34 #include "dialog_settings_misc_reset.qh"
35 #include "dialog_settings_user_languagewarning.qh"
36 #include "dialog_settings_game_hudconfirm.qh"
37 #include "dialog_singleplayer_winner.qh"
38 #include "dialog_multiplayer_join_serverinfo.qh"
39 #include "dialog_multiplayer_media_demo_startconfirm.qh"
40 #include "dialog_multiplayer_media_demo_timeconfirm.qh"
41 #include "dialog_multiplayer_media_screenshot_viewer.qh"
42 #include "dialog_multiplayer_create_mapinfo.qh"
43 #include "dialog_multiplayer_create_mutators.qh"
44 #include "dialog_sandboxtools.qh"
45 #include "dialog_monstertools.qh"
46 #include "dialog_gamemenu.qh"
47 #include "dialog_teamselect.qh"
48 #include "dialog_uid2name.qh"
49 #include "dialog_singleplayer.qh"
50 #include "dialog_multiplayer.qh"
51 #include "dialog_settings.qh"
52 #include "dialog_credits.qh"
53 #include "dialog_quit.qh"
54
55 void MainWindow_draw(entity me)
56 {
57         SUPER(MainWindow).draw(me);
58
59         if (me.firstDraw) {
60                 if (me.ToSDialog.shouldShow())
61                 {
62                         me.ToSDialog.loadXonoticToS(me.ToSDialog);
63                         DialogOpenButton_Click_withCoords(NULL, me.ToSDialog, '0 0 0', eX * conwidth + eY * conheight);
64                 }
65                 else if(me.firstRunDialog.shouldShow())
66                         DialogOpenButton_Click_withCoords(NULL, me.firstRunDialog, '0 0 0', eX * conwidth + eY * conheight);
67                 
68                 me.firstDraw = false;
69         }
70 }
71
72 void DemoButton_Click(entity me, entity other)
73 {
74         if(me.text == _("Do not press this button again!"))
75                 DialogOpenButton_Click(me, other);
76         else
77                 me.setText(me, _("Do not press this button again!"));
78 }
79
80 void MainWindow_configureMainWindow(entity me)
81 {
82         entity n, i;
83
84         // terms of service dialog
85         me.ToSDialog = i = NEW(XonoticToSDialog);
86         i.configureDialog(i);
87         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
88
89         // dialog run upon startup
90         me.firstRunDialog = i = NEW(XonoticFirstRunDialog);
91         i.configureDialog(i);
92         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
93
94
95         // hud_configure dialogs
96         i = NEW(XonoticHUDExitDialog);
97         i.configureDialog(i);
98         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
99
100         i = NEW(XonoticHUDNotificationDialog);
101         i.configureDialog(i);
102         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
103
104         i = NEW(XonoticHUDAmmoDialog);
105         i.configureDialog(i);
106         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
107
108         i = NEW(XonoticHUDHealthArmorDialog);
109         i.configureDialog(i);
110         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
111
112         i = NEW(XonoticHUDChatDialog);
113         i.configureDialog(i);
114         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
115
116         i = NEW(XonoticHUDModIconsDialog);
117         i.configureDialog(i);
118         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
119
120         i = NEW(XonoticHUDPowerupsDialog);
121         i.configureDialog(i);
122         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
123
124         i = NEW(XonoticHUDPressedKeysDialog);
125         i.configureDialog(i);
126         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
127
128         i = NEW(XonoticHUDRaceTimerDialog);
129         i.configureDialog(i);
130         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
131
132         i = NEW(XonoticHUDRadarDialog);
133         i.configureDialog(i);
134         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
135
136         i = NEW(XonoticHUDScoreDialog);
137         i.configureDialog(i);
138         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
139
140         i = NEW(XonoticHUDTimerDialog);
141         i.configureDialog(i);
142         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
143
144         i = NEW(XonoticHUDVoteDialog);
145         i.configureDialog(i);
146         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
147
148         i = NEW(XonoticHUDWeaponsDialog);
149         i.configureDialog(i);
150         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
151
152         i = NEW(XonoticHUDEngineInfoDialog);
153         i.configureDialog(i);
154         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
155
156         i = NEW(XonoticHUDInfoMessagesDialog);
157         i.configureDialog(i);
158         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
159
160         i = NEW(XonoticHUDPhysicsDialog);
161         i.configureDialog(i);
162         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
163
164         i = NEW(XonoticHUDCenterprintDialog);
165         i.configureDialog(i);
166         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
167
168         i = NEW(XonoticHUDItemsTimeDialog);
169         i.configureDialog(i);
170         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
171
172         i = NEW(XonoticHUDQuickMenuDialog);
173         i.configureDialog(i);
174         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
175
176         i = NEW(XonoticHUDStrafeHUDDialog);
177         i.configureDialog(i);
178         me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
179
180         // dialogs used by settings
181         me.userbindEditDialog = i = NEW(XonoticUserbindEditDialog);
182         i.configureDialog(i);
183         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
184
185         me.bindingsResetDialog = i = NEW(XonoticBindingsResetDialog);
186         i.configureDialog(i);
187         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
188
189         me.cvarsDialog = i = NEW(XonoticCvarsDialog);
190         i.configureDialog(i);
191         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
192
193         me.resetDialog = i = NEW(XonoticResetDialog);
194         i.configureDialog(i);
195         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
196
197         me.languageWarningDialog = i = NEW(XonoticLanguageWarningDialog);
198         i.configureDialog(i);
199         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
200
201         me.hudconfirmDialog = i = NEW(XonoticHUDConfirmDialog);
202         i.configureDialog(i);
203         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
204
205
206         // dialog used by singleplayer
207         me.winnerDialog = i = NEW(XonoticWinnerDialog);
208         i.configureDialog(i);
209         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
210
211
212         // dialog used by multiplayer/join
213         me.serverInfoDialog = i = NEW(XonoticServerInfoDialog);
214         i.configureDialog(i);
215         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
216
217         me.demostartconfirmDialog = i = NEW(XonoticDemoStartConfirmDialog);
218         i.configureDialog(i);
219         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
220
221         me.demotimeconfirmDialog = i = NEW(XonoticDemoTimeConfirmDialog);
222         i.configureDialog(i);
223         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
224
225
226         // dialogs used by multiplayer/create
227         me.mapInfoDialog = i = NEW(XonoticMapInfoDialog);
228         i.configureDialog(i);
229         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
230
231         me.mutatorsDialog = i = NEW(XonoticMutatorsDialog);
232         i.configureDialog(i);
233         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
234
235
236         // dialogs used by multiplayer/media
237         me.screenshotViewerDialog = i = NEW(XonoticScreenshotViewerDialog);
238         i.configureDialog(i);
239         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
240
241
242         // mutator dialogs
243         i = NEW(XonoticSandboxToolsDialog);
244         i.configureDialog(i);
245         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z * SKINALPHA_DIALOG_SANDBOXTOOLS);
246
247
248         // miscellaneous dialogs
249         i = NEW(XonoticGameMenuDialog);
250         i.configureDialog(i);
251         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
252
253         i = NEW(XonoticTeamSelectDialog);
254         i.configureDialog(i);
255         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
256
257         i = NEW(XonoticUid2NameDialog);
258         i.configureDialog(i);
259         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
260
261         i = NEW(XonoticMonsterToolsDialog);
262         i.configureDialog(i);
263         me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z * SKINALPHA_DIALOG_SANDBOXTOOLS);
264
265         MUTATOR_CALLHOOK(ConfigureDialogs, me);
266
267
268         // main dialogs/windows
269         me.mainNexposee = n = NEW(XonoticNexposee);
270
271         /*
272                 if(checkextension("DP_GECKO_SUPPORT"))
273                 {
274                         i = spawnXonoticNewsDialog();
275                         i.configureDialog(i);
276                         n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
277                         n.setNexposee(n, i, '0.1 0.1 0', SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
278                 }
279         */
280
281                 i = NEW(XonoticSingleplayerDialog);
282                 i.configureDialog(i);
283                 n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
284                 n.setNexposee(n, i, SKINPOSITION_DIALOG_SINGLEPLAYER, SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
285
286                 i = NEW(XonoticMultiplayerDialog);
287                 i.configureDialog(i);
288                 n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
289                 n.setNexposee(n, i, SKINPOSITION_DIALOG_MULTIPLAYER, SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
290
291                 i = NEW(XonoticSettingsDialog);
292                 i.configureDialog(i);
293                 n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
294                 n.setNexposee(n, i, SKINPOSITION_DIALOG_SETTINGS, SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
295
296                 i = NEW(XonoticCreditsDialog);
297                 i.configureDialog(i);
298                 n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
299                 n.setNexposee(n, i, SKINPOSITION_DIALOG_CREDITS, SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
300                 n.pullNexposee(n, i, eY * (SKINHEIGHT_TITLE * SKINFONTSIZE_TITLE / conheight));
301
302                 i = NEW(XonoticQuitDialog);
303                 i.configureDialog(i);
304                 n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
305                 n.setNexposee(n, i, SKINPOSITION_DIALOG_QUIT, SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
306                 n.pullNexposee(n, i, eY * (SKINHEIGHT_TITLE * SKINFONTSIZE_TITLE / conheight));
307
308         me.addItem(me, n, '0 0 0', '1 1 0', SKINALPHAS_MAINMENU_z);
309         me.moveItemAfter(me, n, NULL);
310
311         me.initializeDialog(me, n);
312 }