--- /dev/null
+#include "dialog_disconnect.qh"
+
+#include "textlabel.qh"
+#include "button.qh"
+
+void Disconnect_Click(entity btn, entity me)
+{
+ localcmd("disconnect");
+ Dialog_Close(btn, me);
+}
+
+void XonoticDisconnectDialog_fill(entity me)
+{
+ entity e;
+ me.TR(me);
+ me.TD(me, 1, 2, makeXonoticTextLabel(0.5, _("Are you sure to disconnect from server?")));
+ me.TR(me);
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeXonoticButton_T(_("Yes"), '1 0 0', _("I would disconnect from server...")));
+ e.onClick = Disconnect_Click;
+ e.onClickEntity = me;
+ me.TD(me, 1, 1, e = makeXonoticButton_T(_("No"), '0 1 0', _("I would play more!")));
+ e.onClick = Dialog_Close;
+ e.onClickEntity = me;
+}
\ No newline at end of file
--- /dev/null
+#pragma once
+
+#include "dialog.qh"
+CLASS(XonoticDisconnectDialog, XonoticDialog)
+ METHOD(XonoticDisconnectDialog, fill, void(entity));
+ ATTRIB(XonoticDisconnectDialog, title, string, _("Disconnect"));
+ ATTRIB(XonoticDisconnectDialog, tooltip, string, _("Disconnect server"));
+ ATTRIB(XonoticDisconnectDialog, color, vector, SKINCOLOR_DIALOG_QUIT);
+ ATTRIB(XonoticDisconnectDialog, intendedWidth, float, 0.5);
+ ATTRIB(XonoticDisconnectDialog, rows, float, 3);
+ ATTRIB(XonoticDisconnectDialog, colums, float, 2);
+ ATTRIB(XonoticDisconnectDialog, name, string, "Disconnect");
+ENDCLASS(XonoticDisconnectDialog)
\ No newline at end of file
#include "dialog_credits.qh"
#include "dialog_quit.qh"
+#include "dialog_disconnect.qc" //Including QH file breaking build, IDK why
+
+
+
void MainWindow_draw(entity me)
{
SUPER(MainWindow).draw(me);
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 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;
+ }
+
+ // 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)
// 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;