]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Reorganize serverinfo window and improve it slightly
authorSamual <samual@xonotic.org>
Fri, 20 Jan 2012 00:18:19 +0000 (19:18 -0500)
committerSamual <samual@xonotic.org>
Fri, 20 Jan 2012 00:18:19 +0000 (19:18 -0500)
qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c
qcsrc/menu/xonotic/playerlist.c

index 8bf090fe4b7320062c97628fff5427d8651f6f62..f4abb6065a8dd17bfdcf0ad6761c75b82de5043d 100644 (file)
@@ -5,8 +5,8 @@ CLASS(XonoticServerInfoDialog) EXTENDS(XonoticDialog)
        ATTRIB(XonoticServerInfoDialog, title, string, _("Server Information"))
        ATTRIB(XonoticServerInfoDialog, color, vector, SKINCOLOR_DIALOG_SERVERINFO)
        ATTRIB(XonoticServerInfoDialog, intendedWidth, float, 0.8)
-       ATTRIB(XonoticServerInfoDialog, rows, float, 15)
-       ATTRIB(XonoticServerInfoDialog, columns, float, 12)
+       ATTRIB(XonoticServerInfoDialog, rows, float, 18)
+       ATTRIB(XonoticServerInfoDialog, columns, float, 6.2)
 
        ATTRIB(XonoticServerInfoDialog, currentServerName, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerCName, string, string_null)
@@ -15,9 +15,9 @@ CLASS(XonoticServerInfoDialog) EXTENDS(XonoticDialog)
        ATTRIB(XonoticServerInfoDialog, currentServerPlayers, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerNumPlayers, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerNumBots, string, string_null)
+       ATTRIB(XonoticServerInfoDialog, currentServerNumFreeSlots, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerMod, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerVersion, string, string_null)
-       ATTRIB(XonoticServerInfoDialog, currentServerPing, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerKey, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerID, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerEncrypt, string, string_null)
@@ -30,9 +30,9 @@ CLASS(XonoticServerInfoDialog) EXTENDS(XonoticDialog)
        ATTRIB(XonoticServerInfoDialog, rawPlayerList, entity, NULL)
        ATTRIB(XonoticServerInfoDialog, numPlayersLabel, entity, NULL)
        ATTRIB(XonoticServerInfoDialog, numBotsLabel, entity, NULL)
+       ATTRIB(XonoticServerInfoDialog, numFreeSlotsLabel, entity, NULL)
        ATTRIB(XonoticServerInfoDialog, modLabel, entity, NULL)
        ATTRIB(XonoticServerInfoDialog, versionLabel, entity, NULL)
-       ATTRIB(XonoticServerInfoDialog, pingLabel, entity, NULL)
        ATTRIB(XonoticServerInfoDialog, keyLabel, entity, NULL)
        ATTRIB(XonoticServerInfoDialog, idLabel, entity, NULL)
        ATTRIB(XonoticServerInfoDialog, encryptLabel, entity, NULL)
@@ -49,7 +49,6 @@ float SLIST_FIELD_NUMHUMANS;
 float SLIST_FIELD_MAXPLAYERS;
 float SLIST_FIELD_NUMBOTS;
 float SLIST_FIELD_MOD;
-float SLIST_FIELD_PING;
 void Join_Click(entity btn, entity me);
 #endif
 
@@ -59,42 +58,49 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i)
        float m, pure, freeslots, j, numh, maxp, numb, sflags;
        string s, typestr, versionstr, k, v;
 
+       // ====================================
+       //  First clear and unzone the strings
+       // ====================================
        if(me.currentServerName)
                strunzone(me.currentServerName);
        me.currentServerName = string_null;
+       
        if(me.currentServerCName)
                strunzone(me.currentServerCName);
        me.currentServerCName = string_null;
+       
        if(me.currentServerType)
                strunzone(me.currentServerType);
        me.currentServerType = string_null;
+       
        if(me.currentServerMap)
                strunzone(me.currentServerMap);
        me.currentServerMap = string_null;
+       
        if(me.currentServerPlayers)
                strunzone(me.currentServerPlayers);
        me.currentServerPlayers = string_null;
+       
        if(me.currentServerNumPlayers)
                strunzone(me.currentServerNumPlayers);
        me.currentServerNumPlayers = string_null;
