X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fdialog_multiplayer_join_serverinfo.c;h=5f6262cf45e5bdb508f69dd32f7117cd4b9c673e;hp=21eefeae6d72ef0ea83f5878215f6b85c7276321;hb=d2f8287ad70881aea79e61083c4659a402eb073e;hpb=2225edbce26affb2dd74dedd9c4458ef1d661552 diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c b/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c index 21eefeae6d..5f6262cf45 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c @@ -5,7 +5,7 @@ CLASS(XonoticServerInfoDialog) EXTENDS(XonoticDialog) ATTRIB(XonoticServerInfoDialog, title, string, "Server Information") ATTRIB(XonoticServerInfoDialog, color, vector, SKINCOLOR_DIALOG_SERVERINFO) ATTRIB(XonoticServerInfoDialog, intendedWidth, float, 0.68) - ATTRIB(XonoticServerInfoDialog, rows, float, 14) + ATTRIB(XonoticServerInfoDialog, rows, float, 15) ATTRIB(XonoticServerInfoDialog, columns, float, 12) ATTRIB(XonoticServerInfoDialog, currentServerName, string, string_null) @@ -21,7 +21,7 @@ CLASS(XonoticServerInfoDialog) EXTENDS(XonoticDialog) ATTRIB(XonoticServerInfoDialog, currentServerKey, string, string_null) ATTRIB(XonoticServerInfoDialog, currentServerID, string, string_null) ATTRIB(XonoticServerInfoDialog, currentServerEncrypt, string, string_null) - ATTRIB(XonoticServerInfoDialog, currentServerCanConnect, string, string_null) + ATTRIB(XonoticServerInfoDialog, currentServerPure, string, string_null) ATTRIB(XonoticServerInfoDialog, nameLabel, entity, NULL) ATTRIB(XonoticServerInfoDialog, cnameLabel, entity, NULL) @@ -37,6 +37,7 @@ CLASS(XonoticServerInfoDialog) EXTENDS(XonoticDialog) ATTRIB(XonoticServerInfoDialog, idLabel, entity, NULL) ATTRIB(XonoticServerInfoDialog, encryptLabel, entity, NULL) ATTRIB(XonoticServerInfoDialog, canConnectLabel, entity, NULL) + ATTRIB(XonoticServerInfoDialog, pureLabel, entity, NULL) ENDCLASS(XonoticServerInfoDialog) float SLIST_FIELD_NAME; @@ -55,8 +56,52 @@ void Join_Click(entity btn, entity me); #ifdef IMPLEMENTATION void XonoticServerInfoDialog_loadServerInfo(entity me, float i) { - float m; - string s, typestr, versionstr, numh, maxp; + float m, pure, j; + string s, typestr, versionstr, numh, maxp, k, v; + + 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.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); + //me.currentServerEncrypt = string_null; + if(me.currentServerPure) + strunzone(me.currentServerPure); + me.currentServerPure = string_null; SLIST_FIELD_NAME = gethostcacheindexforkey("name"); me.currentServerName = strzone(gethostcachestring(SLIST_FIELD_NAME, i)); @@ -66,19 +111,28 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) me.currentServerCName = strzone(gethostcachestring(SLIST_FIELD_CNAME, i)); me.cnameLabel.setText(me.cnameLabel, me.currentServerCName); + pure = -1; + typestr = "N/A"; + versionstr = "N/A"; + SLIST_FIELD_QCSTATUS = gethostcacheindexforkey("qcstatus"); s = gethostcachestring(SLIST_FIELD_QCSTATUS, i); m = tokenizebyseparator(s, ":"); - if(m > 1) + if(m >= 2) { - typestr = argv (0); + typestr = argv(0); versionstr = argv(1); } - else + for(j = 2; j < m; ++j) { - typestr = "N/A"; - versionstr = "N/A"; + if(argv(j) == "") + break; + k = substring(argv(j), 0, 1); + v = substring(argv(j), 1, -1); + if(k == "P") + pure = stof(v); } + me.currentServerType = strzone(typestr); me.typeLabel.setText(me.typeLabel, me.currentServerType); @@ -109,13 +163,15 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) 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 = 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); - print(me.currentServerCName, "\n"); - s = crypto_getidfp(me.currentServerCName); if not(s) s = "N/A"; @@ -142,19 +198,25 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) if(cvar("crypto_aeslevel") >= 3) me.currentServerEncrypt = "not supported (can't connect)"; else - me.currentServerEncrypt = "not supported"; + me.currentServerEncrypt = "not supported (won't encrypt)"; break; case 1: - me.currentServerEncrypt = "supported"; + if(cvar("crypto_aeslevel") >= 2) + me.currentServerEncrypt = "supported (will encrypt)"; + else + me.currentServerEncrypt = "supported (won't encrypt)"; break; case 2: - me.currentServerEncrypt = "requested"; + if(cvar("crypto_aeslevel") >= 1) + me.currentServerEncrypt = "requested (will encrypt)"; + else + me.currentServerEncrypt = "requested (won't encrypt)"; break; case 3: if(cvar("crypto_aeslevel") <= 0) me.currentServerEncrypt = "required (can't connect)"; else - me.currentServerEncrypt = "required"; + me.currentServerEncrypt = "required (will encrypt)"; break; } me.encryptLabel.setText(me.encryptLabel, me.currentServerEncrypt); @@ -192,6 +254,11 @@ void XonoticServerInfoDialog_fill(entity me) me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.mapLabel = 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.TR(me); me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Players:")); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));