1 #include "dialog_welcome.qh"
4 #include "textlabel.qh"
6 #include "radiobutton.qh"
7 #include "commandbutton.qh"
9 #include <common/campaign_common.qh>
11 void welcomeDialog_resetStrings(entity me)
13 strcpy(me.serverinfo_name, _("Welcome"));
14 strcpy(me.serverinfo_MOTD, "");
17 float XonoticWelcomeDialog_keyDown(entity me, float key, float ascii, float shift)
24 XonoticCommandButton_Click(me.joinButton_ent, me);
27 return SUPER(XonoticWelcomeDialog).keyDown(me, key, ascii, shift);
31 // the same implentation in mousePress apparently works, but for some reason if you try to open
32 // the dialog again it doesn't show up and requires opening it a seconds time to show up
33 bool XonoticWelcomeDialog_mouseRelease(entity me, vector pos)
35 if (pos.x >= 0 && pos.y >= 0 && pos.x < 1 && pos.y < 1)
37 return SUPER(XonoticWelcomeDialog).mouseRelease(me, pos);
43 void XonoticWelcomeDialog_destroy(entity me)
45 cvar_set("_menu_welcome_dialog_available", "0");
48 void XonoticWelcomeDialog_readInputArgs(entity me, int argsbuf)
52 welcomeDialog_resetStrings(me);
54 while((s = bufstr_get(argsbuf, i)) != "")
57 strcpy(me.serverinfo_name, bufstr_get(argsbuf, ++i));
58 else if(s == "WELCOME")
59 strcpy(me.serverinfo_MOTD, bufstr_get(argsbuf, ++i));
60 else if(s == "CAMPAIGN")
62 strcpy(me.serverinfo_name, campaign_title);
64 int level = stoi(bufstr_get(argsbuf, ++i)) - 1;
66 if (level < 0 || level >= campaign_entries)
67 campaign_msg = strcat("^1Error: invalid level number ", itos(level + 1));
70 string desc = strcat(campaign_shortdesc[level], "\n\n", campaign_longdesc[level]);
71 desc = strreplace("\n", "\\n", desc);
72 campaign_msg = strreplace("_LEVEL_DESC", desc, bufstr_get(argsbuf, ++i));
74 strcpy(me.serverinfo_MOTD, campaign_msg);
79 welcomeDialog_resetStrings(me);
84 //me.serverinfo_name_ent.setText(me.serverinfo_name_ent, me.serverinfo_name);
85 me.serverinfo_MOTD_ent.setText(me.serverinfo_MOTD_ent, me.serverinfo_MOTD);
86 me.frame.setText(me.frame, me.serverinfo_name);
89 void XonoticWelcomeDialog_draw(entity me)
91 SUPER(XonoticWelcomeDialog).draw(me);
93 if (!(gamestatus & (GAME_ISSERVER | GAME_CONNECTED)))
96 if(me.serverinfo_MOTD == "" && (gamestatus & (GAME_CONNECTED | GAME_ISSERVER)))
98 // if serverinfo_MOTD is empty while connected it means we are connected to an old server
99 // in this case show the csqc welcome message and instantly close the dialog
100 localcmd("\n+show_info0; defer 2 -show_info0\n");
106 me.joinButton_ent.disabled = true;
107 me.spectateButton_ent.disabled = true;
111 me.joinButton_ent.disabled = false;
112 me.spectateButton_ent.disabled = false;
116 void XonoticWelcomeDialog_fill(entity me)
118 registercvar("_menu_welcome_dialog_available", "0", 0);
119 cvar_set("_menu_welcome_dialog_available", "1");
121 me.frame.allowColors = true; // allow color codes in the title
126 me.TD(me, me.rows - 1, me.columns, me.serverinfo_MOTD_ent = makeXonoticTextBox());
127 me.serverinfo_MOTD_ent.align = 0.5;
128 me.serverinfo_MOTD_ent.allowColors = true;
129 me.serverinfo_MOTD_ent.escapedNewLines = true;
130 me.gotoRC(me, me.rows - 1, 0);
131 me.TD(me, 1, me.columns / 2, me.joinButton_ent = makeXonoticCommandButton(_("Join"), '0 1 0', "cmd join", COMMANDBUTTON_CLOSE));
132 me.joinButton_ent.preferredFocusPriority = 1;
133 me.TD(me, 1, me.columns / 2, me.spectateButton_ent = makeXonoticCommandButton(_("Spectate"), '0 0 0', "cmd spectate", COMMANDBUTTON_CLOSE));