From 9bffd9252ea3d10b0db26bdac0645c5d2066156c Mon Sep 17 00:00:00 2001 From: terencehill Date: Tue, 12 Apr 2022 18:40:39 +0200 Subject: [PATCH] Campaign: replace the "Join!" button with a "Restart level" button in the game menu to allow a quick level restart --- qcsrc/menu/xonotic/dialog_gamemenu.qc | 24 +++++++++++++++++++++++- qcsrc/menu/xonotic/dialog_gamemenu.qh | 2 ++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/qcsrc/menu/xonotic/dialog_gamemenu.qc b/qcsrc/menu/xonotic/dialog_gamemenu.qc index 6ab4973cc..68d612de3 100644 --- a/qcsrc/menu/xonotic/dialog_gamemenu.qc +++ b/qcsrc/menu/xonotic/dialog_gamemenu.qc @@ -10,6 +10,28 @@ void XonoticGameMenuDialog_destroy(entity me) cvar_set("_menu_gamemenu_dialog_available", "0"); } +void XonoticGameMenuDialog_draw(entity me) +{ + entity btn = me.joinButton; + if(cvar("g_campaign")) + { + if (btn.toString(btn) == _("Join!")) + { + btn.setText(btn, _("Restart level")); + btn.onClickCommand = "resetmatch"; + } + } + else + { + if (btn.toString(btn) == _("Restart level")) + { + btn.setText(btn, _("Join!")); + btn.onClickCommand = "join"; + } + } + SUPER(XonoticGameMenuDialog).draw(me); +} + void XonoticGameMenuDialog_fill(entity me) { registercvar("_menu_gamemenu_dialog_available", "0", 0); @@ -34,7 +56,7 @@ void XonoticGameMenuDialog_fill(entity me) me.TD(me, 1, 1, e = makeXonoticCommandButton(_("Quick menu"), '0 0 0', "quickmenu", COMMANDBUTTON_CLOSE)); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticCommandButton(_("Join!"), '0 0 0', "join", COMMANDBUTTON_CLOSE)); + me.TD(me, 1, 1, e = me.joinButton = makeXonoticCommandButton(_("Join!"), '0 0 0', "join", COMMANDBUTTON_CLOSE)); me.TR(me); me.TD(me, 1, 1, e = makeXonoticCommandButton(_("Spectate"), '0 0 0', "spec", COMMANDBUTTON_CLOSE)); me.TR(me); diff --git a/qcsrc/menu/xonotic/dialog_gamemenu.qh b/qcsrc/menu/xonotic/dialog_gamemenu.qh index 56ba58049..0aa0cf401 100644 --- a/qcsrc/menu/xonotic/dialog_gamemenu.qh +++ b/qcsrc/menu/xonotic/dialog_gamemenu.qh @@ -2,6 +2,7 @@ #include "rootdialog.qh" CLASS(XonoticGameMenuDialog, XonoticRootDialog) + METHOD(XonoticGameMenuDialog, draw, void(entity)); METHOD(XonoticGameMenuDialog, destroy, void(entity)); METHOD(XonoticGameMenuDialog, fill, void(entity)); ATTRIB(XonoticGameMenuDialog, title, string, _("Game menu")); @@ -11,4 +12,5 @@ CLASS(XonoticGameMenuDialog, XonoticRootDialog) ATTRIB(XonoticGameMenuDialog, columns, float, 1); ATTRIB(XonoticGameMenuDialog, name, string, "GameMenu"); ATTRIB(XonoticGameMenuDialog, requiresConnection, bool, true); + ATTRIB(XonoticGameMenuDialog, joinButton, entity, world); ENDCLASS(XonoticGameMenuDialog) -- 2.39.2