Index: binaries/data/mods/public/gui/lobby/lobby.js =================================================================== --- binaries/data/mods/public/gui/lobby/lobby.js +++ binaries/data/mods/public/gui/lobby/lobby.js @@ -996,6 +996,7 @@ g_GameList = Engine.GetGameList().map(game => { game.hasBuddies = 0; + game.observersCount = 0; // Compute average rating of participating players let playerRatings = []; @@ -1006,6 +1007,8 @@ if (player.Team != "observer") playerRatings.push(playerNickRating.rating || g_DefaultLobbyRating); + else + ++game.observersCount; // Sort games with playing buddies above games with spectating buddies if (game.hasBuddies < 2 && g_Buddies.indexOf(playerNickRating.nick) != -1) @@ -1072,6 +1075,7 @@ let list = []; let list_data = []; let selectedGameIndex = -1; + let observerFmt = translate("+%(count)s"); for (let i in g_GameList) { @@ -1082,12 +1086,18 @@ if (game.ip == g_SelectedGameIP && game.port == g_SelectedGamePort) selectedGameIndex = +i; + let playerText = game.nbp + "/" + game.maxnbp; + if (game.observersCount > 0) + playerText += " " + coloredText(sprintf(observerFmt, { + "count": game.observersCount + }), "gray"); + list_buddy.push(game.hasBuddies ? coloredText(g_BuddySymbol, g_GameColors[game.state]) : ""); list_name.push(coloredText(gameName, g_GameColors[game.state])); list_mapName.push(translateMapTitle(game.niceMapName)); list_mapSize.push(translateMapSize(game.mapSize)); list_mapType.push(g_MapTypes.Title[mapTypeIdx] || ""); - list_nPlayers.push(game.nbp + "/" + game.maxnbp); + list_nPlayers.push(playerText); list_gameRating.push(game.gameRating); list.push(gameName); list_data.push(i);