#include "nexposee.qh"
#include "inputbox.qh"
+#include "dialog_termsofservice.qh"
#include "dialog_firstrun.qh"
#include "dialog_hudsetup_exit.qh"
#include "dialog_hudpanel_notification.qh"
#include "dialog_hudpanel_centerprint.qh"
#include "dialog_hudpanel_itemstime.qh"
#include "dialog_hudpanel_quickmenu.qh"
+#include "dialog_hudpanel_strafehud.qh"
#include "dialog_settings_input_userbind.qh"
#include "dialog_settings_bindings_reset.qh"
#include "dialog_multiplayer_create_mutators.qh"
#include "dialog_sandboxtools.qh"
#include "dialog_monstertools.qh"
+#include "dialog_gamemenu.qh"
+#include "dialog_welcome.qh"
#include "dialog_teamselect.qh"
#include "dialog_uid2name.qh"
#include "dialog_singleplayer.qh"
#include "dialog_credits.qh"
#include "dialog_quit.qh"
-#include "dialog_disconnect.qh"
-
-
-
void MainWindow_draw(entity me)
{
SUPER(MainWindow).draw(me);
- if(me.dialogToShow)
- {
- DialogOpenButton_Click_withCoords(NULL, me.dialogToShow, '0 0 0', eX * conwidth + eY * conheight);
- me.dialogToShow = NULL;
- }
-
- //-------------------------------------
- // Part of Disconnect Dialog button:
- // In case of this function is recalling every time, need to use condition of visibility
-
- if (me.disconnectDialogVisibility && !(gamestatus & (GAME_ISSERVER | GAME_CONNECTED)))
- {
- // If gamestate is not "ingame" (and it is a first "frame" of drawing (or dialog is visible)),
- // disconnect button is unnecessary, remove it
- me.removeItem(me.mainNexposee, me.disconnectDialog);
- me.disconnectDialogVisibility = 0;
-
- } else if(!me.disconnectDialogVisibility && (gamestatus & (GAME_ISSERVER | GAME_CONNECTED))) {
+ if (me.firstDraw) {
+ if (me.ToSDialog.shouldShow())
+ {
+ me.ToSDialog.loadXonoticToS(me.ToSDialog);
+ DialogOpenButton_Click_withCoords(NULL, me.ToSDialog, '0 0 0', eX * conwidth + eY * conheight);
+ }
+ else if(me.firstRunDialog.shouldShow())
+ DialogOpenButton_Click_withCoords(NULL, me.firstRunDialog, '0 0 0', eX * conwidth + eY * conheight);
- // If gamestate is "ingame" (and dialog is not visible),
- // make disconnect button visible
- entity n, i;
- n = me.mainNexposee;
- i = me.disconnectDialog;
- n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
- n.setNexposee(n, i, '0.5 1.2 0.0', SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
- me.disconnectDialogVisibility = 1;
+ me.firstDraw = false;
}
-
- // I haven't found the best solution for making button visible.
- // Alpha channel is the worst thing, because dialog with alpha is also clickable
- //-------------------------------------
}
void DemoButton_Click(entity me, entity other)
{
entity n, i;
+ // terms of service dialog
+ me.ToSDialog = i = NEW(XonoticToSDialog);
+ i.configureDialog(i);
+ me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+
// dialog run upon startup
me.firstRunDialog = i = NEW(XonoticFirstRunDialog);
i.configureDialog(i);
me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+ i = NEW(XonoticWelcomeDialog);
+ i.configureDialog(i);
+ me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+
// hud_configure dialogs
i = NEW(XonoticHUDExitDialog);
i.configureDialog(i);
me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+ i = NEW(XonoticHUDStrafeHUDDialog);
+ i.configureDialog(i);
+ me.addItemRightCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+
// dialogs used by settings
me.userbindEditDialog = i = NEW(XonoticUserbindEditDialog);
i.configureDialog(i);
// miscellaneous dialogs
+ i = NEW(XonoticGameMenuDialog);
+ i.configureDialog(i);
+ me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+
i = NEW(XonoticTeamSelectDialog);
i.configureDialog(i);
me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
// main dialogs/windows
me.mainNexposee = n = NEW(XonoticNexposee);
-
+
/*
if(checkextension("DP_GECKO_SUPPORT"))
{
n.setNexposee(n, i, '0.1 0.1 0', SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
}
*/
-
+
i = NEW(XonoticSingleplayerDialog);
i.configureDialog(i);
n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
n.setNexposee(n, i, SKINPOSITION_DIALOG_CREDITS, SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
n.pullNexposee(n, i, eY * (SKINHEIGHT_TITLE * SKINFONTSIZE_TITLE / conheight));
- //Disconnect dialog at center of screen (between credits and quit)
- i = NEW(XonoticDisconnectDialog);
- i.configureDialog(i);
- n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
- n.setNexposee(n, i, '0.5 1.2 0.0', SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
- n.pullNexposee(n, i, eY * (SKINHEIGHT_TITLE * SKINFONTSIZE_TITLE / conheight));
- me.disconnectDialog = i;
-
i = NEW(XonoticQuitDialog);
i.configureDialog(i);
n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
me.moveItemAfter(me, n, NULL);
me.initializeDialog(me, n);
- me.disconnectDialogVisibility = 1;
-
- if(cvar_string("_cl_name") == cvar_defstring("_cl_name"))
- me.dialogToShow = me.firstRunDialog;
}