Merge branch 'plugin' of https://github.com/boombuler/ingress-intel-total-conversion into plugin
Conflicts: plugins/max-links.user.js
This commit is contained in:
commit
b8a86f8d08
@ -63,7 +63,7 @@ Contributing
|
||||
|
||||
Please do!
|
||||
|
||||
(Obviously, Resistance folks must send in complete patches while Enlightenment gals and guys may just open feature request ☺). If you want to hack the source, please [read HACKING.md for details](https://github.com/breunigs/ingress-intel-total-conversion/blob/gh-pages/HACKING.md) .
|
||||
(Obviously, Resistance folks must send in complete patches while Enlightened gals and guys may just open feature request ☺). If you want to hack the source, please [read HACKING.md for details](https://github.com/breunigs/ingress-intel-total-conversion/blob/gh-pages/HACKING.md) .
|
||||
|
||||
**So far, these people have contributed:**
|
||||
|
||||
|
@ -33,7 +33,7 @@ The chat is split up into several categories. It usually only shows messages for
|
||||
**The chat categories are:**
|
||||
- full: shows all automated messages *(23:57 \<apj\> destroyed an L3 Resonator on Two Spikes)*
|
||||
- compact: shows only the latest automated message per user
|
||||
- public: shows user generated public messages (both Enlightenment and Resistance can read it)
|
||||
- public: shows user generated public messages (both Enlightened and Resistance can read it)
|
||||
- faction: shows messages for own faction (e.g. only Resistance can read Resistance messages)
|
||||
|
||||
**Posting messages:**
|
||||
@ -117,7 +117,7 @@ Starting from the top, the sidebar shows this information:
|
||||
“Random Details” are displayed in four columns. The outer ones show the data while the inner ones are the titles.
|
||||
|
||||
- owner: who deployed the first resonator after it has been neutral/unclaimed.
|
||||
- since: when was the first resonator deployed after it has been neutral/unclaimed.
|
||||
- since: when was the first resonator deployed after it has been neutral/unclaimed. The reasonators decay every 24hrs from capture. Move the cursor over it to show the full date time.
|
||||
- range: shows how far links made from this portal can be. Click on the value to zoom out to link range. The red circle shows how far links may reach.
|
||||
- energy: shows current and maximum energy if fully charged. The tooltip contains the exact numbers.
|
||||
- links: shows incoming and outgoing links. The tooltip explains the icons.
|
||||
|
12
code/boot.js
12
code/boot.js
@ -58,10 +58,6 @@ window.setupMap = function() {
|
||||
{zoomControl: !(localStorage['iitc.zoom.buttons'] === 'false')}
|
||||
));
|
||||
|
||||
try {
|
||||
map.addLayer(views[readCookie('ingress.intelmap.type')]);
|
||||
} catch(e) { map.addLayer(views[0]); }
|
||||
|
||||
var addLayers = {};
|
||||
|
||||
portalsLayers = [];
|
||||
@ -91,6 +87,14 @@ window.setupMap = function() {
|
||||
}, addLayers);
|
||||
|
||||
map.addControl(window.layerChooser);
|
||||
|
||||
// set the map AFTER adding the layer chooser, or Chrome reorders the
|
||||
// layers. This likely leads to broken layer selection because the
|
||||
// views/cookie order does not match the layer chooser order.
|
||||
try {
|
||||
map.addLayer(views[readCookie('ingress.intelmap.type')]);
|
||||
} catch(e) { map.addLayer(views[0]); }
|
||||
|
||||
map.attributionControl.setPrefix('');
|
||||
// listen for changes and store them in cookies
|
||||
map.on('moveend', window.storeMapPosition);
|
||||
|
@ -15,7 +15,7 @@ window.updateGameScore = function(data) {
|
||||
var es = '<span class="enl" style="width:'+ep+'%;"> '+Math.round(ep)+'%</span>';
|
||||
$('#gamestat').html(rs+es).one('click', function() { window.updateGameScore() });
|
||||
// help cursor via “#gamestat span”
|
||||
$('#gamestat').attr('title', 'Resistance:\t'+r+' MindUnits\nEnlightenment:\t'+e+' MindUnits');
|
||||
$('#gamestat').attr('title', 'Resistance:\t'+r+' MindUnits\nEnlightened:\t'+e+' MindUnits');
|
||||
|
||||
window.setTimeout('window.updateGameScore', REFRESH_GAME_SCORE*1000);
|
||||
}
|
||||
|
@ -43,16 +43,13 @@
|
||||
// redrawn. It is called early on in the
|
||||
// code/map_data.js#renderPortal as long as there was an
|
||||
// old portal for the guid.
|
||||
// checkRenderLimit: callback is passed the argument of
|
||||
// {reached : false} to indicate that the renderlimit is reached
|
||||
// set reached to true.
|
||||
|
||||
|
||||
|
||||
|
||||
window._hooks = {}
|
||||
window.VALID_HOOKS = ['portalAdded', 'portalDetailsUpdated',
|
||||
'publicChatDataAvailable', 'portalDataLoaded', 'beforePortalReRender',
|
||||
'checkRenderLimit'];
|
||||
'publicChatDataAvailable', 'portalDataLoaded', 'beforePortalReRender'];
|
||||
|
||||
window.runHooks = function(event, data) {
|
||||
if(VALID_HOOKS.indexOf(event) === -1) throw('Unknown event type: ' + event);
|
||||
|
@ -26,7 +26,10 @@ window.renderPortalDetails = function(guid) {
|
||||
: null;
|
||||
var playerText = player ? ['owner', player] : null;
|
||||
|
||||
var time = d.captured ? unixTimeToString(d.captured.capturedTime) : null;
|
||||
var time = d.captured
|
||||
? '<span title="' + unixTimeToString(d.captured.capturedTime, true) + '">'
|
||||
+ unixTimeToString(d.captured.capturedTime) + '</span>'
|
||||
: null;
|
||||
var sinceText = time ? ['since', time] : null;
|
||||
|
||||
var linkedFields = ['fields', d.portalV2.linkedFields.length];
|
||||
|
@ -117,6 +117,7 @@ window.getPaddedBounds = function() {
|
||||
window._storedPaddedBounds = null;
|
||||
});
|
||||
}
|
||||
if(renderLimitReached(0.7)) return window.map.getBounds();
|
||||
if(window._storedPaddedBounds) return window._storedPaddedBounds;
|
||||
|
||||
var p = window.map.getBounds().pad(VIEWPORT_PAD_RATIO);
|
||||
@ -124,13 +125,17 @@ window.getPaddedBounds = function() {
|
||||
return p;
|
||||
}
|
||||
|
||||
window.renderLimitReached = function() {
|
||||
if(Object.keys(portals).length >= MAX_DRAWN_PORTALS) return true;
|
||||
if(Object.keys(links).length >= MAX_DRAWN_LINKS) return true;
|
||||
if(Object.keys(fields).length >= MAX_DRAWN_FIELDS) return true;
|
||||
var param = { 'reached': false };
|
||||
window.runHooks('checkRenderLimit', param);
|
||||
return param.reached;
|
||||
// returns true if the render limit has been reached. The default ratio
|
||||
// is 1, which means it will tell you if there are more items drawn than
|
||||
// acceptable. A value of 0.9 will tell you if 90% of the amount of
|
||||
// acceptable entities have been drawn. You can use this to heuristi-
|
||||
// cally detect if the render limit will be hit.
|
||||
window.renderLimitReached = function(ratio) {
|
||||
ratio = ratio || 1;
|
||||
if(Object.keys(portals).length*ratio >= MAX_DRAWN_PORTALS) return true;
|
||||
if(Object.keys(links).length*ratio >= MAX_DRAWN_LINKS) return true;
|
||||
if(Object.keys(fields).length*ratio >= MAX_DRAWN_FIELDS) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
window.getMinPortalLevel = function() {
|
||||
|
@ -12,7 +12,7 @@ Available Plugins
|
||||
- [**Compute AP Stats**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/compute-ap-stats.user.js) Shows the potential AP an agent could obtain by destroying and rebuilding all the portals in the current zoom area.
|
||||
- [**Draw Tools**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/draw-tools.user.js) allows to draw circles and lines on the map to aid you with planning your next big field. [View screenshot](http://breunigs.github.com/ingress-intel-total-conversion/screenshots/plugin_draw_tools.png)
|
||||
- [**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 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.
|
||||
- [**Highlight Weakened Portals**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/show-portal-weakness.user.js) fill portals with red 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. Red, needs energy and shields. Orange, only needs energy (either recharge or resonators). Yellow, only needs shields.
|
||||
- [**Max-Links**]((https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/max-links.user.js) Calculates how to link the portals to create the maximum number of fields.
|
||||
- [**Player Tracker**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/player-tracker.user.js) Draws trails for user actions in the last hour. At the last known location there’s a tooltip that shows the data in a table. [View screenshot](http://breunigs.github.com/ingress-intel-total-conversion/screenshots/plugin_player_tracker.png).
|
||||
- [**Render Limit Increase**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/render-limit-increase.user.js) increases render limits. Good for high density areas (e.g. London, UK) and faster PCs.
|
||||
|
@ -88,7 +88,7 @@ window.plugin.guessPlayerLevels.guess = function() {
|
||||
});
|
||||
|
||||
var s = 'the players have at least the following level:\n\n';
|
||||
s += 'Resistance:\t \tEnlightenment:\t\n';
|
||||
s += 'Resistance:\t \tEnlightened:\t\n';
|
||||
|
||||
var namesR = plugin.guessPlayerLevels.sort(playersRes);
|
||||
var namesE = plugin.guessPlayerLevels.sort(playersEnl);
|
||||
|
@ -30,8 +30,6 @@ function wrapper() {
|
||||
};
|
||||
var delaunayScriptLocation = "https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/dist/delaunay.js";
|
||||
|
||||
|
||||
|
||||
window.plugin.maxLinks.layer = null;
|
||||
|
||||
var updating = false;
|
||||
@ -67,7 +65,7 @@ function wrapper() {
|
||||
renderLimitReached = false;
|
||||
$.each(triangles, function(idx, triangle) {
|
||||
if (drawnLinks <= window.plugin.maxLinks.MAX_DRAWN_LINKS) {
|
||||
triangle.draw(window.plugin.maxLinks.layer, minX, minY);
|
||||
triangle.draw(window.plugin.maxLinks.layer, minX, minY)
|
||||
drawnLinks += 3;
|
||||
} else {
|
||||
renderLimitReached = true;
|
||||
|
@ -1,11 +1,11 @@
|
||||
// ==UserScript==
|
||||
// @id iitc-plugin-show-portal-weakness@vita10gy
|
||||
// @name iitc: show portal weakness
|
||||
// @version 0.2
|
||||
// @version 0.3
|
||||
// @namespace https://github.com/breunigs/ingress-intel-total-conversion
|
||||
// @updateURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/show-portal-weakness.user.js
|
||||
// @downloadURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/show-portal-weakness.user.js
|
||||
// @description Uses the fill color of the portals to denote if the portal is weak (Needs recharging, missing a resonator, needs shields)
|
||||
// @description Uses the fill color of the portals to denote if the portal is weak (Needs recharging, missing a resonator, needs shields) Red, needs energy and shields. Orange, only needs energy (either recharge or resonators). Yellow, only needs shields.
|
||||
// @include http://www.ingress.com/intel*
|
||||
// @match http://www.ingress.com/intel*
|
||||
// ==/UserScript==
|
||||
@ -24,46 +24,51 @@ 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))
|
||||
{
|
||||
if(getTeam(d) !== 0) {
|
||||
var only_shields = true;
|
||||
var missing_shields = 0;
|
||||
if(window.getTotalPortalEnergy(d) > 0 && window.getCurrentPortalEnergy(d) < window.getTotalPortalEnergy(d)) {
|
||||
portal_weakness = 1 - (window.getCurrentPortalEnergy(d)/window.getTotalPortalEnergy(d));
|
||||
only_shields = false;
|
||||
}
|
||||
//Ding the portal for every missing sheild.
|
||||
$.each(d.portalV2.linkedModArray, function(ind, mod)
|
||||
{
|
||||
if(mod == null)
|
||||
{
|
||||
portal_weakness += .03;
|
||||
$.each(d.portalV2.linkedModArray, function(ind, mod) {
|
||||
if(mod === null) {
|
||||
missing_shields++;
|
||||
portal_weakness += .08;
|
||||
}
|
||||
});
|
||||
//Ding the portal for every missing resonator.
|
||||
var resCount = 0;
|
||||
$.each(d.resonatorArray.resonators, function(ind, reso)
|
||||
{
|
||||
if(reso == null) {
|
||||
$.each(d.resonatorArray.resonators, function(ind, reso) {
|
||||
if(reso === null) {
|
||||
portal_weakness += .125;
|
||||
}
|
||||
else {
|
||||
only_shields = false;
|
||||
} else {
|
||||
resCount++;
|
||||
}
|
||||
});
|
||||
if(portal_weakness < 0) {
|
||||
portal_weakness = 0;
|
||||
}
|
||||
if(portal_weakness>1)
|
||||
{
|
||||
if(portal_weakness > 1) {
|
||||
portal_weakness = 1;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
if(portal_weakness > 0) {
|
||||
var fill_opacity = portal_weakness*.7 + .3;
|
||||
var color = 'orange';
|
||||
if(only_shields) {
|
||||
color = 'yellow';
|
||||
//If only shields are missing, make portal yellow
|
||||
// but fill more than usual since pale yellow is basically invisible
|
||||
fill_opacity = missing_shields*.15 + .1;
|
||||
} else if(missing_shields > 0) {
|
||||
color = 'red';
|
||||
}
|
||||
fill_opacity = Math.round(fill_opacity*100)/100;
|
||||
var params = {fillColor: color, fillOpacity: fill_opacity};
|
||||
if(resCount < 8) {
|
||||
// Hole per missing resonator
|
||||
var dash = new Array(8-resCount + 1).join("1,4,") + "100,0"
|
||||
params["dashArray"] = dash;
|
||||
|
Loading…
x
Reference in New Issue
Block a user