]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
cl_welcome_in_menu_dialog 1 "1: show the welcome message in a dedicated menu dialog...
authorterencehill <piuntn@gmail.com>
Fri, 11 Mar 2022 20:39:33 +0000 (21:39 +0100)
committerterencehill <piuntn@gmail.com>
Sat, 12 Mar 2022 11:07:02 +0000 (12:07 +0100)
binds-xonotic.cfg
qcsrc/client/main.qc
qcsrc/client/main.qh
qcsrc/menu/xonotic/dialog_welcome.qc
qcsrc/menu/xonotic/dialog_welcome.qh
qcsrc/server/campaign.qc
qcsrc/server/client.qc
xonotic-client.cfg

index 9fd9877cca3cabdd016b84f4ebc5f35a4b725367..2fa44700c0ab445368a95fa310abf4bfec5e7819 100644 (file)
@@ -58,7 +58,7 @@ bind z messagemode2
 bind u "+con_chat_maximize"
 bind m +hud_panel_radar_maximized
 bind b "quickmenu"
-bind i menu_showwelcomedialog
+bind i +show_info
 bind PAUSE pause
 bind F9 "cl_cmd hud minigame"
 bind F10 menu_showquitdialog
index f3f06acd5521aca43b34745b63c73714a1f12cee..dde1467e69991a9cc2355071f1c9c2e6e5064486 100644 (file)
@@ -1286,15 +1286,23 @@ NET_HANDLE(TE_CSQC_WEAPONCOMPLAIN, bool isNew)
        }
 }
 
-string welcomedialog_args;
 NET_HANDLE(TE_CSQC_SERVERINFO, bool isNew)
 {
-       if(welcomedialog_args)
-               strunzone(welcomedialog_args);
-       welcomedialog_args = strcat("name \"", ReadString(), "\"");
-       welcomedialog_args = strcat(welcomedialog_args, " motd \"", MakeConsoleSafe(strreplace("\n", "\\n", ReadString())), "\"");
-       localcmd("\nmenu_cmd directmenu Welcome ", welcomedialog_args, "\n");
-       welcomedialog_args = string_null;
+       string hostname = ReadString();
+       string msg = ReadString();
+       // players running older Xonotic version without the Welocome dialog have the cvar
+       // cl_welcome_in_menu_dialog not saved because it was created by the relative autocvar
+       // initilaization when server's client program is run
+       if (cvar_type("cl_welcome_in_menu_dialog") & CVAR_TYPEFLAG_SAVED && autocvar_cl_welcome_in_menu_dialog)
+       {
+               string welcomedialog_args;
+               welcomedialog_args = strcat("name \"", hostname, "\"");
+               msg = MakeConsoleSafe(strreplace("\n", "\\n", msg));
+               welcomedialog_args = strcat(welcomedialog_args, " motd \"", msg, "\"");
+               localcmd("\nmenu_cmd directmenu Welcome ", welcomedialog_args, "\n");
+       }
+       else
+               centerprint_Add(ORDINAL(CPID_MOTD), strcat(hostname, "\n\n\n", msg), -1, 0);
        return true;
 }
 
index 83417c08d9c59ecd7a54c493f8c1bc40ec999d7f..56dae7f4f191d5216faf83e120c9d86447bd3444 100644 (file)
@@ -19,6 +19,7 @@ bool autocvar__hud_showbinds_reload;
 bool autocvar_developer_csqcentities;
 bool autocvar_cl_race_cptimes_onlyself; // TODO: move to race gamemode
 bool autocvar_cl_race_cptimes_showself = false;
+bool autocvar_cl_welcome_in_menu_dialog = true;
 
 // Map coordinate base calculations need these
 vector mi_center;
index 4c3166649d88304810918dc02e02eabe47f17723..86ba9a7949ddf69a5a1c25de3b4210e8340fa557 100644 (file)
@@ -17,6 +17,7 @@ void welcomeDialog_resetStrings(entity me)
                strunzone(me.serverinfo_MOTD);
        me.serverinfo_MOTD = strzone(_("<NO MOTD>"));
 }
+
 float XonoticWelcomeDialog_keyDown(entity me, float key, float ascii, float shift)
 {
        switch(key)
@@ -24,21 +25,19 @@ float XonoticWelcomeDialog_keyDown(entity me, float key, float ascii, float shif
                case K_KP_ENTER:
                case K_ENTER:
                case K_SPACE:
-                       XonoticWelcomeDialog_close(me);
+                       me.close(me);
                        return true;
                default:
                        return SUPER(XonoticWelcomeDialog).keyDown(me, key, ascii, shift);
        }
 }
