Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/binaries/data/mods/public/gui/lobby/lobby.js
Show First 20 Lines • Show All 196 Lines • ▼ Show 20 Lines | "role": msg => { | ||||
translate("%(nick)s is not a moderator anymore."); | translate("%(nick)s is not a moderator anymore."); | ||||
addChatMessage({ | addChatMessage({ | ||||
"text": "/special " + sprintf(txt, { "nick": msg.text }), | "text": "/special " + sprintf(txt, { "nick": msg.text }), | ||||
"time": msg.time, | "time": msg.time, | ||||
"isSpecial": true | "isSpecial": true | ||||
}); | }); | ||||
// Update status information if that player is selected | |||||
if (g_SelectedPlayer == msg.text) | if (g_SelectedPlayer == msg.text) | ||||
{ | updateUserRoleText(g_SelectedPlayer); | ||||
let playersBox = Engine.GetGUIObjectByName("playersBox"); | |||||
playersBox.selected = playersBox.list.indexOf(g_SelectedPlayer); | |||||
} | |||||
}, | }, | ||||
"nick": msg => { | "nick": msg => { | ||||
addChatMessage({ | addChatMessage({ | ||||
"text": "/special " + sprintf(translate("%(oldnick)s is now known as %(newnick)s."), { | "text": "/special " + sprintf(translate("%(oldnick)s is now known as %(newnick)s."), { | ||||
"oldnick": msg.text, | "oldnick": msg.text, | ||||
"newnick": msg.data | "newnick": msg.data | ||||
}), | }), | ||||
"time": msg.time, | "time": msg.time, | ||||
▲ Show 20 Lines • Show All 339 Lines • ▼ Show 20 Lines | |||||
* Do a full update of the player listing, including ratings from cached C++ information. | * Do a full update of the player listing, including ratings from cached C++ information. | ||||
*/ | */ | ||||
function updatePlayerList() | function updatePlayerList() | ||||
{ | { | ||||
let playersBox = Engine.GetGUIObjectByName("playersBox"); | let playersBox = Engine.GetGUIObjectByName("playersBox"); | ||||
let sortBy = playersBox.selected_column || "name"; | let sortBy = playersBox.selected_column || "name"; | ||||
let sortOrder = playersBox.selected_column_order || 1; | let sortOrder = playersBox.selected_column_order || 1; | ||||
if (playersBox.selected > -1) | |||||
g_SelectedPlayer = playersBox.list[playersBox.selected]; | |||||
let buddyStatusList = []; | let buddyStatusList = []; | ||||
let playerList = []; | let playerList = []; | ||||
let presenceList = []; | let presenceList = []; | ||||
let nickList = []; | let nickList = []; | ||||
let ratingList = []; | let ratingList = []; | ||||
let cleanPlayerList = Engine.GetPlayerList().map(player => { | let cleanPlayerList = Engine.GetPlayerList().map(player => { | ||||
player.isBuddy = g_Buddies.indexOf(player.name) != -1; | player.isBuddy = g_Buddies.indexOf(player.name) != -1; | ||||
▲ Show 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | function updatePlayerList() | ||||
} | } | ||||
playersBox.list_buddy = buddyStatusList; | playersBox.list_buddy = buddyStatusList; | ||||
playersBox.list_name = playerList; | playersBox.list_name = playerList; | ||||
playersBox.list_status = presenceList; | playersBox.list_status = presenceList; | ||||
playersBox.list_rating = ratingList; | playersBox.list_rating = ratingList; | ||||
playersBox.list = nickList; | playersBox.list = nickList; | ||||
// To reduce rating-server load, only send the GUI event if the selection actually changed | |||||
if (playersBox.selected != playersBox.list.indexOf(g_SelectedPlayer)) | |||||
playersBox.selected = playersBox.list.indexOf(g_SelectedPlayer); | playersBox.selected = playersBox.list.indexOf(g_SelectedPlayer); | ||||
} | } | ||||
/** | /** | ||||
* Toggle buddy state for a player in playerlist within the user config | * Toggle buddy state for a player in playerlist within the user config | ||||
*/ | */ | ||||
function toggleBuddy() | function toggleBuddy() | ||||
{ | { | ||||
let playerList = Engine.GetGUIObjectByName("playersBox"); | let playerList = Engine.GetGUIObjectByName("playersBox"); | ||||
Show All 15 Lines | function toggleBuddy() | ||||
Engine.ConfigDB_CreateValue("user", "lobby.buddies", buddies); | Engine.ConfigDB_CreateValue("user", "lobby.buddies", buddies); | ||||
Engine.ConfigDB_WriteValueToFile("user", "lobby.buddies", buddies, "config/user.cfg"); | Engine.ConfigDB_WriteValueToFile("user", "lobby.buddies", buddies, "config/user.cfg"); | ||||
updatePlayerList(); | updatePlayerList(); | ||||
updateGameList(); | updateGameList(); | ||||
} | } | ||||
/** | /** | ||||
* Select the game listing the selected player when toggling the open games filter. | * Select the game where the selected player is currently playing, observing or offline. | ||||
*/ | |||||
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. | * Selects in that order to account for players that occur in multiple games. | ||||
*/ | */ | ||||
function selectGameFromPlayername(playerName) | function selectGameFromPlayername() | ||||
{ | { | ||||
if (!g_SelectedPlayer) | |||||
return; | |||||
let gameList = Engine.GetGUIObjectByName("gamesBox"); | let gameList = Engine.GetGUIObjectByName("gamesBox"); | ||||
let foundAsObserver = false; | let foundAsObserver = false; | ||||
for (let i = 0; i < g_GameList.length; ++i) | for (let i = 0; i < g_GameList.length; ++i) | ||||
for (let player of stringifiedTeamListToPlayerData(g_GameList[i].players)) | for (let player of stringifiedTeamListToPlayerData(g_GameList[i].players)) | ||||
{ | { | ||||
let nick = splitRatingFromNick(player.Name)[0]; | let nick = splitRatingFromNick(player.Name)[0]; | ||||
if (playerName != nick) | if (g_SelectedPlayer != nick) | ||||
continue; | continue; | ||||
if (player.Team == "observer") | if (player.Team == "observer") | ||||
{ | { | ||||
foundAsObserver = true; | foundAsObserver = true; | ||||
gameList.selected = i; | gameList.selected = i; | ||||
} | } | ||||
else if (!player.Offline) | else if (!player.Offline) | ||||
{ | { | ||||
gameList.selected = i; | gameList.selected = i; | ||||
return; | return; | ||||
} | } | ||||
else if (!foundAsObserver) | else if (!foundAsObserver) | ||||
gameList.selected = i; | gameList.selected = i; | ||||
} | } | ||||
} | } | ||||
function onPlayerListSelection() | function onPlayerListSelection() | ||||
{ | { | ||||
lookupSelectedUserProfile("playersBox"); | let playerList = Engine.GetGUIObjectByName("playersBox"); | ||||
if (playerList.selected == playerList.list.indexOf(g_SelectedPlayer)) | |||||
return; | |||||
g_SelectedPlayer = playerList.list[playerList.selected]; | |||||
lookupSelectedUserProfile("playersBox"); | |||||
updateToggleBuddy(); | updateToggleBuddy(); | ||||
selectGameFromPlayername(); | |||||
let playerList = Engine.GetGUIObjectByName("playersBox"); | |||||
if (playerList.selected != -1) | |||||
selectGameFromPlayername(playerList.list[playerList.selected]); | |||||
} | } | ||||
function setLeaderboardVisibility(visible) | function setLeaderboardVisibility(visible) | ||||
{ | { | ||||
if (visible) | if (visible) | ||||
Engine.SendGetBoardList(); | Engine.SendGetBoardList(); | ||||
lookupSelectedUserProfile(visible ? "leaderboardBox" : "playersBox"); | lookupSelectedUserProfile(visible ? "leaderboardBox" : "playersBox"); | ||||
Show All 27 Lines | function lookupSelectedUserProfile(guiObjectName) | ||||
Engine.GetGUIObjectByName("profileArea").hidden = !playerName && !Engine.GetGUIObjectByName("usernameText").caption; | Engine.GetGUIObjectByName("profileArea").hidden = !playerName && !Engine.GetGUIObjectByName("usernameText").caption; | ||||
if (!playerName) | if (!playerName) | ||||
return; | return; | ||||
Engine.SendGetProfile(playerName); | Engine.SendGetProfile(playerName); | ||||
Engine.GetGUIObjectByName("usernameText").caption = playerName; | Engine.GetGUIObjectByName("usernameText").caption = playerName; | ||||
Engine.GetGUIObjectByName("roleText").caption = g_RoleNames[Engine.LobbyGetPlayerRole(playerName) || "participant"]; | |||||
Engine.GetGUIObjectByName("rankText").caption = translate("N/A"); | Engine.GetGUIObjectByName("rankText").caption = translate("N/A"); | ||||
Engine.GetGUIObjectByName("highestRatingText").caption = translate("N/A"); | Engine.GetGUIObjectByName("highestRatingText").caption = translate("N/A"); | ||||
Engine.GetGUIObjectByName("totalGamesText").caption = translate("N/A"); | Engine.GetGUIObjectByName("totalGamesText").caption = translate("N/A"); | ||||
Engine.GetGUIObjectByName("winsText").caption = translate("N/A"); | Engine.GetGUIObjectByName("winsText").caption = translate("N/A"); | ||||
Engine.GetGUIObjectByName("lossesText").caption = translate("N/A"); | Engine.GetGUIObjectByName("lossesText").caption = translate("N/A"); | ||||
Engine.GetGUIObjectByName("ratioText").caption = translate("N/A"); | Engine.GetGUIObjectByName("ratioText").caption = translate("N/A"); | ||||
updateUserRoleText(playerName); | |||||
} | |||||
function updateUserRoleText(playerName) | |||||
{ | |||||
Engine.GetGUIObjectByName("roleText").caption = g_RoleNames[Engine.LobbyGetPlayerRole(playerName) || "participant"]; | |||||
} | } | ||||
/** | /** | ||||
* Update the profile of the selected player with data from the bot. | * Update the profile of the selected player with data from the bot. | ||||
*/ | */ | ||||
function updateProfile() | function updateProfile() | ||||
{ | { | ||||
let attributes = Engine.GetProfile()[0]; | let attributes = Engine.GetProfile()[0]; | ||||
▲ Show 20 Lines • Show All 652 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator