X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fdialog_welcome.qc;h=a7646047ec62b3b572a7aa6bf7c511baad9e6c22;hb=50ce40f7278957bcd42639ca3dcfbf55692aa298;hp=252ff93226b0a68a6de49dea90ed20afaef68241;hpb=b2901b232a00080258f6c5f564e9e7422a844df4;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/menu/xonotic/dialog_welcome.qc b/qcsrc/menu/xonotic/dialog_welcome.qc index 252ff9322..a7646047e 100644 --- a/qcsrc/menu/xonotic/dialog_welcome.qc +++ b/qcsrc/menu/xonotic/dialog_welcome.qc @@ -9,13 +9,8 @@ void welcomeDialog_resetStrings(entity me) { - if(me.serverinfo_name) - strunzone(me.serverinfo_name); - me.serverinfo_name = strzone(_("")); - - if(me.serverinfo_MOTD) - strunzone(me.serverinfo_MOTD); - me.serverinfo_MOTD = strzone(_("")); + strcpy(me.serverinfo_name, _("Welcome")); + strcpy(me.serverinfo_MOTD, ""); } float XonoticWelcomeDialog_keyDown(entity me, float key, float ascii, float shift) @@ -32,12 +27,16 @@ float XonoticWelcomeDialog_keyDown(entity me, float key, float ascii, float shif } } -void XonoticWelcomeDialog_configureDialog(entity me) +// the same implentation in mousePress apparently works, but for some reason if you try to open +// the dialog again it doesn't show up and requires opening it a seconds time to show up +bool XonoticWelcomeDialog_mouseRelease(entity me, vector pos) { - welcomeDialog_resetStrings(me); - SUPER(XonoticWelcomeDialog).configureDialog(me); - registercvar("_menu_welcome_dialog_available", "0", 0); - cvar_set("_menu_welcome_dialog_available", "1"); + if (pos.x >= 0 && pos.y >= 0 && pos.x < 1 && pos.y < 1) + { + return SUPER(XonoticWelcomeDialog).mouseRelease(me, pos); + } + me.close(me); + return true; } void XonoticWelcomeDialog_destroy(entity me) @@ -45,7 +44,7 @@ void XonoticWelcomeDialog_destroy(entity me) cvar_set("_menu_welcome_dialog_available", "0"); } -void XonoticWelcomeDialog_readInputArgs(entity me, float argsbuf) +void XonoticWelcomeDialog_readInputArgs(entity me, int argsbuf) { int i = 0; string s; @@ -53,19 +52,14 @@ void XonoticWelcomeDialog_readInputArgs(entity me, float argsbuf) if(argsbuf >= 0) while((s = bufstr_get(argsbuf, i)) != "") { - if(s == "name") - { - if(me.serverinfo_name) - strunzone(me.serverinfo_name); - me.serverinfo_name = strzone(bufstr_get(argsbuf, i + 1)); - ++i; - } - else if(s == "motd") + if(s == "HOSTNAME") + strcpy(me.serverinfo_name, bufstr_get(argsbuf, ++i)); + else if(s == "WELCOME") + strcpy(me.serverinfo_MOTD, bufstr_get(argsbuf, ++i)); + else if(s == "RESET") { - if(me.serverinfo_MOTD) - strunzone(me.serverinfo_MOTD); - me.serverinfo_MOTD = strzone(bufstr_get(argsbuf, i + 1)); - ++i; + welcomeDialog_resetStrings(me); + break; } ++i; } @@ -74,8 +68,23 @@ void XonoticWelcomeDialog_readInputArgs(entity me, float argsbuf) me.frame.setText(me.frame, me.serverinfo_name); } +void XonoticWelcomeDialog_draw(entity me) +{ + SUPER(XonoticWelcomeDialog).draw(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); + } +} + void XonoticWelcomeDialog_fill(entity me) { + registercvar("_menu_welcome_dialog_available", "0", 0); + cvar_set("_menu_welcome_dialog_available", "1"); + entity e; me.TR(me);