]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/xonotic/dialog_welcome.qc
Put GameLogInit() code in there instead of in spawnfunc(worldspawn)
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / dialog_welcome.qc
index 691e7cbf9f4af184daed175275fa4912d1fb97bc..ca80ef4dd780241e2c971810972628fd7a60a979 100644 (file)
@@ -9,8 +9,8 @@
 
 void welcomeDialog_resetStrings(entity me)
 {
-       strcpy(me.serverinfo_name, "<NO HOSTNAME>");
-       strcpy(me.serverinfo_MOTD, "<NO WELCOME MESSAGE>");
+       strcpy(me.serverinfo_name, _("Welcome"));
+       strcpy(me.serverinfo_MOTD, "");
 }
 
 float XonoticWelcomeDialog_keyDown(entity me, float key, float ascii, float shift)
@@ -27,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)
@@ -52,6 +56,11 @@ 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 == "RESET")
+               {
+                       welcomeDialog_resetStrings(me);
+                       break;
+               }
                ++i;
        }
        //me.serverinfo_name_ent.setText(me.serverinfo_name_ent, me.serverinfo_name);
@@ -59,8 +68,25 @@ 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(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");
+
+       me.frame.allowColors = true; // allow color codes in the title
+
        entity e;
 
        me.TR(me);