+       
        if(me.currentServerNumBots)
                strunzone(me.currentServerNumBots);
        me.currentServerNumBots = string_null;
+       
+       if(me.currentServerNumFreeSlots)
+               strunzone(me.currentServerNumFreeSlots);
+       me.currentServerNumFreeSlots = string_null;
+       
        if(me.currentServerMod)
                strunzone(me.currentServerMod);
        me.currentServerMod = string_null;
+       
        if(me.currentServerVersion)
                strunzone(me.currentServerVersion);
        me.currentServerVersion = string_null;
-       if(me.currentServerPing)
-               strunzone(me.currentServerPing);
-       me.currentServerPing = string_null;
-       if(me.currentServerKey)
-               strunzone(me.currentServerKey);
-       me.currentServerKey = string_null;
-       if(me.currentServerID)
-               strunzone(me.currentServerID);
-       me.currentServerID = string_null;
+       
        // not zoned!
        //if(me.currentServerEncrypt)
        //      strunzone(me.currentServerEncrypt);
@@ -102,7 +108,21 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i)
        if(me.currentServerPure)
                strunzone(me.currentServerPure);
        me.currentServerPure = string_null;
-
+       
+       //if(cvar("developer")) // only show these when developer is enabled
+       //{
+               if(me.currentServerKey)
+                       strunzone(me.currentServerKey);
+               me.currentServerKey = string_null;
+               
+               if(me.currentServerID)
+                       strunzone(me.currentServerID);
+               me.currentServerID = string_null;
+       //}
+
+       // ==========================
+       //  Now, fill in the strings
+       // ==========================
        SLIST_FIELD_NAME = gethostcacheindexforkey("name");
        me.currentServerName = strzone(gethostcachestring(SLIST_FIELD_NAME, i));
        me.nameLabel.setText(me.nameLabel, me.currentServerName);
@@ -139,6 +159,9 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i)
                        sflags = stof(v);
        }
 
+       j = MapInfo_Type_FromString(typestr); // try and get the real name of the game type
+       if(j) { typestr = MapInfo_Type_ToText(j); } // only set it if we actually found it
+       
        me.currentServerType = strzone(typestr);
        me.typeLabel.setText(me.typeLabel, me.currentServerType);
 
@@ -156,168 +179,170 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i)
        maxp = gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i);
        SLIST_FIELD_NUMBOTS = gethostcacheindexforkey("numbots");
        numb = gethostcachenumber(SLIST_FIELD_NUMBOTS, i);
-       if(freeslots < 0)
-               freeslots = maxp - numh - numb;
-       me.currentServerNumPlayers = strzone(sprintf(_("%d/%d, %d free player slots"), numh, maxp, freeslots));
+       me.currentServerNumPlayers = strzone(sprintf(_("%d/%d"), numh, maxp));
        me.numPlayersLabel.setText(me.numPlayersLabel, me.currentServerNumPlayers);
 
        s = ftos(numb);
        me.currentServerNumBots = strzone(s);
        me.numBotsLabel.setText(me.numBotsLabel, me.currentServerNumBots);
+       
+       if(freeslots < 0) { freeslots = maxp - numh - numb; }
+       s = ftos(freeslots);
+       me.currentServerNumFreeSlots = strzone(s);
+       me.numFreeSlotsLabel.setText(me.numFreeSlotsLabel, me.currentServerNumFreeSlots);
 
        SLIST_FIELD_MOD = gethostcacheindexforkey("mod");
-       me.currentServerMod = strzone(gethostcachestring(SLIST_FIELD_MOD, i));
+       s = gethostcachestring(SLIST_FIELD_MOD, i);
+       s = ((s == "data") ? _("Default") : s);
+       me.currentServerMod = strzone(s);
        me.modLabel.setText(me.modLabel, me.currentServerMod);
 
        me.currentServerVersion = strzone(versionstr);
        me.versionLabel.setText(me.versionLabel, me.currentServerVersion);
 
-       me.currentServerPure = ((pure < 0) ? "N/A" : (pure == 0) ? _("Official settings") : sprintf(_("%d modified settings"), pure));
+       me.currentServerPure = ((pure < 0) ? "N/A" : (pure == 0) ? _("Official") : sprintf(_("%d modified"), pure));
        me.currentServerPure = strzone(me.currentServerPure);
        me.pureLabel.setText(me.pureLabel, me.currentServerPure);
 
