]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add "Quit campaign" / "Quit current game" button to the Quit dialogue, bind f11 to...
authorterencehill <piuntn@gmail.com>
Tue, 4 May 2021 09:50:46 +0000 (11:50 +0200)
committerterencehill <piuntn@gmail.com>
Tue, 4 May 2021 09:50:46 +0000 (11:50 +0200)
binds-xonotic.cfg
commands.cfg
qcsrc/menu/xonotic/_mod.inc
qcsrc/menu/xonotic/_mod.qh
qcsrc/menu/xonotic/dialog_disconnect.qc [deleted file]
qcsrc/menu/xonotic/dialog_disconnect.qh [deleted file]
qcsrc/menu/xonotic/dialog_quit.qc
qcsrc/menu/xonotic/dialog_quit.qh
qcsrc/menu/xonotic/keybinder.qc
qcsrc/menu/xonotic/mainwindow.qc
qcsrc/menu/xonotic/mainwindow.qh

index 2fa44700c0ab445368a95fa310abf4bfec5e7819..6dd5fe2cfce66b5d0a29fcef27dadaeeb587bdc6 100644 (file)
@@ -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
 
index 60ffbced2ba90c275e2ea8b0ce0a1a673132d101..984f9372bd48c222b3d12e2039e91ba6c8f8ebdc 100644 (file)
@@ -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
index 0f9a960c92f657e0dc00ba00ff1ea3a26bdb10bd..e936a063ab36a9a3ddecd37b72c41d900cbcbdf3 100644 (file)
@@ -19,7 +19,6 @@
 #include <menu/xonotic/demolist.qc>
 #include <menu/xonotic/dialog.qc>
 #include <menu/xonotic/dialog_credits.qc>
-#include <menu/xonotic/dialog_disconnect.qc>
 #include <menu/xonotic/dialog_firstrun.qc>
 #include <menu/xonotic/dialog_hudpanel_ammo.qc>
 #include <menu/xonotic/dialog_hudpanel_centerprint.qc>
index 2bb4ccead24a71d6df581c6db654e49acd47cb7e..726c84428694470b7bb9b89f0462ccafe8308054 100644 (file)
@@ -19,7 +19,6 @@
 #include <menu/xonotic/demolist.qh>
 #include <menu/xonotic/dialog.qh>
 #include <menu/xonotic/dialog_credits.qh>
-#include <menu/xonotic/dialog_disconnect.qh>
 #include <menu/xonotic/dialog_firstrun.qh>
 #include <menu/xonotic/dialog_hudpanel_ammo.qh>
 #include <menu/xonotic/dialog_hudpanel_centerprint.qh>
diff --git a/qcsrc/menu/xonotic/dialog_disconnect.qc b/qcsrc/menu/xonotic/dialog_disconnect.qc
deleted file mode 100644 (file)
index 83e1ca0..0000000
+++ /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 (file)
index 5e397cd..0000000
+++ /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)
index 3f5b18712ea8263b277e72a4624a2ae0af65dd21..b9b18e72ef27e22b900348ae9ec9a086cbe8682c 100644 (file)
@@ -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;
 }
index 6e8c9fea9a9748d7346f6969f4be0ace5b4fe635..511422dc645f97acf60a9b89d43b81b4675392f3 100644 (file)
@@ -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)
index a0265c4e4b5a9060891073e8a60c4f4a245de223..4eff8b2f73ee1719f8f0da7bb2358313d152a331 100644 (file)
@@ -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"));
index 89a61fb0d89d2fff669177c4245b5c738d0aad4c..22853c9baa1664610fc5ac3092a0d9eb534e80aa 100644 (file)
 #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;
index 1e8afa4a39b1b3344ee7c4990247cdec9acd120e..924f145ba7d5f27143029d03417d8042d2b503e6 100644 (file)
@@ -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)