diff --git a/code/map_data.js b/code/map_data.js index 893ecc3a..7f8737c7 100644 --- a/code/map_data.js +++ b/code/map_data.js @@ -351,7 +351,7 @@ window.isResonatorsShow = function() { } window.portalResetColor = function(portal) { - portal.setStyle({color: portal.options.fillColor}); + portal.setStyle({color: COLORS[getTeam(portal.options.details)]}); } // renders a link on the map from the given entity diff --git a/main.js b/main.js index 64a0967d..6460139c 100644 --- a/main.js +++ b/main.js @@ -125,7 +125,7 @@ var MAX_DRAWN_LINKS = 400; var MAX_DRAWN_FIELDS = 200; -var COLOR_SELECTED_PORTAL = '#f00'; +var COLOR_SELECTED_PORTAL = '#fff'; var COLORS = ['#FFCE00', '#0088FF', '#03FE03']; // none, res, enl var COLORS_LVL = ['#000', '#FECE5A', '#FFA630', '#FF7315', '#E40000', '#FD2992', '#EB26CD', '#C124E0', '#9627F4']; var COLORS_MOD = {VERY_RARE: '#F78AF6', RARE: '#AD8AFF', COMMON: '#84FBBD'}; diff --git a/plugins/show-portal-weakness.user.js b/plugins/show-portal-weakness.user.js new file mode 100644 index 00000000..34647d78 --- /dev/null +++ b/plugins/show-portal-weakness.user.js @@ -0,0 +1,132 @@ +// ==UserScript== +// @id iitc-plugin-show-portal-weakness@vita10gy +// @name iitc: show portal weakness +// @version 0.1 +// @namespace https://github.com/breunigs/ingress-intel-total-conversion +// @updateURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/show-portal-weekness.user.js +// @downloadURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/show-portal-weekness.user.js +// @description Uses the fill color of the portals to denote if the portal is weak (Needs recharging, missing a resonator, needs shields) +// @include http://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// ==/UserScript== + +function wrapper() { +// ensure plugin framework is there, even if iitc is not yet loaded +if(typeof window.plugin !== 'function') window.plugin = function() {}; + + +// PLUGIN START //////////////////////////////////////////////////////// + +// use own namespace for plugin +window.plugin.portalWeakness = function() {}; + +window.plugin.portalWeakness.getPortalWeaknessFactor = function(d) +{ + var portal_weakness = 0; + if(getTeam(d) != 0) + { + if(window.getTotalPortalEnergy(d)> 0 && window.getCurrentPortalEnergy(d) < window.getTotalPortalEnergy(d)) + { + portal_weakness = 1 - (window.getPortalEnergy(d)/window.getTotalPortalEnergy(d)); + } + //Ding the portal for every missing sheild. + $.each(d.portalV2.linkedModArray, function(ind, mod) + { + if(mod == null) + { + portal_weakness += .05; + } + }); + //Ding the portal for every missing resonator. + var resCount = 0; + $.each(d.resonatorArray.resonators, function(ind, reso) + { + if(reso == null) { + portal_weakness += .125; + } + else { + resCount++; + } + }); + if(portal_weakness<0) { + portal_weakness = 0; + } + if(portal_weakness>1) + { + portal_weakness = 1; + } + } + return(Math.round(portal_weakness*100)/100); +} + +window.plugin.portalWeakness.portalAdded = function(data) { + + var d = data.portal.options.details; + var portal_weakness = 0; + if(getTeam(d) != 0) + { + if(window.getTotalPortalEnergy(d)> 0 && window.getCurrentPortalEnergy(d) < window.getTotalPortalEnergy(d)) + { + portal_weakness = 1 - (window.getCurrentPortalEnergy(d)/window.getTotalPortalEnergy(d)); + } + //Ding the portal for every missing sheild. + $.each(d.portalV2.linkedModArray, function(ind, mod) + { + if(mod == null) + { + portal_weakness += .05; + } + }); + //Ding the portal for every missing resonator. + var resCount = 0; + $.each(d.resonatorArray.resonators, function(ind, reso) + { + if(reso == null) { + portal_weakness += .125; + } + else { + resCount++; + } + }); + if(portal_weakness<0) { + portal_weakness = 0; + } + if(portal_weakness>1) + { + portal_weakness = 1; + } + + if(portal_weakness>0) + { + var color = 'red'; + if(resCount<8) + { + color = 'orange'; + } + var fill_opacity = Math.round((portal_weakness*.7 + .3)*100)/100; + data.portal.setStyle({fillColor: color, fillOpacity: fill_opacity}); + } + } + + +} + +var setup = function() { + window.addHook('portalAdded', window.plugin.portalWeakness.portalAdded); +} + +// PLUGIN END ////////////////////////////////////////////////////////// + +if(window.iitcLoaded && typeof setup === 'function') { + setup(); +} else { + if(window.bootPlugins) + window.bootPlugins.push(setup); + else + window.bootPlugins = [setup]; +} +} // wrapper end +// inject code into site context +var script = document.createElement('script'); +script.appendChild(document.createTextNode('('+ wrapper +')();')); +(document.body || document.head || document.documentElement).appendChild(script);