-       SLIST_FIELD_PING = gethostcacheindexforkey("ping");
-       s = ftos(gethostcachenumber(SLIST_FIELD_PING, i));
-       me.currentServerPing = strzone(s);
-       me.pingLabel.setText(me.pingLabel, me.currentServerPing);
-
-       s = crypto_getidfp(me.currentServerCName);
-       if not(s)
-               s = _("N/A");
-       me.currentServerID = strzone(s);
-       me.idLabel.setText(me.idLabel, me.currentServerID);
-
-       s = crypto_getkeyfp(me.currentServerCName);
-       if not(s)
-               s = _("N/A");
-       me.currentServerKey = strzone(s);
-       me.keyLabel.setText(me.keyLabel, me.currentServerKey);
-
        s = crypto_getencryptlevel(me.currentServerCName);
        if(s == "")
        {
                if(cvar("crypto_aeslevel") >= 3)
-                       me.currentServerEncrypt = _("N/A (can't connect)");
+                       me.currentServerEncrypt = _("N/A (auth library missing, can't connect)");
                else
-                       me.currentServerEncrypt = _("N/A");
+                       me.currentServerEncrypt = _("N/A (auth library missing)");
        }
        else switch(stof(substring(s, 0, 1)))
        {
                case 0:
                        if(cvar("crypto_aeslevel") >= 3)
-                               me.currentServerEncrypt = _("not supported (can't connect)");
+                               me.currentServerEncrypt = _("Not supported (can't connect)");
                        else
-                               me.currentServerEncrypt = _("not supported (won't encrypt)");
+                               me.currentServerEncrypt = _("Not supported (won't encrypt)");
                        break;
                case 1:
                        if(cvar("crypto_aeslevel") >= 2)
-                               me.currentServerEncrypt = _("supported (will encrypt)");
+                               me.currentServerEncrypt = _("Supported (will encrypt)");
                        else
-                               me.currentServerEncrypt = _("supported (won't encrypt)");
+                               me.currentServerEncrypt = _("Supported (won't encrypt)");
                        break;
                case 2:
                        if(cvar("crypto_aeslevel") >= 1)
-                               me.currentServerEncrypt = _("requested (will encrypt)");
+                               me.currentServerEncrypt = _("Requested (will encrypt)");
                        else
-                               me.currentServerEncrypt = _("requested (won't encrypt)");
+                               me.currentServerEncrypt = _("Requested (won't encrypt)");
                        break;
                case 3:
                        if(cvar("crypto_aeslevel") <= 0)
-                               me.currentServerEncrypt = _("required (can't connect)");
+                               me.currentServerEncrypt = _("Required (can't connect)");
                        else
-                               me.currentServerEncrypt = _("required (will encrypt)");
+                               me.currentServerEncrypt = _("Required (will encrypt)");
                        break;
        }
        me.encryptLabel.setText(me.encryptLabel, me.currentServerEncrypt);
