]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Display server banner in the welcome dialog
authorterencehill <piuntn@gmail.com>
Sat, 7 Sep 2013 18:07:15 +0000 (20:07 +0200)
committerterencehill <piuntn@gmail.com>
Sat, 7 Sep 2013 18:07:15 +0000 (20:07 +0200)
qcsrc/client/Main.qc
qcsrc/menu/xonotic/dialog_welcome.c

index ae9a86a726b8c910e0ab74623bd407e0d1888d38..97afd14334b7669b94433a1751542c01b56f53d8 100644 (file)
@@ -1187,12 +1187,20 @@ void Net_WeaponComplain()
        }
 }
 
+string welcomedialog_args;
 void Net_ReadServerInfo()
 {
-       localcmd("\nmenu_cmd directmenu Welcome name \"", ReadString(),
-               "\" ip \"", ReadString(),
-               "\" motd \"", MakeConsoleSafe(strreplace("\n", "\\n", ReadString())),
-               "\"\n");
+       if(welcomedialog_args)
+               strunzone(welcomedialog_args);
+       welcomedialog_args = strcat("name \"", ReadString(), "\"");
+       welcomedialog_args = strcat(welcomedialog_args, "ip \"", ReadString(), "\"");
+       welcomedialog_args = strcat(welcomedialog_args, "motd \"", MakeConsoleSafe(strreplace("\n", "\\n", ReadString())), "\"");
+       string pic = ReadString();
+       if(pic != "")
+               welcomedialog_args = strcat(welcomedialog_args, "pic \"", pic, "\"");
+       localcmd("\nmenu_cmd directmenu Welcome ", welcomedialog_args, "\n");
+       welcomedialog_args = string_null;
+       return;
 }
 
 // CSQC_Parse_TempEntity : Handles all temporary entity network data in the CSQC layer.
index 111ed63a474a3fe2a05212ff30245a24e3516ea0..49c9ab4e81c04008c23244bc26b91de456c6e0e1 100644 (file)
@@ -16,6 +16,8 @@ CLASS(XonoticWelcomeDialog) EXTENDS(XonoticRootDialog)
        ATTRIB(XonoticWelcomeDialog, serverinfo_ip_ent, entity, world)
        ATTRIB(XonoticWelcomeDialog, serverinfo_MOTD, string, string_null)
        ATTRIB(XonoticWelcomeDialog, serverinfo_MOTD_ent, entity, world)
+       ATTRIB(XonoticWelcomeDialog, serverinfo_pic, string, string_null)
+       ATTRIB(XonoticWelcomeDialog, serverinfo_pic_ent, entity, NULL)
 ENDCLASS(XonoticWelcomeDialog)
 #endif
 
@@ -33,6 +35,10 @@ void welcomeDialog_resetStrings(entity me)
        if(me.serverinfo_MOTD)
                strunzone(me.serverinfo_MOTD);
        me.serverinfo_MOTD = strzone(_("<NO MOTD>"));
+
+       if(me.serverinfo_pic)
+               strunzone(me.serverinfo_pic);
+       me.serverinfo_pic = strzone("nopic");
 }
 void XonoticWelcomeDialog_configureDialog(entity me)
 {
@@ -67,11 +73,22 @@ void XonoticWelcomeDialog_readInputArgs(entity me, float argsbuf)
                        me.serverinfo_MOTD = strzone(bufstr_get(argsbuf, i + 1));
                        ++i;
                }
+               else if(s == "pic")
+               {
+                       if(me.serverinfo_pic)
+                               strunzone(me.serverinfo_pic);
+                       me.serverinfo_pic = strzone(strcat("/", bufstr_get(argsbuf, i + 1)));
+                       ++i;
+               }
                ++i;
        }
        me.serverinfo_name_ent.setText(me.serverinfo_name_ent, me.serverinfo_name);
        me.serverinfo_ip_ent.setText(me.serverinfo_ip_ent, me.serverinfo_ip);
        me.serverinfo_MOTD_ent.setText(me.serverinfo_MOTD_ent, me.serverinfo_MOTD);
+
+       if(me.serverinfo_pic_ent.src)
+               strunzone(me.serverinfo_pic_ent.src);
+       me.serverinfo_pic_ent.src = strzone(me.serverinfo_pic);
 }
 
 void XonoticWelcomeDialog_fill(entity me)
@@ -79,12 +96,15 @@ void XonoticWelcomeDialog_fill(entity me)
        entity e;
 
        me.TR(me);
-               me.TD(me, 1, 4, me.serverinfo_name_ent = makeXonoticTextLabel(0.5, ""));
-       me.TR(me);
-               me.TD(me, 1, 4, me.serverinfo_ip_ent = makeXonoticTextLabel(0.5, ""));
-       me.TR(me);
-       me.TR(me);
-               me.TD(me, 10, 4, me.serverinfo_MOTD_ent = makeXonoticTextListBox());
+               me.TD(me, 4, 2, me.serverinfo_pic_ent = makeXonoticImage(string_null, 4.0/3.0));
+
+       me.gotoRC(me, 1, 2);
+               me.TD(me, 1, 2, me.serverinfo_name_ent = makeXonoticTextLabel(0, ""));
+       me.gotoRC(me, 2, 2);
+               me.TD(me, 1, 2, me.serverinfo_ip_ent = makeXonoticTextLabel(0, ""));
+
+       me.gotoRC(me, 4, 0);
+               me.TD(me, me.rows - 4 - 1, 4, me.serverinfo_MOTD_ent = makeXonoticTextListBox());
                        me.serverinfo_MOTD_ent.allowColors = 1;
        me.gotoRC(me, me.rows - 1, 0);
                me.TDempty(me, 1);