-void XonoticWelcomeDialog_close(entity me)
-{
-       SUPER(XonoticWelcomeDialog).close(me);
-}
+
 void XonoticWelcomeDialog_configureDialog(entity me)
 {
        welcomeDialog_resetStrings(me);
        SUPER(XonoticWelcomeDialog).configureDialog(me);
 }
+
 void XonoticWelcomeDialog_readInputArgs(entity me, float argsbuf)
 {
        int i = 0;
@@ -63,7 +62,6 @@ void XonoticWelcomeDialog_readInputArgs(entity me, float argsbuf)
                }
                ++i;
        }
-       localcmd("\nwait; wait; +show_info; wait; wait; -show_info\n");
        //me.serverinfo_name_ent.setText(me.serverinfo_name_ent, me.serverinfo_name);
        me.serverinfo_MOTD_ent.setText(me.serverinfo_MOTD_ent, me.serverinfo_MOTD);
        me.frame.setText(me.frame, me.serverinfo_name);
index a1666ed029693a990f1d5e9cf82f19a0c65c8d1d..bc6c06d829ea39b6c95ea6383e3a1253edeb627a 100644 (file)
@@ -11,7 +11,6 @@ CLASS(XonoticWelcomeDialog, XonoticRootDialog)
        ATTRIB(XonoticWelcomeDialog, name, string, "Welcome");
 
        METHOD(XonoticWelcomeDialog, keyDown, float(entity, float, float, float));
-       METHOD(XonoticWelcomeDialog, close, void(entity));
        METHOD(XonoticWelcomeDialog, configureDialog, void(entity));
        METHOD(XonoticWelcomeDialog, readInputArgs, void(entity, float));
        ATTRIB(XonoticWelcomeDialog, serverinfo_name, string, string_null);
index a368938c2ddd37595fa7db9cb9ad96517ab25a4d..debc0566907dc8fdf2ce0102bf108bb53aae3e5d 100644 (file)
@@ -95,6 +95,7 @@ void CampaignPreInit()
        cvar_settemp("g_dm", "0");
        cvar_settemp("skill", ftos(baseskill));
        cvar_settemp("bot_number", ftos(campaign_bots[0]));
+       cvar_settemp("cl_welcome_in_menu_dialog", "0");
 
        MapInfo_SwitchGameType(MapInfo_Type_FromString(campaign_gametype[0], false));
 
index 3d0fffe0a0a538f3f850d48b5a8d762e42fd89e0..75c98a868972d499b59411cec10a5742e51d19b4 100644 (file)
@@ -1199,14 +1199,8 @@ void ClientConnect(entity this)
 
        MUTATOR_CALLHOOK(ClientConnect, this);
 
-       if (IS_REAL_CLIENT(this))
-       {
-               if (!autocvar_g_campaign && !IS_PLAYER(this))
-               {
-                       CS(this).motd_actived_time = -1;
-                       Send_Notification(NOTIF_ONE_ONLY, this, MSG_CENTER, CENTER_MOTD, getwelcomemessage(this));
-               }
-       }
+       if (IS_REAL_CLIENT(this) && !IS_PLAYER(this) && !autocvar_g_campaign)
+               CS(this).motd_actived_time = -1; // the welcome message is shown by the client
 }
 /*
 =============
index 09602a54325dfac4dce504df1bea44e8570d6087..beac1862e78e0e6b8a61db7d0fd0d53895f5c7e7 100644 (file)
@@ -23,8 +23,15 @@ alias use "impulse 21"
 cl_particles_forcetraileffects 1
 
 alias dropweapon "impulse 17"
-alias +show_info +button7
-alias -show_info -button7
+
+alias +show_info0 "+button7"
+alias -show_info0 "-button7"
+alias +show_info1 "menu_showwelcomedialog"
+alias -show_info1 ""
+
+seta cl_welcome_in_menu_dialog 1 "1: show the welcome message in a dedicated menu dialog; 0: show it as a centerprint message"
+alias +show_info +show_info$cl_welcome_in_menu_dialog
+alias -show_info -show_info$cl_welcome_in_menu_dialog
 
 // merge lightmaps up to 2048x2048 textures
 mod_q3bsp_lightmapmergepower 4