From: terencehill Date: Tue, 4 May 2021 09:50:46 +0000 (+0200) Subject: Add "Quit campaign" / "Quit current game" button to the Quit dialogue, bind f11 to... X-Git-Tag: xonotic-v0.8.5~129^2~21 X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=4721b2629df3ff604f686a9b3d66750cf5a7d104 Add "Quit campaign" / "Quit current game" button to the Quit dialogue, bind f11 to open the Quit dialogue and get rid of the Disconnect dialogue --- diff --git a/binds-xonotic.cfg b/binds-xonotic.cfg index 2fa44700c..6dd5fe2cf 100644 --- a/binds-xonotic.cfg +++ b/binds-xonotic.cfg @@ -62,7 +62,7 @@ bind i +show_info bind PAUSE pause bind F9 "cl_cmd hud minigame" bind F10 menu_showquitdialog -bind F11 menu_showdisconnectdialog +bind F11 menu_showquitdialog bind F12 screenshot bind F4 ready diff --git a/commands.cfg b/commands.cfg index 60ffbced2..984f9372b 100644 --- a/commands.cfg +++ b/commands.cfg @@ -116,7 +116,6 @@ alias menu_showhudexit "menu_cmd directmenu HUDExit" alias menu_showhudoptions "menu_cmd directpanelhudmenu ${* ?}" alias menu_showsandboxtools "menu_cmd directmenu SandboxTools" alias menu_showquitdialog "menu_cmd directmenu Quit" -alias menu_showdisconnectdialog "menu_cmd directmenu Disconnect" alias menu_showmonstertools "menu_cmd directmenu MonsterTools" // command executed before loading a map by the menu diff --git a/qcsrc/menu/xonotic/_mod.inc b/qcsrc/menu/xonotic/_mod.inc index 0f9a960c9..e936a063a 100644 --- a/qcsrc/menu/xonotic/_mod.inc +++ b/qcsrc/menu/xonotic/_mod.inc @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include diff --git a/qcsrc/menu/xonotic/_mod.qh b/qcsrc/menu/xonotic/_mod.qh index 2bb4ccead..726c84428 100644 --- a/qcsrc/menu/xonotic/_mod.qh +++ b/qcsrc/menu/xonotic/_mod.qh @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include diff --git a/qcsrc/menu/xonotic/dialog_disconnect.qc b/qcsrc/menu/xonotic/dialog_disconnect.qc deleted file mode 100644 index 83e1ca0e0..000000000 --- a/qcsrc/menu/xonotic/dialog_disconnect.qc +++ /dev/null @@ -1,25 +0,0 @@ -#include "dialog_disconnect.qh" - -#include "textlabel.qh" -#include "button.qh" - -void Disconnect_Click(entity btn, entity me) -{ - localcmd("disconnect\n"); - 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; -} diff --git a/qcsrc/menu/xonotic/dialog_disconnect.qh b/qcsrc/menu/xonotic/dialog_disconnect.qh deleted file mode 100644 index 5e397cd1c..000000000 --- a/qcsrc/menu/xonotic/dialog_disconnect.qh +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include "dialog.qh" -CLASS(XonoticDisconnectDialog, XonoticDialog) - METHOD(XonoticDisconnectDialog, fill, void(entity)); - ATTRIB(XonoticDisconnectDialog, title, string, _("Disconnect")); - ATTRIB(XonoticDisconnectDialog, tooltip, string, _("Disconnect from the server you are connected to")); - 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) diff --git a/qcsrc/menu/xonotic/dialog_quit.qc b/qcsrc/menu/xonotic/dialog_quit.qc index 3f5b18712..b9b18e72e 100644 --- a/qcsrc/menu/xonotic/dialog_quit.qc +++ b/qcsrc/menu/xonotic/dialog_quit.qc @@ -4,17 +4,35 @@ #include "commandbutton.qh" #include "button.qh" +void Disconnect_Click(entity btn, entity me) +{ + localcmd(QUITGAME_CMD); + Dialog_Close(btn, me); +} + +void XonoticQuitDialog_draw(entity me) +{ + entity e = me.disconnectButton; + e.disabled = !(gamestatus & (GAME_ISSERVER | GAME_CONNECTED)); + if(cvar("g_campaign")) + e.setText(e, _("Quit campaign")); + else + e.setText(e, _("Quit current game")); + SUPER(XonoticQuitDialog).draw(me); +} + void XonoticQuitDialog_fill(entity me) { entity e; me.TR(me); - me.TD(me, 1, 2, makeXonoticTextLabel(0.5, _("Are you sure you want to quit?"))); + me.TDempty(me, 0.5); + me.TD(me, 1, 1, me.disconnectButton = makeXonoticButton(string_null, '0 0 0')); + me.disconnectButton.onClick = Disconnect_Click; + me.disconnectButton.onClickEntity = me; me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticCommandButton_T(_("Yes"), '1 0 0', "echo ]quit; quit", 0, - _("Back to work..."))); - me.TD(me, 1, 1, e = makeXonoticButton_T(_("No"), '0 1 0', - _("I got some more fragging to do!"))); + me.TD(me, 1, 1, e = makeXonoticCommandButton(_("Quit Xonotic"), '1 0 0', "echo ]quit; quit", 0)); + me.TD(me, 1, 1, e = makeXonoticButton(_("Cancel"), '0 1 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_quit.qh b/qcsrc/menu/xonotic/dialog_quit.qh index 6e8c9fea9..511422dc6 100644 --- a/qcsrc/menu/xonotic/dialog_quit.qh +++ b/qcsrc/menu/xonotic/dialog_quit.qh @@ -3,6 +3,7 @@ #include "dialog.qh" CLASS(XonoticQuitDialog, XonoticDialog) METHOD(XonoticQuitDialog, fill, void(entity)); + METHOD(XonoticQuitDialog, draw, void(entity)); ATTRIB(XonoticQuitDialog, title, string, _("Quit")); ATTRIB(XonoticQuitDialog, tooltip, string, _("Quit the game")); ATTRIB(XonoticQuitDialog, color, vector, SKINCOLOR_DIALOG_QUIT); @@ -10,4 +11,5 @@ CLASS(XonoticQuitDialog, XonoticDialog) ATTRIB(XonoticQuitDialog, rows, float, 3); ATTRIB(XonoticQuitDialog, columns, float, 2); ATTRIB(XonoticQuitDialog, name, string, "Quit"); + ATTRIB(XonoticQuitDialog, disconnectButton, entity); ENDCLASS(XonoticQuitDialog) diff --git a/qcsrc/menu/xonotic/keybinder.qc b/qcsrc/menu/xonotic/keybinder.qc index a0265c4e4..4eff8b2f7 100644 --- a/qcsrc/menu/xonotic/keybinder.qc +++ b/qcsrc/menu/xonotic/keybinder.qc @@ -106,8 +106,7 @@ void KeyBinds_BuildList() KEYBIND_DEF("toggleconsole" , _("enter console")); string console_shortcut = strcat(translate_key("SHIFT"), "+", translate_key("ESCAPE")); KEYBIND_SPECIAL_DEF(console_shortcut, _("enter console")); - KEYBIND_DEF("disconnect" , _("disconnect")); - KEYBIND_DEF("menu_showquitdialog" , _("quit")); + KEYBIND_DEF("menu_showquitdialog" , _("disconnect / quit")); KEYBIND_EMPTY_LINE(); KEYBIND_HEADER(_("Teamplay")); diff --git a/qcsrc/menu/xonotic/mainwindow.qc b/qcsrc/menu/xonotic/mainwindow.qc index 89a61fb0d..22853c9ba 100644 --- a/qcsrc/menu/xonotic/mainwindow.qc +++ b/qcsrc/menu/xonotic/mainwindow.qc @@ -50,10 +50,6 @@ #include "dialog_credits.qh" #include "dialog_quit.qh" -#include "dialog_disconnect.qh" - - - void MainWindow_draw(entity me) { SUPER(MainWindow).draw(me); @@ -63,33 +59,6 @@ void MainWindow_draw(entity 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) @@ -281,7 +250,7 @@ void MainWindow_configureMainWindow(entity me) // main dialogs/windows me.mainNexposee = n = NEW(XonoticNexposee); - + /* if(checkextension("DP_GECKO_SUPPORT")) { @@ -291,7 +260,7 @@ void MainWindow_configureMainWindow(entity me) 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); @@ -313,14 +282,6 @@ void MainWindow_configureMainWindow(entity me) 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); @@ -331,7 +292,6 @@ void MainWindow_configureMainWindow(entity me) 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; diff --git a/qcsrc/menu/xonotic/mainwindow.qh b/qcsrc/menu/xonotic/mainwindow.qh index 1e8afa4a3..924f145ba 100644 --- a/qcsrc/menu/xonotic/mainwindow.qh +++ b/qcsrc/menu/xonotic/mainwindow.qh @@ -24,6 +24,4 @@ CLASS(MainWindow, ModalController) ATTRIB(MainWindow, demostartconfirmDialog, entity); ATTRIB(MainWindow, demotimeconfirmDialog, entity); ATTRIB(MainWindow, resetDialog, entity); - ATTRIB(MainWindow, disconnectDialog, entity); - ATTRIB(MainWindow, disconnectDialogVisibility, float, 1); ENDCLASS(MainWindow)