X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fdialog_welcome.qc;h=addafe6c08c0493ba6b2a483ba1dee0004516632;hb=9d63bcaed353f093ad6297774e08c979a0135776;hp=7873931589cafd5406a252590e8ae4a30c957936;hpb=30bdff8b09fd741c5acebbe671f92a7c70076c0f;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/menu/xonotic/dialog_welcome.qc b/qcsrc/menu/xonotic/dialog_welcome.qc index 787393158..addafe6c0 100644 --- a/qcsrc/menu/xonotic/dialog_welcome.qc +++ b/qcsrc/menu/xonotic/dialog_welcome.qc @@ -6,11 +6,12 @@ #include "radiobutton.qh" #include "commandbutton.qh" #include "slider.qh" +#include void welcomeDialog_resetStrings(entity me) { - strcpy(me.serverinfo_name, ""); - strcpy(me.serverinfo_MOTD, ""); + strcpy(me.serverinfo_name, _("Welcome")); + strcpy(me.serverinfo_MOTD, ""); } float XonoticWelcomeDialog_keyDown(entity me, float key, float ascii, float shift) @@ -20,7 +21,7 @@ float XonoticWelcomeDialog_keyDown(entity me, float key, float ascii, float shif case K_KP_ENTER: case K_ENTER: case K_SPACE: - me.close(me); + XonoticCommandButton_Click(me.joinButton_ent, me); return true; default: return SUPER(XonoticWelcomeDialog).keyDown(me, key, ascii, shift); @@ -56,6 +57,28 @@ void XonoticWelcomeDialog_readInputArgs(entity me, int argsbuf) strcpy(me.serverinfo_name, bufstr_get(argsbuf, ++i)); else if(s == "WELCOME") strcpy(me.serverinfo_MOTD, bufstr_get(argsbuf, ++i)); + else if(s == "CAMPAIGN") + { + strcpy(me.serverinfo_name, campaign_title); + + int level = stoi(bufstr_get(argsbuf, ++i)) - 1; + string campaign_msg; + if (level < 0 || level >= campaign_entries) + campaign_msg = strcat("^1Error: invalid level number ", itos(level + 1)); + else + { + string desc = strcat(campaign_shortdesc[level], "\n\n", campaign_longdesc[level]); + desc = strreplace("\n", "\\n", desc); + campaign_msg = strreplace("_LEVEL_DESC", desc, bufstr_get(argsbuf, ++i)); + } + strcpy(me.serverinfo_MOTD, campaign_msg); + break; + } + else if(s == "RESET") + { + welcomeDialog_resetStrings(me); + break; + } ++i; } //me.serverinfo_name_ent.setText(me.serverinfo_name_ent, me.serverinfo_name); @@ -63,11 +86,40 @@ void XonoticWelcomeDialog_readInputArgs(entity me, int argsbuf) me.frame.setText(me.frame, me.serverinfo_name); } +void XonoticWelcomeDialog_draw(entity me) +{ + SUPER(XonoticWelcomeDialog).draw(me); + + if (!(gamestatus & (GAME_ISSERVER | GAME_CONNECTED))) + me.close(me); + + if(me.serverinfo_MOTD == "" && (gamestatus & (GAME_CONNECTED | GAME_ISSERVER))) + { + // if serverinfo_MOTD is empty while connected it means we are connected to an old server + // in this case show the csqc welcome message and instantly close the dialog + localcmd("\n+show_info0; defer 2 -show_info0\n"); + me.close(me); + } + + if (isdemo()) + { + me.joinButton_ent.disabled = true; + me.spectateButton_ent.disabled = true; + } + else + { + me.joinButton_ent.disabled = false; + me.spectateButton_ent.disabled = false; + } +} + void XonoticWelcomeDialog_fill(entity me) { registercvar("_menu_welcome_dialog_available", "0", 0); cvar_set("_menu_welcome_dialog_available", "1"); + me.frame.allowColors = true; // allow color codes in the title + entity e; me.TR(me); @@ -76,8 +128,7 @@ void XonoticWelcomeDialog_fill(entity me) me.serverinfo_MOTD_ent.allowColors = true; me.serverinfo_MOTD_ent.escapedNewLines = true; me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); - e.onClick = Dialog_Close; - e.onClickEntity = me; - e.preferredFocusPriority = 1; + me.TD(me, 1, me.columns / 2, me.joinButton_ent = makeXonoticCommandButton(_("Join"), '0 1 0', "cmd join", COMMANDBUTTON_CLOSE)); + me.joinButton_ent.preferredFocusPriority = 1; + me.TD(me, 1, me.columns / 2, me.spectateButton_ent = makeXonoticCommandButton(_("Spectate"), '0 0 0', "cmd spectate", COMMANDBUTTON_CLOSE)); }