1
0
forked from 0ad/0ad

JS lobby cleanup.

Hide chat input and disable buddy toggle button upon disconnect.
Imrpove user profile fetching code readability, move and merge code from
XML.

Differential Revision: https://code.wildfiregames.com/D396
Reviewed By: Vladislav
This was SVN commit r19501.
This commit is contained in:
elexis 2017-05-01 13:36:10 +00:00
parent b22b58f13d
commit 0a09bde961
2 changed files with 59 additions and 44 deletions

View File

@ -132,7 +132,9 @@ var g_NetMessageTypes = {
updateLeaderboard();
updatePlayerList();
for (let button of ["host", "leaderboard", "userprofile"])
Engine.GetGUIObjectByName("chatInput").hidden = true;
for (let button of ["host", "leaderboard", "userprofile", "toggleBuddy"])
Engine.GetGUIObjectByName(button + "Button").enabled = false;
if (!g_Kicked)
@ -606,42 +608,57 @@ function selectGameFromPlayername(playerName)
}
}
function onPlayerListSelection()
{
lookupSelectedUserProfile("playersBox");
let playerList = Engine.GetGUIObjectByName("playersBox")
if (playerList.selected != -1)
selectGameFromPlayername(playerList.list[playerList.selected]);
}
function setLeaderboardVisibility(visible)
{
if (visible)
Engine.SendGetBoardList();
lookupSelectedUserProfile(visible ? "leaderboardBox" : "playersBox");
Engine.GetGUIObjectByName("leaderboard").hidden = !visible;
Engine.GetGUIObjectByName("fade").hidden = !visible;
}
function setUserProfileVisibility(visible)
{
Engine.GetGUIObjectByName("profileFetch").hidden = !visible;
Engine.GetGUIObjectByName("fade").hidden = !visible;
}
/**
* Display the profile of the selected player.
* Display the profile of the player in the user profile window.
*/
function lookupUserProfile()
{
Engine.SendGetProfile(Engine.GetGUIObjectByName("fetchInput").caption);
}
/**
* Display the profile of the selected player in the main window.
* Displays N/A for all stats until updateProfile is called when the stats
* are actually received from the bot.
*
* @param {string} caller - From which screen is the user requesting data from?
*/
function displayProfile(caller)
function lookupSelectedUserProfile(guiObjectName)
{
let playerList;
if (caller == "leaderboard")
playerList = Engine.GetGUIObjectByName("leaderboardBox");
else if (caller == "lobbylist")
{
playerList = Engine.GetGUIObjectByName("playersBox");
if (playerList.selected != -1)
selectGameFromPlayername(playerList.list[playerList.selected]);
}
else if (caller == "fetch")
{
Engine.SendGetProfile(Engine.GetGUIObjectByName("fetchInput").caption);
return;
}
else
return;
let playerList = Engine.GetGUIObjectByName(guiObjectName);
let playerName = playerList.list[playerList.selected];
Engine.GetGUIObjectByName("profileArea").hidden = !playerName;
Engine.GetGUIObjectByName("profileArea").hidden = !playerName && !Engine.GetGUIObjectByName("usernameText").caption;
if (!playerName)
return;
Engine.SendGetProfile(playerName);
let isModerator = Engine.LobbyGetPlayerRole(playerName) == "moderator";
Engine.GetGUIObjectByName("usernameText").caption = playerList.list_name[playerList.selected];
Engine.GetGUIObjectByName("usernameText").caption = playerName;
Engine.GetGUIObjectByName("roleText").caption = isModerator ? translate("Moderator") : translate("Player");
Engine.GetGUIObjectByName("rankText").caption = translate("N/A");
Engine.GetGUIObjectByName("highestRatingText").caption = translate("N/A");

View File

@ -47,7 +47,7 @@
<translatableAttribute id="heading">Rating</translatableAttribute>
</column>
<action on="SelectionChange">
displayProfile("lobbylist");
onPlayerListSelection();
</action>
<action on="SelectionColumnChange">
updatePlayerList();
@ -90,7 +90,7 @@
</object>
<object name="leftButtonPanel" size="20 100%-105 20% 100%-20">
<object name="toggleBuddy" type="button" style="ModernButtonRed" size="0 100%-85 100% 100%-60">
<object name="toggleBuddyButton" type="button" style="ModernButtonRed" size="0 100%-85 100% 100%-60">
<translatableAttribute id="caption" comment="Toggle Buddy">Toggle Buddy</translatableAttribute>
<action on="Press">
toggleBuddy();
@ -99,17 +99,13 @@
<object name="leaderboardButton" type="button" style="ModernButtonRed" size="0 100%-55 100% 100%-30">
<translatableAttribute id="caption">Leaderboard</translatableAttribute>
<action on="Press">
Engine.SendGetBoardList();
Engine.GetGUIObjectByName("leaderboard").hidden = false;
Engine.GetGUIObjectByName("fade").hidden = false;
displayProfile("leaderboard");
setLeaderboardVisibility(true);
</action>
</object>
<object name="userprofileButton" type="button" style="ModernButtonRed" size="0 100%-25 100% 100%">
<translatableAttribute id="caption">User Profile Lookup</translatableAttribute>
<action on="Press">
Engine.GetGUIObjectByName("profileFetch").hidden = false;
Engine.GetGUIObjectByName("fade").hidden = false;
setUserProfileVisibility(true);
</action>
</object>
</object>
@ -277,9 +273,10 @@
</object>
</object>
<!-- START Window for leaderboard stats -->
<!-- Add a translucent black background to fade out the menu page -->
<!-- Translucent black background -->
<object hidden="true" name="fade" type="image" z="100" sprite="ModernFade"/>
<!-- Leaderboard -->
<object hidden="true" name="leaderboard" type="image" style="ModernDialog" size="50%-224 50%-160 50%+224 50%+160" z="101">
<object style="ModernLabelText" type="text" size="50%-128 -18 50%+128 14">
<translatableAttribute id="caption">Leaderboard</translatableAttribute>
@ -298,15 +295,13 @@
<translatableAttribute id="heading">Rating</translatableAttribute>
</column>
<action on="SelectionChange">
displayProfile("leaderboard");
lookupSelectedUserProfile(this.name);
</action>
</object>
<object type="button" style="ModernButtonRed" size="50%-133 100%-45 50%-5 100%-17" hotkey="cancel">
<translatableAttribute id="caption">Back</translatableAttribute>
<action on="Press">
Engine.GetGUIObjectByName("leaderboard").hidden = true;
Engine.GetGUIObjectByName("fade").hidden = true;
displayProfile("lobbylist");
setLeaderboardVisibility(false);
</action>
</object>
<object type="button" style="ModernButtonRed" size="50%+5 100%-45 50%+133 100%-17">
@ -314,7 +309,9 @@
<action on="Press">Engine.SendGetBoardList();</action>
</object>
</object>
<!-- END Window for leaderboard stats -->
<!-- End of leaderboard -->
<!-- User profile lookup -->
<object hidden="true" name="profileFetch" type="image" style="ModernDialog" size="50%-224 50%-160 50%+224 50%+160" z="102">
<object style="ModernLabelText" type="text" size="50%-128 -18 50%+128 14">
<translatableAttribute id="caption">User Profile Lookup</translatableAttribute>
@ -323,11 +320,11 @@
<translatableAttribute id="caption">Enter username:</translatableAttribute>
</object>
<object name="fetchInput" size="40%+10 25 100%-25 50" type="input" style="ModernInput" font="sans-13">
<action on="Press">displayProfile("fetch");</action>
<action on="Press">lookupUserProfile();</action>
</object>
<object type="button" style="ModernButtonRed" size="50%-64 60 50%+64 85">
<translatableAttribute id="caption">View Profile</translatableAttribute>
<action on="Press">displayProfile("fetch");</action>
<action on="Press">lookupUserProfile();</action>
</object>
<object name="profileWindowPanel" size="25 95 100%-25 100%-60">
<object name="profileWindowBox" type="image" sprite="ModernDarkBoxGold" size="0 0 100% 100%">
@ -366,10 +363,11 @@
<object type="button" style="ModernButtonRed" size="50%-64 100%-50 50%+64 100%-25" hotkey="cancel">
<translatableAttribute id="caption">Back</translatableAttribute>
<action on="Press">
Engine.GetGUIObjectByName("profileFetch").hidden = true;
Engine.GetGUIObjectByName("fade").hidden = true;
setUserProfileVisibility(false);
</action>
</object>
</object>
<!-- End of user profile lookup -->
</object>
</objects>