fix #162
This commit is contained in:
parent
f96745e1bc
commit
1ddf07cd5e
@ -1,7 +1,7 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @id iitc-plugin-guess-player-levels@breunigs
|
// @id iitc-plugin-guess-player-levels@breunigs
|
||||||
// @name iitc: guess player level
|
// @name iitc: guess player level
|
||||||
// @version 0.1
|
// @version 0.2
|
||||||
// @namespace https://github.com/breunigs/ingress-intel-total-conversion
|
// @namespace https://github.com/breunigs/ingress-intel-total-conversion
|
||||||
// @updateURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/guess-player-levels.user.js
|
// @updateURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/guess-player-levels.user.js
|
||||||
// @downloadURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/guess-player-levels.user.js
|
// @downloadURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/guess-player-levels.user.js
|
||||||
@ -22,12 +22,22 @@ window.plugin.guessPlayerLevels = function() {};
|
|||||||
|
|
||||||
window.plugin.guessPlayerLevels.setupCallback = function() {
|
window.plugin.guessPlayerLevels.setupCallback = function() {
|
||||||
$('#toolbox').append('<a onclick="window.plugin.guessPlayerLevels.guess()">guess player levels</a> ');
|
$('#toolbox').append('<a onclick="window.plugin.guessPlayerLevels.guess()">guess player levels</a> ');
|
||||||
|
addHook('portalAdded', window.plugin.guessPlayerLevels.extractPortalData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
window.plugin.guessPlayerLevels.setLevelTitle = function(dom) {
|
window.plugin.guessPlayerLevels.setLevelTitle = function(dom) {
|
||||||
//expects dom node with nick in its child text node
|
// expects dom node with nick in its child text node
|
||||||
var playersNamed = window.plugin.guessPlayerLevels.prepareGuess();
|
|
||||||
|
var playersNamed = {};
|
||||||
|
for (var i = 0; i < localStorage.length; i++) {
|
||||||
|
var ident = localStorage.key(i);
|
||||||
|
if(!ident.startsWith('level-')) continue;
|
||||||
|
var guid = ident.slice(6);
|
||||||
|
var level = localStorage[ident];
|
||||||
|
playersNamed[getPlayerName(guid)] = level;
|
||||||
|
}
|
||||||
|
|
||||||
var el = $(dom);
|
var el = $(dom);
|
||||||
var nick = el.text();
|
var nick = el.text();
|
||||||
var text;
|
var text;
|
||||||
@ -37,8 +47,7 @@ window.plugin.guessPlayerLevels.setLevelTitle = function(dom) {
|
|||||||
} else {
|
} else {
|
||||||
text = 'Min player level unknown';
|
text = 'Min player level unknown';
|
||||||
}
|
}
|
||||||
el.attr('title', text);
|
el.attr('title', text).addClass('help');
|
||||||
el.addClass('help');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
window.plugin.guessPlayerLevels.setupChatNickHelper = function() {
|
window.plugin.guessPlayerLevels.setupChatNickHelper = function() {
|
||||||
@ -51,40 +60,68 @@ window.plugin.guessPlayerLevels.setupChatNickHelper = function() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
window.plugin.guessPlayerLevels.prepareGuess = function() {
|
window.plugin.guessPlayerLevels.extractPortalData = function(data) {
|
||||||
var players = {};
|
var r = data.portal.options.details.resonatorArray.resonators;
|
||||||
|
$.each(r, function(ind, reso) {
|
||||||
|
if(!reso) return true;
|
||||||
|
var p = 'level-'+reso.ownerGuid;
|
||||||
|
var l = reso.level;
|
||||||
|
if(!window.localStorage[p] || window.localStorage[p] < l)
|
||||||
|
window.localStorage[p] = l;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
window.plugin.guessPlayerLevels.guess = function() {
|
||||||
|
var playersRes = {};
|
||||||
|
var playersEnl = {};
|
||||||
$.each(window.portals, function(ind, portal) {
|
$.each(window.portals, function(ind, portal) {
|
||||||
var r = portal.options.details.resonatorArray.resonators;
|
var r = portal.options.details.resonatorArray.resonators;
|
||||||
$.each(r, function(ind, reso) {
|
$.each(r, function(ind, reso) {
|
||||||
if(!reso) return true;
|
if(!reso) return true;
|
||||||
var p = reso.ownerGuid;
|
var lvl = localStorage['level-' + reso.ownerGuid];
|
||||||
var l = reso.level;
|
var nick = getPlayerName(reso.ownerGuid);
|
||||||
if(!players[p] || players[p] < l) players[p] = l;
|
if(portal.options.team === TEAM_ENL)
|
||||||
|
playersEnl[nick] = lvl;
|
||||||
|
else
|
||||||
|
playersRes[nick] = lvl;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
var playersNamed = {};
|
|
||||||
$.each(players, function(guid, level) {
|
|
||||||
playersNamed[getPlayerName(guid)] = level;
|
|
||||||
});
|
|
||||||
return playersNamed;
|
|
||||||
}
|
|
||||||
|
|
||||||
window.plugin.guessPlayerLevels.guess = function() {
|
|
||||||
var playersNamed = window.plugin.guessPlayerLevels.prepareGuess();
|
|
||||||
|
|
||||||
var s = 'the players have at least the following level:\n\n';
|
var s = 'the players have at least the following level:\n\n';
|
||||||
$.each(Object.keys(playersNamed).sort(), function(ind, playerName) {
|
s += 'Resistance:\t \tEnlightenment:\t\n';
|
||||||
var level = playersNamed[playerName];
|
|
||||||
var nick = (playerName + ': ').slice(0, 20);
|
var namesR = plugin.guessPlayerLevels.sort(playersRes);
|
||||||
s += nick + '\t' + level + '\n';
|
var namesE = plugin.guessPlayerLevels.sort(playersEnl);
|
||||||
});
|
var max = Math.max(namesR.length, namesE.length);
|
||||||
|
for(var i = 0; i < max; i++) {
|
||||||
|
var nickR = namesR[i];
|
||||||
|
var lvlR = playersRes[nickR];
|
||||||
|
var lineR = nickR ? nickR + ':\t' + lvlR : '\t';
|
||||||
|
|
||||||
|
var nickE = namesE[i];
|
||||||
|
var lvlE = playersEnl[nickE];
|
||||||
|
var lineE = nickE ? nickE + ':\t' + lvlE : '\t';
|
||||||
|
|
||||||
|
s += lineR + '\t\t' + lineE + '\n';
|
||||||
|
}
|
||||||
|
|
||||||
s += '\n\nIf there are some unresolved names, simply try again.'
|
s += '\n\nIf there are some unresolved names, simply try again.'
|
||||||
|
console.log(s);
|
||||||
alert(s);
|
alert(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
window.plugin.guessPlayerLevels.sort = function(playerHash) {
|
||||||
|
return Object.keys(playerHash).sort(function(a, b) {
|
||||||
|
if(playerHash[a] < playerHash[b]) return 1;
|
||||||
|
if(playerHash[a] > playerHash[b]) return -1;
|
||||||
|
|
||||||
|
if (a.toLowerCase() < b.toLowerCase()) return -1;
|
||||||
|
if (a.toLowerCase() > b.toLowerCase()) return 1;
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
var setup = function() {
|
var setup = function() {
|
||||||
window.plugin.guessPlayerLevels.setupCallback();
|
window.plugin.guessPlayerLevels.setupCallback();
|
||||||
window.plugin.guessPlayerLevels.setupChatNickHelper();
|
window.plugin.guessPlayerLevels.setupChatNickHelper();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user