]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/leavematchbutton.qc
Merge branch 'bones_was_here/showspec' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / leavematchbutton.qc
1 #include "leavematchbutton.qh"
2
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
6 // see also m_draw
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";
8
9 string leaveMatchButton_getText(entity me)
10 {
11         if (me.disabled)
12                 return _("Leave current match");
13         else if(isdemo())
14                 return _("Stop demo");
15         else if(cvar("g_campaign"))
16                 return _("Leave campaign");
17         else if (isServerSingleplayer())
18                 return _("Leave singleplayer");
19         else
20                 return _("Leave multiplayer");
21 }
22
23 string leaveMatchButton_getTooltip(entity me)
24 {
25         if (me.disabled || isdemo())
26                 return "-";
27         else if(cvar("g_campaign"))
28                 return _("Leave current campaign level");
29         else if (isServerSingleplayer())
30                 return _("Leave current singleplayer match");
31         else
32                 return _("Leave current multiplayer match / Disconnect from the server");
33 }
34
35 entity makeXonoticLeaveMatchButton(vector theColor, int theFlags)
36 {
37         entity me;
38         me = NEW(XonoticLeaveMatchButton);
39         me.configureXonoticLeaveMatchButton(me, theColor, theFlags);
40         return me;
41 }
42
43 void XonoticLeaveMatchButton_draw(entity me)
44 {
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);
49 }
50
51 void XonoticLeaveMatchButton_configureXonoticLeaveMatchButton(entity me, vector theColor, int theFlags)
52 {
53         me.configureXonoticCommandButton(me, string_null, theColor, LEAVEMATCH_CMD, theFlags, string_null);
54         me.draw = XonoticLeaveMatchButton_draw;
55 }