merge main

This commit is contained in:
vita10gy 2013-03-09 15:00:55 -06:00
commit cbbd6fcf71
2 changed files with 206 additions and 78 deletions

View File

@ -559,11 +559,8 @@ window.renderField = function(ent) {
fillOpacity: 0.25, fillOpacity: 0.25,
stroke: false, stroke: false,
clickable: false, clickable: false,
smoothFactor: 10, smoothFactor: 0, // hiding small fields will be handled below
vertices: ent[2].capturedRegion, guid: ent[0]});
lastUpdate: ent[1],
guid: ent[0],
data: ent[2]});
// determine which fields are too small to be rendered and dont // determine which fields are too small to be rendered and dont
// render them, so they dont count towards the maximum fields limit. // render them, so they dont count towards the maximum fields limit.

View File

@ -1,13 +1,13 @@
// ==UserScript== // ==UserScript==
// @id iitc-plugin-scoreboard@vita10gy // @id iitc-plugin-scoreboard@vita10gy
// @name iitc: show a localized scoreboard. // @name iitc: show a localized scoreboard.
// @version 0.1 // @version 0.1.1
// @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/scoreboard.user.js // @updateURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/scoreboard.user.js
// @downloadURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/scoreboard.user.js // @downloadURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/scoreboard.user.js
// @description A localized scoreboard. // @description A localized scoreboard.
// @include http://www.ingress.com/intel* // @include https://www.ingress.com/intel*
// @match http://www.ingress.com/intel* // @match https://www.ingress.com/intel*
// ==/UserScript== // ==/UserScript==
function wrapper() { function wrapper() {
@ -20,84 +20,205 @@ if(typeof window.plugin !== 'function') window.plugin = function() {};
// use own namespace for plugin // use own namespace for plugin
window.plugin.scoreboard = function() {}; window.plugin.scoreboard = function() {};
window.plugin.scoreboard.scores = {};
window.plugin.scoreboard.playerGuids = new Array();
window.plugin.scoreboard.compileStats = function(){ window.plugin.scoreboard.resetTeam = function(team) {
window.plugin.scoreboard.scores = {"team": {}, "player": {}}; var scores = window.plugin.scoreboard.scores['team'];
$.each(window.fields, function(qk, val) { scores[team] = {};
var team = val.options.data.controllingTeam.team; scores[team]['mu'] = 0;
var player = val.options.data.creator.creatorGuid; scores[team]['count_fields'] = 0;
//Init Team info scores[team]['count_links'] = 0;
if(window.plugin.scoreboard.scores['team'][team] === undefined) { scores[team]['count_portals'] = 0;
window.plugin.scoreboard.scores['team'][team] = {}; scores[team]['count_resonators'] = 0;
} scores[team]['largest'] = {};
if(window.plugin.scoreboard.scores['team'][team]['mu'] === undefined) { };
window.plugin.scoreboard.scores['team'][team]['mu'] = 0;
} window.plugin.scoreboard.initPlayer = function(player, team) {
if(window.plugin.scoreboard.scores['team'][team]['count'] === undefined) { var scores = window.plugin.scoreboard.scores['player'];
window.plugin.scoreboard.scores['team'][team]['count'] = {}; if(scores[player] === undefined) {
} scores[player] = {};
if(window.plugin.scoreboard.scores['team'][team]['count']['fields'] === undefined) { scores[player]['team'] = team;
window.plugin.scoreboard.scores['team'][team]['count']['fields'] = 0; scores[player]['mu'] = 0;
} scores[player]['count_fields'] = 0;
if(window.plugin.scoreboard.scores['team'][team]['largest'] === undefined) { scores[player]['count_links'] = 0;
window.plugin.scoreboard.scores['team'][team]['largest'] = {}; scores[player]['count_portals'] = 0;
} scores[player]['count_resonators'] = 0;
//Init Player info // scores[player]['count_shields'] = 0;
if(window.plugin.scoreboard.scores['player'][player] === undefined) { scores[player]['largest'] = {};
window.plugin.scoreboard.scores['player'][player] = {}; window.plugin.scoreboard.playerGuids.push(player);
} }
if(window.plugin.scoreboard.scores['player'][player]['mu'] === undefined) { }
window.plugin.scoreboard.scores['player'][player]['mu'] = 0;
} window.plugin.scoreboard.compileStats = function() {
if(window.plugin.scoreboard.scores['player'][player]['count'] === undefined) { var somethingInView = false;
window.plugin.scoreboard.scores['player'][player]['count'] = {}; window.plugin.scoreboard.playerGuids = new Array();
} window.plugin.scoreboard.scores = {'team': {}, 'player': {}};
if(window.plugin.scoreboard.scores['player'][player]['count']['fields'] === undefined) { var scores = window.plugin.scoreboard.scores;
window.plugin.scoreboard.scores['player'][player]['count']['fields'] = 0; window.plugin.scoreboard.resetTeam(TEAM_RES);
} window.plugin.scoreboard.resetTeam(TEAM_ENL);
if(window.plugin.scoreboard.scores['player'][player]['largest'] === undefined) {
window.plugin.scoreboard.scores['player'][player]['largest'] = {};
}
$.each(window.fields, function(qk, val) {
if(window.portals[val.options.vertices.vertexA.guid] !== undefined || var team = getTeam(val.options.data);
window.portals[val.options.vertices.vertexB.guid] !== undefined || var player = val.options.data.creator.creatorGuid;
window.portals[val.options.vertices.vertexC.guid] !== undefined ) {
window.plugin.scoreboard.initPlayer(player,team);
if(window.portals[val.options.vertices.vertexA.guid] !== undefined ||
window.portals[val.options.vertices.vertexB.guid] !== undefined ||
window.portals[val.options.vertices.vertexC.guid] !== undefined ) {
window.plugin.scoreboard.scores['team'][team]['mu'] += parseInt(val.options.data.entityScore.entityScore); somethingInView = true;
window.plugin.scoreboard.scores['player'][player]['mu'] += parseInt(val.options.data.entityScore.entityScore); scores['team'][team]['mu'] += parseInt(val.options.data.entityScore.entityScore);
window.plugin.scoreboard.scores['team'][team]['count']['fields']++; scores['player'][player]['mu'] += parseInt(val.options.data.entityScore.entityScore);
window.plugin.scoreboard.scores['player'][player]['count']['fields']++; scores['team'][team]['count_fields']++;
scores['player'][player]['count_fields']++;
if(window.plugin.scoreboard.scores['team'][team]['largest']['mu'] === undefined) {
window.plugin.scoreboard.scores['team'][team]['largest']['mu'] = val; if(scores['team'][team]['largest']['mu'] === undefined) {
} scores['team'][team]['largest']['mu'] = val;
else if(window.plugin.scoreboard.scores['team'][team]['largest']['mu'].options.data.entityScore.entityScore < val.options.data.entityScore.entityScore) {
window.plugin.scoreboard.scores['team'][team]['largest']['mu'] = val;
}
if(window.plugin.scoreboard.scores['player'][player]['largest']['mu'] === undefined) {
window.plugin.scoreboard.scores['player'][player]['largest']['mu'] = val;
}
else if(window.plugin.scoreboard.scores['player'][player]['largest']['mu'].options.data.entityScore.entityScore < val.options.data.entityScore.entityScore) {
window.plugin.scoreboard.scores['player'][player]['largest']['mu'] = val;
}
//console.log(val.options.data.controllingTeam.team);
//console.log(val.options.data.entityScore.entityScore);
//console.log(window.plugin.muTotal.portalAddress(window.portals[val.options.vertices.vertexA.guid]));
//console.log(window.plugin.muTotal.portalAddress(window.portals[val.options.vertices.vertexB.guid]));
//console.log(window.plugin.muTotal.portalAddress(window.portals[val.options.vertices.vertexC.guid]));
} }
else if(scores['team'][team]['largest']['mu'].options.data.entityScore.entityScore < val.options.data.entityScore.entityScore) {
scores['team'][team]['largest']['mu'] = val;
}
if(scores['player'][player]['largest']['mu'] === undefined) {
scores['player'][player]['largest']['mu'] = val;
}
else if(scores['player'][player]['largest']['mu'].options.data.entityScore.entityScore < val.options.data.entityScore.entityScore) {
scores['player'][player]['largest']['mu'] = val;
}
}
}); });
$.each(window.links, function(qk, link) {
somethingInView = true;
var team = getTeam(link.options.data);
var player = link.options.data.creator.creatorGuid;
window.plugin.scoreboard.initPlayer(player, team);
scores['team'][team]['count_links']++;
scores['player'][player]['count_links']++;
});
$.each(window.portals, function(qk, portal) {
somethingInView = true;
var team = getTeam(portal.options.details);
var player = portal.options.details.captured.capturingPlayerId;
window.plugin.scoreboard.initPlayer(player, team);
scores['team'][team]['count_portals']++;
scores['player'][player]['count_portals']++;
//$.each(portal.options.details.portalV2.linkedModArray, function(ind, mod) {
// if(mod !== null) {
// somethingInView = true;
// scores['team'][team]['count_shields']++;
// scores['player'][mod.installingUser]['count_shields']++;
// }
//});
$.each(portal.options.details.resonatorArray.resonators, function(ind, reso) {
if(reso !== null) {
somethingInView = true;
window.plugin.scoreboard.initPlayer(reso.ownerGuid, team);
scores['team'][team]['count_resonators']++;
scores['player'][reso.ownerGuid]['count_resonators']++;
}
});
});
window.plugin.scoreboard.playerGuids.sort(window.plugin.scoreboard.sortPlayerList);
return somethingInView;
};
window.plugin.scoreboard.sortPlayerList = function(a, b) {
var retVal = 0;
if(window.getPlayerName(a).toLowerCase() < window.getPlayerName(b).toLowerCase()) {
retVal = -1;
} else {
retVal = 1;
}
return retVal;
};
window.plugin.scoreboard.percentSpan = function(percent, cssClass) {
var retVal = '';
if(percent > 0) {
retVal += '<span class="' + cssClass + '" style="width:' + percent +'%;">';
if(percent >= 7) { //anything less than this and the text doesnt fit in the span.
retVal += percent;
}
retVal += '%</span>';
}
return retVal;
};
window.plugin.scoreboard.teamTableRow = function(field,title) {
var scores = window.plugin.scoreboard.scores['team'];
var retVal = '<tr><td>'
+ title
+ '</td><td class="number">'
+ scores[TEAM_RES][field]
+ '</td><td class="number">'
+ scores[TEAM_ENL][field]
+ '</td><td class="number">'
+ (scores[TEAM_RES][field] + scores[TEAM_ENL][field])
+ '</td></tr>';
return retVal;
};
window.plugin.scoreboard.playerTableRow = function(playerGuid) {
var scores = window.plugin.scoreboard.scores['player'];
var retVal = '<tr class="'
+ (scores[playerGuid]['team'] === TEAM_RES ? 'res' : 'enl')
+'"><td>'
+ window.getPlayerName(playerGuid);
+ '</td>';
$.each(['mu','count_fields','count_links','count_portals','count_resonators'], function(i, field) {
retVal += '<td class="number">'
+ scores[playerGuid][field]
+ '</td>';
});
retVal += '</tr>';
return retVal;
}; };
window.plugin.scoreboard.display = function() { window.plugin.scoreboard.display = function() {
window.plugin.scoreboard.compileStats();
console.log(window.plugin.scoreboard.scores); var somethingInView = window.plugin.scoreboard.compileStats();
$('#scoreboard').html(JSON.stringify(window.plugin.scoreboard.scores));
$( "#scoreboard" ).dialog({ autoOpen: true, var resMu = window.plugin.scoreboard.scores['team'][TEAM_RES]['mu'];
modal: true, var enlMu = window.plugin.scoreboard.scores['team'][TEAM_ENL]['mu'];
buttons: [ { text: "Close", click: function() { $( this ).dialog( "close" ); } } ]});
var scoreHtml = '';
if(somethingInView) {
if(resMu + enlMu > 0) {
var resMuPercent = Math.round((resMu / (resMu + enlMu)) * 100);
scoreHtml += '<div id="gamestat" title="Resistance: ' + resMu + ' MU Enlightenment: ' + enlMu + ' MU">'
+ window.plugin.scoreboard.percentSpan(resMuPercent, 'res')
+ window.plugin.scoreboard.percentSpan(100-resMuPercent, 'enl')
+ '</div>';
}
scoreHtml += '<table>'
+ '<tr><th></th><th>Resistance</th><th>Enlightened</th><th>Total</th></tr>';
scoreHtml += window.plugin.scoreboard.teamTableRow('mu','Mu');
scoreHtml += window.plugin.scoreboard.teamTableRow('count_fields','Fields');
scoreHtml += window.plugin.scoreboard.teamTableRow('count_links','Links');
scoreHtml += window.plugin.scoreboard.teamTableRow('count_portals','Portals');
scoreHtml += window.plugin.scoreboard.teamTableRow('count_resonators','Resonators');
scoreHtml += '</table>';
scoreHtml += '<table>'
+ '<tr><th>Player</th><th>Mu</th><th>Fields</th><th>Links</th><th>Portals</th><th>Resonators</th></tr>';
$.each(window.plugin.scoreboard.playerGuids, function(index, guid) {
scoreHtml += window.plugin.scoreboard.playerTableRow(guid);
});
scoreHtml += '</table>';
scoreHtml += '<div class="disclaimer">Score is subject to portals available based on zoom level. If names are unresolved try again. For best results wait until updates are fully loaded.</div>';
} else {
scoreHtml += 'You need something in view.';
}
alert('<div id="scoreboard">' + scoreHtml + '</div>');
$(".ui-dialog").addClass('ui-dialog-scoreboard');
} }
var setup = function() { var setup = function() {
@ -105,6 +226,16 @@ var setup = function() {
$('body').append('<div id="scoreboard" style="display:none;"></div>'); $('body').append('<div id="scoreboard" style="display:none;"></div>');
$('#toolbox').append('<a onclick="window.plugin.scoreboard.display()">scoreboard</a>'); $('#toolbox').append('<a onclick="window.plugin.scoreboard.display()">scoreboard</a>');
$('head').append('<style>' +
'.ui-dialog-scoreboard {max-width:500px !important; width:500px !important;}' +
'#scoreboard table {margin-top:10px; border-collapse: collapse; empty-cells: show; width:100%;}' +
'#scoreboard table td, #scoreboard table th {border-bottom: 1px solid #0b314e; padding:3px; color:white; background-color:#1b415e}' +
'#scoreboard table tr.res td { background-color: #005684; }' +
'#scoreboard table tr.enl td { background-color: #017f01; }' +
'#scoreboard table tr:nth-child(even) td { opacity: .8 }' +
'#scoreboard table td.number { text-align:right }' +
'#scoreboard .disclaimer { margin-top:10px; font-size:10px; }' +
'</style>');
} }