From d8ecc2f87f56635e05eb3627f1f31111f8991262 Mon Sep 17 00:00:00 2001 From: elexis Date: Sun, 29 Nov 2015 01:29:38 +0000 Subject: [PATCH] Lobby cleanup. Designate constants as such. Comply with naming convention for globals. Quote object keys. Add few JSDoc comments. Refs #3383. This was SVN commit r17316. --- binaries/data/mods/public/gui/lobby/lobby.js | 86 ++++++++++++-------- 1 file changed, 51 insertions(+), 35 deletions(-) diff --git a/binaries/data/mods/public/gui/lobby/lobby.js b/binaries/data/mods/public/gui/lobby/lobby.js index b6e7b90371..18c995b564 100644 --- a/binaries/data/mods/public/gui/lobby/lobby.js +++ b/binaries/data/mods/public/gui/lobby/lobby.js @@ -1,21 +1,36 @@ const g_MapTypes = prepareForDropdown(g_Settings ? g_Settings.MapTypes : undefined); +const g_SpecialKey = Math.random(); + +/** + * Whether or not to display timestamps in the chat window. + */ +const g_ShowTimestamp = Engine.ConfigDB_GetValue("user", "lobby.chattimestamp") == "true"; + +/** + * Mute spammers for this time. + */ +const g_SpamBlockDuration = 30; + +/** + * A symbol which is prepended to the username of moderators. + */ +const g_ModeratorPrefix = "@"; + +/** + * Current username. + */ +const g_Name = Engine.LobbyGetNick(); var g_ChatMessages = []; -var g_Name = "unknown"; var g_GameList = {}; var g_GameListSortBy = "name"; var g_PlayerListSortBy = "name"; var g_GameListOrder = 1; // 1 for ascending sort, and -1 for descending var g_PlayerListOrder = 1; -var g_specialKey = Math.random(); // This object looks like {"name":[numMessagesSinceReset, lastReset, timeBlocked]} when in use. var g_spamMonitor = {}; -var g_timestamp = Engine.ConfigDB_GetValue("user", "lobby.chattimestamp") == "true"; var g_mapSizes = {}; var g_userRating = ""; // Rating of user, defaults to Unrated -var g_modPrefix = "@"; -// Block spammers for 30 seconds. -var SPAM_BLOCK_LENGTH = 30; //////////////////////////////////////////////////////////////////////////////////////////////// @@ -31,8 +46,6 @@ function init(attribs) initMusic(); global.music.setState(global.music.states.MENU); - g_Name = Engine.LobbyGetNick(); - g_mapSizes = initMapSizes(); g_mapSizes.shortNames.splice(0, 0, translateWithContext("map size", "Any")); g_mapSizes.tiles.splice(0, 0, ""); @@ -543,7 +556,7 @@ function formatPlayerListEntry(nickname, presence, rating) status = translate("Offline"); break; default: - warn(sprintf("Unknown presence '%(presence)s'", { presence: presence })); + warn(sprintf("Unknown presence '%(presence)s'", { "presence": presence })); color = "178 178 178"; status = translateWithContext("lobby presence", "Unknown"); break; @@ -555,7 +568,7 @@ function formatPlayerListEntry(nickname, presence, rating) var formattedRating = '[color="' + color + '"]' + rating + "[/color]"; var role = Engine.LobbyGetPlayerRole(nickname); if (role == "moderator") - nickname = g_modPrefix + nickname; + nickname = g_ModeratorPrefix + nickname; var formattedName = colorPlayerName(nickname); // Push this player's name and status onto the list @@ -621,12 +634,12 @@ function joinSelectedGame() // Check if it looks like an ip address if (sip.split('.').length != 4) { - addChatMessage({ "from": "system", "text": sprintf(translate("This game's address '%(ip)s' does not appear to be valid."), { ip: sip }) }); + addChatMessage({ "from": "system", "text": sprintf(translate("This game's address '%(ip)s' does not appear to be valid."), { "ip": sip }) }); return; } // Open Multiplayer connection window with join option. - Engine.PushGuiPage("page_gamesetup_mp.xml", { multiplayerGameType: "join", name: sname, ip: sip, rating: g_userRating }); + Engine.PushGuiPage("page_gamesetup_mp.xml", { "multiplayerGameType": "join", "name": sname, "ip": sip, "rating": g_userRating }); } } @@ -636,7 +649,7 @@ function joinSelectedGame() function hostGame() { // Open Multiplayer connection window with host option. - Engine.PushGuiPage("page_gamesetup_mp.xml", { multiplayerGameType: "host", name: g_Name, rating: g_userRating }); + Engine.PushGuiPage("page_gamesetup_mp.xml", { "multiplayerGameType": "host", "name": g_Name, "rating": g_userRating }); } //////////////////////////////////////////////////////////////////////////////////////////////// @@ -680,14 +693,14 @@ function onTick() switch(message.level) { case "join": - addChatMessage({ "text": "/special " + sprintf(translate("%(nick)s has joined."), { nick: nick }), "key": g_specialKey }); + addChatMessage({ "text": "/special " + sprintf(translate("%(nick)s has joined."), { "nick": nick }), "key": g_SpecialKey }); Engine.SendGetRatingList(); break; case "leave": - addChatMessage({ "text": "/special " + sprintf(translate("%(nick)s has left."), { nick: nick }), "key": g_specialKey }); + addChatMessage({ "text": "/special " + sprintf(translate("%(nick)s has left."), { "nick": nick }), "key": g_SpecialKey }); break; case "nick": - addChatMessage({ "text": "/special " + sprintf(translate("%(oldnick)s is now known as %(newnick)s."), { oldnick: nick, newnick: message.data }), "key": g_specialKey }); + addChatMessage({ "text": "/special " + sprintf(translate("%(oldnick)s is now known as %(newnick)s."), { "oldnick": nick, "newnick": message.data }), "key": g_SpecialKey }); break; case "presence": break; @@ -695,7 +708,7 @@ function onTick() updateSubject(message.text); break; default: - warn(sprintf("Unknown message.level '%(msglvl)s'", { msglvl: message.level })); + warn(sprintf("Unknown message.level '%(msglvl)s'", { "msglvl": message.level })); break; } // We might receive many join/leaves when returning to the lobby from a long game. @@ -745,7 +758,7 @@ function onTick() } break; default: - error(sprintf("Unrecognised message type %(msgtype)s", { msgtype: message.type })); + error(sprintf("Unrecognised message type %(msgtype)s", { "msgtype": message.type })); } } } @@ -804,7 +817,10 @@ function handleSpecialCommand(text) case "me": return false; default: - addChatMessage({ "from":"system", "text": sprintf(translate("We're sorry, the '%(cmd)s' command is not supported."), { cmd: cmd})}); + addChatMessage({ + "from": "system", + "text": sprintf(translate("We're sorry, the '%(cmd)s' command is not supported."), { "cmd": cmd }) + }); } return true; } @@ -822,7 +838,7 @@ function addChatMessage(msg) // Display the moderator symbol in the chatbox. var playerRole = Engine.LobbyGetPlayerRole(msg.from); if (playerRole == "moderator") - msg.from = g_modPrefix + msg.from; + msg.from = g_ModeratorPrefix + msg.from; } else msg.from = null; @@ -888,26 +904,26 @@ function ircFormat(text, from, color, key, datetime) { case "me": // Translation: IRC message prefix when the sender uses the /me command. - var senderString = '[font="sans-bold-13"]' + sprintf(translate("* %(sender)s"), { sender: coloredFrom }) + '[/font]'; + var senderString = '[font="sans-bold-13"]' + sprintf(translate("* %(sender)s"), { "sender": coloredFrom }) + '[/font]'; // Translation: IRC message issued using the ‘/me’ command. - var formattedMessage = sprintf(translate("%(sender)s %(action)s"), { sender: senderString, action: message }); + var formattedMessage = sprintf(translate("%(sender)s %(action)s"), { "sender": senderString, "action": message }); break; case "say": // Translation: IRC message prefix. - var senderString = '[font="sans-bold-13"]' + sprintf(translate("<%(sender)s>"), { sender: coloredFrom }) + '[/font]'; + var senderString = '[font="sans-bold-13"]' + sprintf(translate("<%(sender)s>"), { "sender": coloredFrom }) + '[/font]'; // Translation: IRC message. - var formattedMessage = sprintf(translate("%(sender)s %(message)s"), { sender: senderString, message: message }); + var formattedMessage = sprintf(translate("%(sender)s %(message)s"), { "sender": senderString, "message": message }); break; case "special": - if (key === g_specialKey) + if (key === g_SpecialKey) // Translation: IRC system message. - var formattedMessage = '[font="sans-bold-13"]' + sprintf(translate("== %(message)s"), { message: message }) + '[/font]'; + var formattedMessage = '[font="sans-bold-13"]' + sprintf(translate("== %(message)s"), { "message": message }) + '[/font]'; else { // Translation: IRC message prefix. - var senderString = '[font="sans-bold-13"]' + sprintf(translate("<%(sender)s>"), { sender: coloredFrom }) + '[/font]'; + var senderString = '[font="sans-bold-13"]' + sprintf(translate("<%(sender)s>"), { "sender": coloredFrom }) + '[/font]'; // Translation: IRC message. - var formattedMessage = sprintf(translate("%(sender)s %(message)s"), { sender: senderString, message: message }); + var formattedMessage = sprintf(translate("%(sender)s %(message)s"), { "sender": senderString, "message": message }); } break; default: @@ -918,13 +934,13 @@ function ircFormat(text, from, color, key, datetime) else { // Translation: IRC message prefix. - var senderString = '[font="sans-bold-13"]' + sprintf(translate("<%(sender)s>"), { sender: coloredFrom }) + '[/font]'; + var senderString = '[font="sans-bold-13"]' + sprintf(translate("<%(sender)s>"), { "sender": coloredFrom }) + '[/font]'; // Translation: IRC message. - var formattedMessage = sprintf(translate("%(sender)s %(message)s"), { sender: senderString, message: text }); + var formattedMessage = sprintf(translate("%(sender)s %(message)s"), { "sender": senderString, "message": text }); } // Build time header if enabled - if (g_timestamp) + if (g_ShowTimestamp) { var time; @@ -945,10 +961,10 @@ function ircFormat(text, from, color, key, datetime) var timeString = Engine.FormatMillisecondsIntoDateString(time.getTime(), translate("HH:mm")); // Translation: Time prefix as shown in the multiplayer lobby (when you enable it in the options page). - var timePrefixString = '[font="sans-bold-13"]' + sprintf(translate("\\[%(time)s]"), { time: timeString }) + '[/font]'; + var timePrefixString = '[font="sans-bold-13"]' + sprintf(translate("\\[%(time)s]"), { "time": timeString }) + '[/font]'; // Translation: IRC message format when there is a time prefix. - return sprintf(translate("%(time)s %(message)s"), { time: timePrefixString, message: formattedMessage }); + return sprintf(translate("%(time)s %(message)s"), { "time": timePrefixString, "message": formattedMessage }); } else return formattedMessage; @@ -991,7 +1007,7 @@ function isSpam(text, from) if (text == " ") return true; // Block users who are still within their spam block period. - else if (g_spamMonitor[from][2] + SPAM_BLOCK_LENGTH >= time) + else if (g_spamMonitor[from][2] + g_SpamBlockDuration >= time) return true; // Block users who exceed the rate of 1 message per second for five seconds and are not already blocked. TODO: Make this smarter and block profanity. else if (g_spamMonitor[from][0] == 6) @@ -1060,7 +1076,7 @@ function colorPlayerName(playername) return ('[color="' + playername.split("").map(function (c, i) color.slice(i * 3, i * 3 + 3).join(" ") + '"]' + c + '[/color][color="') .join("") + '"]').slice(0, -10); } - return '[color="' + getPlayerColor(playername.replace(g_modPrefix, "")) + '"]' + playername + '[/color]'; + return '[color="' + getPlayerColor(playername.replace(g_ModeratorPrefix, "")) + '"]' + playername + '[/color]'; } // Ensure `value` is between 0 and 1.