Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/gui/lobby/LobbyPage/GameList.js
Show All 20 Lines | constructor(xmppMessages, buddyButton, mapCache) | ||||
// Array of Game class instances sorted by display order | // Array of Game class instances sorted by display order | ||||
this.gameList = []; | this.gameList = []; | ||||
this.selectionChangeHandlers = new Set(); | this.selectionChangeHandlers = new Set(); | ||||
this.gamesBox = Engine.GetGUIObjectByName("gamesBox"); | this.gamesBox = Engine.GetGUIObjectByName("gamesBox"); | ||||
this.gamesBox.onSelectionChange = this.onSelectionChange.bind(this); | this.gamesBox.onSelectionChange = this.onSelectionChange.bind(this); | ||||
this.gamesBox.onSelectionColumnChange = this.onFilterChange.bind(this); | this.gamesBox.onSelectionColumnChange = this.onFilterChange.bind(this); | ||||
let ratingColumn = Engine.ConfigDB_GetValue("user", "lobby.columns.gamerating") == "true"; | |||||
this.gamesBox.hidden_mapType = ratingColumn; | |||||
this.gamesBox.hidden_gameRating = !ratingColumn; | |||||
// Avoid repeated array construction | // Avoid repeated array construction | ||||
this.list_buddy = []; | |||||
this.list_private = []; | this.list_private = []; | ||||
this.list_gameName = []; | this.list_gameName = []; | ||||
this.list_mapName = []; | this.list_mapName = []; | ||||
this.list_mapSize = []; | |||||
this.list_mapType = []; | this.list_mapType = []; | ||||
this.list_maxnbp = []; | this.list_maxnbp = []; | ||||
this.list_gameRating = []; | |||||
this.list = []; | this.list = []; | ||||
this.filters = []; | this.filters = []; | ||||
for (let name in GameListFilters) | for (let name in GameListFilters) | ||||
this.filters.push(new GameListFilters[name](this.onFilterChange.bind(this))); | this.filters.push(new GameListFilters[name](this.onFilterChange.bind(this))); | ||||
xmppMessages.registerXmppMessageHandler("game", "gamelist", this.rebuildGameList.bind(this)); | xmppMessages.registerXmppMessageHandler("game", "gamelist", this.rebuildGameList.bind(this)); | ||||
xmppMessages.registerXmppMessageHandler("system", "disconnected", this.rebuildGameList.bind(this)); | xmppMessages.registerXmppMessageHandler("system", "disconnected", this.rebuildGameList.bind(this)); | ||||
▲ Show 20 Lines • Show All 81 Lines • ▼ Show 20 Lines | Engine.ProfileStop(); | ||||
return 0; | return 0; | ||||
}); | }); | ||||
Engine.ProfileStop(); | Engine.ProfileStop(); | ||||
} | } | ||||
let selectedGameIndex = -1; | let selectedGameIndex = -1; | ||||
{ | { | ||||
const ratingSetting = Engine.ConfigDB_GetValue("user", "lobby.columns.gamerating") == "true"; | |||||
this.gamesBox.heading_maxnbp = ratingSetting ? translate("Players (rating)") : translate("Players"); | |||||
Engine.ProfileStart("setupGameList"); | Engine.ProfileStart("setupGameList"); | ||||
let length = this.gameList.length; | let length = this.gameList.length; | ||||
this.list_buddy.length = length; | |||||
this.list_private.length = length; | this.list_private.length = length; | ||||
this.list_gameName.length = length; | this.list_gameName.length = length; | ||||
this.list_mapName.length = length; | this.list_mapName.length = length; | ||||
this.list_mapSize.length = length; | |||||
this.list_mapType.length = length; | this.list_mapType.length = length; | ||||
this.list_maxnbp.length = length; | this.list_maxnbp.length = length; | ||||
this.list_gameRating.length = length; | |||||
this.list.length = length; | this.list.length = length; | ||||
this.gameList.forEach((game, i) => { | this.gameList.forEach((game, i) => { | ||||
let displayData = game.displayData; | let displayData = game.displayData; | ||||
this.list_buddy[i] = displayData.buddy || ""; | let mapName = displayData.mapName; | ||||
// Highlight number in mapName | |||||
for (let i = 2; i <= 8; i++) { | |||||
mapName = mapName.replaceAll(i, coloredText(i, "white")); | |||||
} | |||||
this.list_private[i] = displayData.private || ""; | this.list_private[i] = displayData.private || ""; | ||||
this.list_gameName[i] = displayData.gameName || ""; | this.list_gameName[i] = displayData.gameName || ""; | ||||
this.list_mapName[i] = displayData.mapName || ""; | this.list_mapName[i] = mapName || ""; | ||||
this.list_mapSize[i] = displayData.mapSize || ""; | this.list_mapType[i] = displayData.mapType + ` (${coloredText(displayData.mapSize, "white")})` || ""; | ||||
this.list_mapType[i] = displayData.mapType || ""; | this.list_maxnbp[i] = ratingSetting ? `${displayData.playerCount} ${displayData.buddy} (${coloredText(game.gameRating, PlayerColor.GetColorByRating(game.gameRating))})` || "" : `${displayData.playerCount} ${displayData.buddy}`|| ""; | ||||
this.list_maxnbp[i] = displayData.playerCount || ""; | |||||
this.list_gameRating[i] = game.gameRating || ""; | |||||
this.list[i] = ""; | this.list[i] = ""; | ||||
if (selectedGame && game.stanza.hostJID == selectedGame.stanza.hostJID && game.stanza.name == selectedGame.stanza.name) | if (selectedGame && game.stanza.hostJID == selectedGame.stanza.hostJID && game.stanza.name == selectedGame.stanza.name) | ||||
selectedGameIndex = i; | selectedGameIndex = i; | ||||
}); | }); | ||||
Engine.ProfileStop(); | Engine.ProfileStop(); | ||||
} | } | ||||
{ | { | ||||
Engine.ProfileStart("copyToGUI"); | Engine.ProfileStart("copyToGUI"); | ||||
let gamesBox = this.gamesBox; | let gamesBox = this.gamesBox; | ||||
gamesBox.list_private = this.list_private; | gamesBox.list_private = this.list_private; | ||||
gamesBox.list_buddy = this.list_buddy; | |||||
gamesBox.list_gameName = this.list_gameName; | gamesBox.list_gameName = this.list_gameName; | ||||
gamesBox.list_mapName = this.list_mapName; | gamesBox.list_mapName = this.list_mapName; | ||||
gamesBox.list_mapSize = this.list_mapSize; | |||||
gamesBox.list_mapType = this.list_mapType; | gamesBox.list_mapType = this.list_mapType; | ||||
gamesBox.list_maxnbp = this.list_maxnbp; | gamesBox.list_maxnbp = this.list_maxnbp; | ||||
gamesBox.list_gameRating = this.list_gameRating; | |||||
// Change these last, otherwise crash | // Change these last, otherwise crash | ||||
gamesBox.list = this.list; | gamesBox.list = this.list; | ||||
gamesBox.list_data = this.list; | gamesBox.list_data = this.list; | ||||
gamesBox.auto_scroll = false; | gamesBox.auto_scroll = false; | ||||
Engine.ProfileStop(); | Engine.ProfileStop(); | ||||
gamesBox.selected = selectedGameIndex; | gamesBox.selected = selectedGameIndex; | ||||
Show All 39 Lines |
Wildfire Games · Phabricator