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:
parent
b843da7384
commit
655ce95468
@ -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);
|
||||
|
@ -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>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user