+       
+       s = crypto_getidfp(me.currentServerCName);
+       if not(s) { s = _("N/A"); }
+       me.currentServerID = strzone(s);
+       me.idLabel.setText(me.idLabel, me.currentServerID);
+
+       s = crypto_getkeyfp(me.currentServerCName);
+       if not(s) { s = _("N/A"); }
+       me.currentServerKey = strzone(s);
+       me.keyLabel.setText(me.keyLabel, me.currentServerKey);
 }
 
 void XonoticServerInfoDialog_fill(entity me)
 {
        entity e;
        me.TR(me);
-               me.TD(me, 1, me.columns, e = makeXonoticTextLabel(0.5, ""));
-                       e.colorL = SKINCOLOR_SERVERINFO_NAME;
-                       e.allowCut = 1;
-                       me.nameLabel = e;
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Hostname:")));
+               me.TD(me, 1, 4.6, e = makeXonoticTextLabel(0.5, ""));
+               e.colorL = SKINCOLOR_SERVERINFO_NAME;
+               e.allowCut = 1;
+               me.nameLabel = e;
        me.TR(me);
-               me.TD(me, 1, me.columns, e = makeXonoticTextLabel(0.5, ""));
-                       e.colorL = SKINCOLOR_SERVERINFO_IP;
-                       e.allowCut = 1;
-                       me.cnameLabel = e;
-
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Address:")));
+               me.TD(me, 1, 4.6, e = makeXonoticTextLabel(0.5, ""));
+               e.colorL = SKINCOLOR_SERVERINFO_IP;
+               e.allowCut = 1;
+               me.cnameLabel = e;
+               
        me.TR(me);
-               me.TD(me, 1, 5.5, e = makeXonoticTextLabel(0, _("Players:")));
        me.TR(me);
-               me.TD(me, me.rows - 4, 6, e = makeXonoticPlayerList());
-                       me.rawPlayerList = e;
-
-       me.gotoRC(me, 1, 6.25); me.setFirstColumn(me, me.currentColumn);
-
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Gametype:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.typeLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Type:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.typeLabel = e;
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Map:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.mapLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Map:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.mapLabel = e;
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Mod:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.modLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Gameplay:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.pureLabel = e;
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Version:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.versionLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Players:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.numPlayersLabel = e;
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Settings:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.pureLabel = e;
+               
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Bots:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.numBotsLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Mod:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.modLabel = e;
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Players:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.numPlayersLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Version:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.versionLabel = e;
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Bots:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.numBotsLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Ping:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Free slots:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.numFreeSlotsLabel = e;
+               
+       me.gotoRC(me, me.rows - 5, 0);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Encryption:")));
+               me.TD(me, 1, 5.4, e = makeXonoticTextLabel(0, ""));
                        e.allowCut = 1;
-                       me.pingLabel = e;
-
+                       me.encryptLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("CA:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("ID:")));
+               me.TD(me, 1, 5.4, e = makeXonoticTextLabel(0, ""));
                        e.allowCut = 1;
                        me.keyLabel = e;
-
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Key:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Key:")));
+               me.TD(me, 1, 5.4, e = makeXonoticTextLabel(0, ""));
                        e.allowCut = 1;
                        me.idLabel = e;
 
+       me.gotoRC(me, 2, 2.2); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Players:")));
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Encryption:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.encryptLabel = e;
+               me.TD(me, me.rows - 8, 4, e = makeXonoticPlayerList());
+                       me.rawPlayerList = e;
 
        me.gotoRC(me, me.rows - 1, 0);
-
-               me.TD(me, 1, me.columns - 6, e = makeXonoticButton(_("Close"), '0 0 0'));
+               me.TD(me, 1, me.columns/2, e = makeXonoticButton(_("Close"), '0 0 0'));
                        e.onClick = Dialog_Close;
                        e.onClickEntity = me;
-               me.TD(me, 1, me.columns - 6, e = makeXonoticButton(_("Join!"), '0 0 0'));
+               //me.TD(me, 1, me.columns/3, e = makeXonoticButton("", '0 0 0')); // TODO: Add bookmark button here
+               //      e.onClick = ServerList_Favorite_Click;
+               //      e.onClickEntity = slist;
+               //      slist.favoriteButton = e;
+               me.TD(me, 1, me.columns/2, e = makeXonoticButton(_("Join!"), '0 0 0'));
                        e.onClick = Join_Click;
                        e.onClickEntity = me;
 }
index b3a658e3bd5732850058723633eb3ce8b12259a2..4c1c62af26d6319350776e9526782f1d5702b440 100644 (file)
@@ -84,7 +84,7 @@ void XonoticPlayerList_resizeNotify(entity me, vector relOrigin, vector relSize,
        me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
 
        // this list does 1 char left and right margin
-       me.columnScoreSize = 3 * me.realFontSize_x;
+       me.columnScoreSize = 5 * me.realFontSize_x;
        me.columnNameSize = 1 - 3 * me.realFontSize_x - me.columnScoreSize;
 
        me.columnNameOrigin = me.realFontSize_x;
@@ -115,7 +115,7 @@ void XonoticPlayerList_drawListBoxItem(entity me, float i, vector absSize, float
 
        if(substring(score, strlen(score) - 10, 10) == ":spectator")
        {
-               score = "-666";
+               score = _("spectator");
        }
        else
        {
@@ -123,6 +123,9 @@ void XonoticPlayerList_drawListBoxItem(entity me, float i, vector absSize, float
                        score = substring(score, 0, t);
                if((t = strstrofs(score, ",", 0)) >= 0)
                        score = substring(score, 0, t);
+                       
+               if(stof(score) == -666)
+                       score = _("spectator");
        }
 
        s = draw_TextShortenToWidth(s, me.columnNameSize, 1, me.realFontSize);