From 195dc611b249ad3467fbd21c5e7183e39afdafc1 Mon Sep 17 00:00:00 2001 From: vita10gy Date: Tue, 12 Feb 2013 00:21:49 -0600 Subject: [PATCH 1/4] Weak Portal Plugin At a glance high level indicator of portals in disrepair. Opacity is used to denote how much it's hurting. (Bright means needs the most attention.) Factors in current energy, missing shields, or missing resonators. Red means it needs attention. Orange means the same thing, except that it's down at least one resonator. I realise this is in opposition to game convention where dim == almost dead, but I tried it that way, and it just made no sense to me to do it that way. The whole point is a high level way to quickly identify portals that most need repairing. If opacity isn't done this way your eyes are most drawn to the portals that least need your attention. --- code/map_data.js | 2 +- main.js | 2 +- plugins/show-portal-weakness.user.js | 132 +++++++++++++++++++++++++++ 3 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 plugins/show-portal-weakness.user.js 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); From 0c6f0a97e21502ed5a078d6898f520b89b9b8e3a Mon Sep 17 00:00:00 2001 From: vita10gy Date: Tue, 12 Feb 2013 09:27:47 -0600 Subject: [PATCH 2/4] Description Added Description added to plugins readme --- plugins/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/README.md b/plugins/README.md index 310077f6..891daddd 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -10,6 +10,7 @@ Available Plugins ----------------- - [**Guess Player Level**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/guess-player-levels.user.js) looks for the highest placed resonator per player in the current view to guess the player level. +- [**Highlight Weakened Portals**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/show-portal-weakness.user.js) fill portals with red or orange to indicate portal's state of disrepair. The brighter the color the more attention needed (recharge, shields, resonators). Red means general attention needed. Orange means at least one resonator is gone. Hacking From 21943d7155f4353bcb1dd794c6a53273d3c9282a Mon Sep 17 00:00:00 2001 From: vita10gy Date: Tue, 12 Feb 2013 21:39:56 -0600 Subject: [PATCH 3/4] Change Selected color back to red --- main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.js b/main.js index 6460139c..64a0967d 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 = '#fff'; +var COLOR_SELECTED_PORTAL = '#f00'; 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'}; From 7e70c0a8bbcce0de0d78159ffa68f34ec27449fb Mon Sep 17 00:00:00 2001 From: vita10gy Date: Tue, 12 Feb 2013 23:44:10 -0600 Subject: [PATCH 4/4] Ditched orange, introduced dashes Ditched orange as the indicator of missing resonator in favor of dashed circle. Corrected /plugin/Readme.md --- README.md | 1 + plugins/README.md | 5 +++-- plugins/show-portal-weakness.user.js | 14 +++++++------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index bdbe428d..af629764 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,7 @@ Contributors [sorgo](https://github.com/sorgo), [Xelio](https://github.com/Xelio), [ZauberNerd](https://github.com/ZauberNerd) +[vita10gy](https://github.com/vita10gy) Hacking diff --git a/plugins/README.md b/plugins/README.md index 891daddd..779f22df 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -10,13 +10,14 @@ Available Plugins ----------------- - [**Guess Player Level**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/guess-player-levels.user.js) looks for the highest placed resonator per player in the current view to guess the player level. -- [**Highlight Weakened Portals**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/show-portal-weakness.user.js) fill portals with red or orange to indicate portal's state of disrepair. The brighter the color the more attention needed (recharge, shields, resonators). Red means general attention needed. Orange means at least one resonator is gone. +- [**Highlight Weakened Portals**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/show-portal-weakness.user.js) fill portals with red or orange to indicate portal's state of disrepair. The brighter the color the more attention needed (recharge, shields, resonators). A dashed portal means a resonator is missing. Hacking ------- -Plugins may be developed in the same way as the total conversion script. Plugins may provide features tailored to specific needs and are allowed to change things as they see fit. You can provide them separately oder submit a pull request to have them managed in this repository. There are currently no hooks that allow integration with the main script, but I will add those if the need arises. Simply open a bug report. +Plugins may be developed in the same way as the total conversion script. Plugins may provide features tailored to specific needs and are allowed to change things as they see fit. You can provide them separately or submit a pull request to have them managed in this repository. +If you think a hook in the main script is required, simply open a bug report. You can use the guess player level script as an example to get you started. Just update the names and the part between `// PLUGIN START` and `// PLUGIN END` and you should be able to develop your plugin. The other code ensures your plugin is executed after the main script. diff --git a/plugins/show-portal-weakness.user.js b/plugins/show-portal-weakness.user.js index 34647d78..48e60682 100644 --- a/plugins/show-portal-weakness.user.js +++ b/plugins/show-portal-weakness.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @id iitc-plugin-show-portal-weakness@vita10gy // @name iitc: show portal weakness -// @version 0.1 +// @version 0.2 // @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 @@ -74,7 +74,7 @@ window.plugin.portalWeakness.portalAdded = function(data) { { if(mod == null) { - portal_weakness += .05; + portal_weakness += .03; } }); //Ding the portal for every missing resonator. @@ -99,20 +99,20 @@ window.plugin.portalWeakness.portalAdded = function(data) { if(portal_weakness>0) { var color = 'red'; + var fill_opacity = Math.round((portal_weakness*.8 + .2)*100)/100; + var params = {fillColor: color, fillOpacity: fill_opacity, radius: data.portal.options.radius+1}; if(resCount<8) { - color = 'orange'; + params["dashArray"] = "4,6"; } - var fill_opacity = Math.round((portal_weakness*.7 + .3)*100)/100; - data.portal.setStyle({fillColor: color, fillOpacity: fill_opacity}); + data.portal.setStyle(params); } } - - } var setup = function() { window.addHook('portalAdded', window.plugin.portalWeakness.portalAdded); + window.COLOR_SELECTED_PORTAL = '#f0f'; } // PLUGIN END //////////////////////////////////////////////////////////