Upon selecting a player in the lobby, select the game where he/she is currently playing, observing or offline.

Select in that order to account for players that occur in multiple
games.

Patch By: fpre (a.k.a. ffffffff)
Feature design reviewed by: scythetwirler
Differential Revision: https://code.wildfiregames.com/D208
This was SVN commit r19287.
This commit is contained in:
elexis 2017-03-11 06:37:00 +00:00
parent b843da7384
commit 655ce95468
2 changed files with 50 additions and 1 deletions

View File

@ -443,6 +443,49 @@ function updatePlayerList()
playersBox.selected = playersBox.list.indexOf(g_SelectedPlayer);
}
/**
* Select the game listing the selected player when toggling the full games filter.
*/
function selectGameFromSelectedPlayername()
{
let playerList = Engine.GetGUIObjectByName("playersBox");
if (playerList.selected >= 0)
selectGameFromPlayername(playerList.list[playerList.selected]);
}
/**
* Select the game where the given player is currently playing, observing or offline.
* Selects in that order to account for players that occur in multiple games.
*/
function selectGameFromPlayername(playerName)
{
let gameList = Engine.GetGUIObjectByName("gamesBox");
let foundAsObserver = false;
for (let i = 0; i < g_GameList.length; ++i)
for (let player of stringifiedTeamListToPlayerData(g_GameList[i].players))
{
let result = /^(\S+)\ \(\d+\)$/g.exec(player.Name);
let nick = result ? result[1] : player.Name;
if (playerName != nick)
continue;
if (player.Team == "observer")
{
foundAsObserver = true;
gameList.selected = i;
}
else if (!player.Offline)
{
gameList.selected = i;
return;
}
else if (!foundAsObserver)
gameList.selected = i;
}
}
/**
* Display the profile of the selected player.
* Displays N/A for all stats until updateProfile is called when the stats
@ -457,7 +500,10 @@ function displayProfile(caller)
if (caller == "leaderboard")
playerList = Engine.GetGUIObjectByName("leaderboardBox");
else if (caller == "lobbylist")
{
playerList = Engine.GetGUIObjectByName("playersBox");
selectGameFromPlayername(playerList.list[playerList.selected]);
}
else if (caller == "fetch")
{
Engine.SendGetProfile(Engine.GetGUIObjectByName("fetchInput").caption);

View File

@ -250,7 +250,10 @@
style="ModernTickBox"
size="0 0 20 20"
font="sans-bold-13">
<action on="Press">applyFilters();</action>
<action on="Press">
applyFilters();
selectGameFromSelectedPlayername();
</action>
</object>
</object>