1 #include "leavematchbutton.qh"
3 // resets g_campaign and updates menu items to reflect cvar values that may have been restored after leaving the campaign
4 // the delay is for allowing listening to the button sound (if enabled), since the disconnect command stops all sounds
5 // menu_sync is also useful when leaving Instant Action mode
7 const string LEAVEMATCH_CMD = "defer 0.4 disconnect; defer 0.4 wait; defer 0.4 \"g_campaign 0\"; defer 0.4 menu_sync\n";
9 string leaveMatchButton_getText(entity me)
12 return _("Leave current match");
14 return _("Stop demo");
15 else if(cvar("g_campaign"))
16 return _("Leave campaign");
17 else if (isServerSingleplayer())
18 return _("Leave singleplayer");
20 return _("Leave multiplayer");
23 string leaveMatchButton_getTooltip(entity me)
25 if (me.disabled || isdemo())
27 else if(cvar("g_campaign"))
28 return _("Leave current campaign level");
29 else if (isServerSingleplayer())
30 return _("Leave current singleplayer match");
32 return _("Leave current multiplayer match / Disconnect from the server");
35 entity makeXonoticLeaveMatchButton(vector theColor, int theFlags)
38 me = NEW(XonoticLeaveMatchButton);
39 me.configureXonoticLeaveMatchButton(me, theColor, theFlags);
43 void XonoticLeaveMatchButton_draw(entity me)
45 SUPER(XonoticCommandButton).draw(me);
46 me.disabled = !(gamestatus & (GAME_ISSERVER | GAME_CONNECTED));
47 me.setText(me, leaveMatchButton_getText(me));
48 setZonedTooltip(me, leaveMatchButton_getTooltip(me), string_null);
51 void XonoticLeaveMatchButton_configureXonoticLeaveMatchButton(entity me, vector theColor, int theFlags)
53 me.configureXonoticCommandButton(me, string_null, theColor, LEAVEMATCH_CMD, theFlags, string_null);
54 me.draw = XonoticLeaveMatchButton_draw;