From c0e2f0008c2f52807e59c6062a97f24e2c1fe4fc Mon Sep 17 00:00:00 2001 From: Ivo Julca Date: Fri, 24 Jul 2015 02:43:41 -0500 Subject: [PATCH] Support hidden formats In the formats list, each entry will now support a trailing mask -sent as hexadecimal-. Its binary equivalent encodes the data regarding its availability and team requirements. --- js/client.js | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/js/client.js b/js/client.js index c34073c16..913abc4b9 100644 --- a/js/client.js +++ b/js/client.js @@ -113,7 +113,7 @@ }); } - Config.version = '0.10.0'; + Config.version = '0.10.1'; Config.origindomain = 'play.pokemonshowdown.com'; // `defaultserver` specifies the server to use when the domain name in the @@ -1114,20 +1114,31 @@ } } } else { + var name = formatsList[j]; var searchShow = true; var challengeShow = true; var team = null; - var name = formatsList[j]; - if (name.substr(name.length - 2) === ',#') { // preset teams - team = 'preset'; - name = name.substr(0, name.length - 2); - } - if (name.substr(name.length - 2) === ',,') { // search-only - challengeShow = false; - name = name.substr(0, name.length - 2); - } else if (name.substr(name.length - 1) === ',') { // challenge-only - searchShow = false; - name = name.substr(0, name.length - 1); + var lastCommaIndex = name.lastIndexOf(','); + var code = lastCommaIndex >= 0 ? parseInt(name.substr(lastCommaIndex + 1), 16) : NaN; + if (!isNaN(code)) { + name = name.substr(0, lastCommaIndex); + if (code & 1) team = 'preset'; + if (!(code & 2)) searchShow = false; + if (!(code & 4)) challengeShow = false; + if (!(code & 8)) tournamentShow = false; + } else { + // Backwards compatibility: late 0.9.0 -> 0.10.0 + if (name.substr(name.length - 2) === ',#') { // preset teams + team = 'preset'; + name = name.substr(0, name.length - 2); + } + if (name.substr(name.length - 2) === ',,') { // search-only + challengeShow = false; + name = name.substr(0, name.length - 2); + } else if (name.substr(name.length - 1) === ',') { // challenge-only + searchShow = false; + name = name.substr(0, name.length - 1); + } } var id = toId(name); var isTeambuilderFormat = searchShow && !team;