diff --git a/code/map_data.js b/code/map_data.js
index ea55e0f5..118172fa 100644
--- a/code/map_data.js
+++ b/code/map_data.js
@@ -559,11 +559,8 @@ window.renderField = function(ent) {
fillOpacity: 0.25,
stroke: false,
clickable: false,
- smoothFactor: 10,
- vertices: ent[2].capturedRegion,
- lastUpdate: ent[1],
- guid: ent[0],
- data: ent[2]});
+ smoothFactor: 0, // hiding small fields will be handled below
+ guid: ent[0]});
// determine which fields are too small to be rendered and don’t
// render them, so they don’t count towards the maximum fields limit.
diff --git a/plugins/scoreboard.user.js b/plugins/scoreboard.user.js
index 0ad5daa6..987cedb6 100644
--- a/plugins/scoreboard.user.js
+++ b/plugins/scoreboard.user.js
@@ -1,13 +1,13 @@
// ==UserScript==
// @id iitc-plugin-scoreboard@vita10gy
// @name iitc: show a localized scoreboard.
-// @version 0.1
+// @version 0.1.1
// @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
// @downloadURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/scoreboard.user.js
// @description A localized scoreboard.
-// @include http://www.ingress.com/intel*
-// @match http://www.ingress.com/intel*
+// @include https://www.ingress.com/intel*
+// @match https://www.ingress.com/intel*
// ==/UserScript==
function wrapper() {
@@ -20,84 +20,205 @@ if(typeof window.plugin !== 'function') window.plugin = function() {};
// use own namespace for plugin
window.plugin.scoreboard = function() {};
+window.plugin.scoreboard.scores = {};
+window.plugin.scoreboard.playerGuids = new Array();
-window.plugin.scoreboard.compileStats = function(){
- window.plugin.scoreboard.scores = {"team": {}, "player": {}};
- $.each(window.fields, function(qk, val) {
- var team = val.options.data.controllingTeam.team;
- var player = val.options.data.creator.creatorGuid;
- //Init Team info
- if(window.plugin.scoreboard.scores['team'][team] === undefined) {
- window.plugin.scoreboard.scores['team'][team] = {};
- }
- if(window.plugin.scoreboard.scores['team'][team]['mu'] === undefined) {
- window.plugin.scoreboard.scores['team'][team]['mu'] = 0;
- }
- if(window.plugin.scoreboard.scores['team'][team]['count'] === undefined) {
- window.plugin.scoreboard.scores['team'][team]['count'] = {};
- }
- if(window.plugin.scoreboard.scores['team'][team]['count']['fields'] === undefined) {
- window.plugin.scoreboard.scores['team'][team]['count']['fields'] = 0;
- }
- if(window.plugin.scoreboard.scores['team'][team]['largest'] === undefined) {
- window.plugin.scoreboard.scores['team'][team]['largest'] = {};
- }
- //Init Player info
- if(window.plugin.scoreboard.scores['player'][player] === undefined) {
- window.plugin.scoreboard.scores['player'][player] = {};
- }
- if(window.plugin.scoreboard.scores['player'][player]['mu'] === undefined) {
- window.plugin.scoreboard.scores['player'][player]['mu'] = 0;
- }
- if(window.plugin.scoreboard.scores['player'][player]['count'] === undefined) {
- window.plugin.scoreboard.scores['player'][player]['count'] = {};
- }
- if(window.plugin.scoreboard.scores['player'][player]['count']['fields'] === undefined) {
- window.plugin.scoreboard.scores['player'][player]['count']['fields'] = 0;
- }
- if(window.plugin.scoreboard.scores['player'][player]['largest'] === undefined) {
- window.plugin.scoreboard.scores['player'][player]['largest'] = {};
- }
+window.plugin.scoreboard.resetTeam = function(team) {
+ var scores = window.plugin.scoreboard.scores['team'];
+ scores[team] = {};
+ scores[team]['mu'] = 0;
+ scores[team]['count_fields'] = 0;
+ scores[team]['count_links'] = 0;
+ scores[team]['count_portals'] = 0;
+ scores[team]['count_resonators'] = 0;
+ scores[team]['largest'] = {};
+};
+
+window.plugin.scoreboard.initPlayer = function(player, team) {
+ var scores = window.plugin.scoreboard.scores['player'];
+ if(scores[player] === undefined) {
+ scores[player] = {};
+ scores[player]['team'] = team;
+ scores[player]['mu'] = 0;
+ scores[player]['count_fields'] = 0;
+ scores[player]['count_links'] = 0;
+ scores[player]['count_portals'] = 0;
+ scores[player]['count_resonators'] = 0;
+ // scores[player]['count_shields'] = 0;
+ scores[player]['largest'] = {};
+ window.plugin.scoreboard.playerGuids.push(player);
+ }
+}
+
+window.plugin.scoreboard.compileStats = function() {
+ var somethingInView = false;
+ window.plugin.scoreboard.playerGuids = new Array();
+ window.plugin.scoreboard.scores = {'team': {}, 'player': {}};
+ var scores = window.plugin.scoreboard.scores;
+ window.plugin.scoreboard.resetTeam(TEAM_RES);
+ window.plugin.scoreboard.resetTeam(TEAM_ENL);
-
- 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 ) {
+ $.each(window.fields, function(qk, val) {
+ var team = getTeam(val.options.data);
+ var player = val.options.data.creator.creatorGuid;
+
+ 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);
- window.plugin.scoreboard.scores['player'][player]['mu'] += parseInt(val.options.data.entityScore.entityScore);
- window.plugin.scoreboard.scores['team'][team]['count']['fields']++;
- window.plugin.scoreboard.scores['player'][player]['count']['fields']++;
-
- if(window.plugin.scoreboard.scores['team'][team]['largest']['mu'] === undefined) {
- window.plugin.scoreboard.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]));
+ somethingInView = true;
+ scores['team'][team]['mu'] += parseInt(val.options.data.entityScore.entityScore);
+ scores['player'][player]['mu'] += parseInt(val.options.data.entityScore.entityScore);
+ scores['team'][team]['count_fields']++;
+ scores['player'][player]['count_fields']++;
+
+ if(scores['team'][team]['largest']['mu'] === undefined) {
+ scores['team'][team]['largest']['mu'] = val;
}
+ 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 += '';
+ if(percent >= 7) { //anything less than this and the text doesnt fit in the span.
+ retVal += percent;
+ }
+ retVal += '%';
+ }
+ return retVal;
+};
+
+window.plugin.scoreboard.teamTableRow = function(field,title) {
+ var scores = window.plugin.scoreboard.scores['team'];
+ var retVal = '
'
+ + title
+ + ' | '
+ + scores[TEAM_RES][field]
+ + ' | '
+ + scores[TEAM_ENL][field]
+ + ' | '
+ + (scores[TEAM_RES][field] + scores[TEAM_ENL][field])
+ + ' |
';
+ return retVal;
+};
+
+window.plugin.scoreboard.playerTableRow = function(playerGuid) {
+ var scores = window.plugin.scoreboard.scores['player'];
+ var retVal = ''
+ + window.getPlayerName(playerGuid);
+ + ' | ';
+
+ $.each(['mu','count_fields','count_links','count_portals','count_resonators'], function(i, field) {
+ retVal += ''
+ + scores[playerGuid][field]
+ + ' | ';
+ });
+ retVal += '
';
+ return retVal;
};
window.plugin.scoreboard.display = function() {
- window.plugin.scoreboard.compileStats();
- console.log(window.plugin.scoreboard.scores);
- $('#scoreboard').html(JSON.stringify(window.plugin.scoreboard.scores));
- $( "#scoreboard" ).dialog({ autoOpen: true,
- modal: true,
- buttons: [ { text: "Close", click: function() { $( this ).dialog( "close" ); } } ]});
+
+ var somethingInView = window.plugin.scoreboard.compileStats();
+
+ var resMu = window.plugin.scoreboard.scores['team'][TEAM_RES]['mu'];
+ var enlMu = window.plugin.scoreboard.scores['team'][TEAM_ENL]['mu'];
+
+ var scoreHtml = '';
+ if(somethingInView) {
+
+ if(resMu + enlMu > 0) {
+ var resMuPercent = Math.round((resMu / (resMu + enlMu)) * 100);
+ scoreHtml += ''
+ + window.plugin.scoreboard.percentSpan(resMuPercent, 'res')
+ + window.plugin.scoreboard.percentSpan(100-resMuPercent, 'enl')
+ + '
';
+ }
+
+ scoreHtml += ''
+ + ' | Resistance | Enlightened | Total |
';
+ 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 += '
';
+
+ scoreHtml += ''
+ + 'Player | Mu | Fields | Links | Portals | Resonators |
';
+ $.each(window.plugin.scoreboard.playerGuids, function(index, guid) {
+ scoreHtml += window.plugin.scoreboard.playerTableRow(guid);
+ });
+ scoreHtml += '
';
+
+ scoreHtml += '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.
';
+ } else {
+ scoreHtml += 'You need something in view.';
+ }
+
+ alert('' + scoreHtml + '
');
+ $(".ui-dialog").addClass('ui-dialog-scoreboard');
}
var setup = function() {
@@ -105,6 +226,16 @@ var setup = function() {
$('body').append('');
$('#toolbox').append('scoreboard');
+ $('head').append('');
}