86 lines
3.4 KiB
JavaScript
86 lines
3.4 KiB
JavaScript
// ==UserScript==
|
|
// @id iitc-plugin-link-show-direction
|
|
// @name IITC plugin: Show the direction of links on the map
|
|
// @category Tweaks
|
|
// @version 0.1.0.@@DATETIMEVERSION@@
|
|
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion
|
|
// @updateURL @@UPDATEURL@@
|
|
// @downloadURL @@DOWNLOADURL@@
|
|
// @description [@@BUILDNAME@@-@@BUILDDATE@@] Show the direction of links on the map by adding short dashes to the line at the origin portal.
|
|
// @include https://www.ingress.com/intel*
|
|
// @include http://www.ingress.com/intel*
|
|
// @match https://www.ingress.com/intel*
|
|
// @match http://www.ingress.com/intel*
|
|
// @grant none
|
|
// ==/UserScript==
|
|
|
|
@@PLUGINSTART@@
|
|
|
|
// PLUGIN START ////////////////////////////////////////////////////////
|
|
|
|
|
|
// use own namespace for plugin
|
|
window.plugin.linkShowDirection = function() {};
|
|
|
|
window.plugin.linkShowDirection.ANIMATE_UPDATE_TIME=1;
|
|
window.plugin.linkShowDirection.frames = [
|
|
'10,5,5,5,5,5,5,5,100%',
|
|
// '11,5,5,5,5,5,5,4,100%',
|
|
'12,5,5,5,5,5,5,3,100%',
|
|
// '13,5,5,5,5,5,5,2,100%',
|
|
'14,5,5,5,5,5,5,1,100%',
|
|
// '15,5,5,5,5,5,100%',
|
|
'10,1,5,5,5,5,5,5,100%',
|
|
// '10,2,5,5,5,5,5,5,100%',
|
|
'10,3,5,5,5,5,5,5,100%',
|
|
// '10,4,5,5,5,5,5,5,100%',
|
|
];
|
|
|
|
window.plugin.linkShowDirection.frame = 0;
|
|
window.plugin.linkShowDirection.moving = false;
|
|
|
|
|
|
window.plugin.linkShowDirection.animateLinks = function() {
|
|
if (!window.plugin.linkShowDirection.moving) {
|
|
window.plugin.linkShowDirection.frame ++;
|
|
window.plugin.linkShowDirection.frame %= window.plugin.linkShowDirection.frames.length;
|
|
|
|
$.each(links,function(guid,link) { window.plugin.linkShowDirection.addLinkStyle(link); });
|
|
}
|
|
|
|
// browsers don't render the SVG style changes until after the timer function has finished.
|
|
// this means if we start the next timeout in here a lot of the delay time will be taken by the browser itself
|
|
// re-rendering the screen. in the worst case, the timer will run out before the render completes, and fire immediately
|
|
// this would mean the user has no chance to interact with IITC
|
|
// to prevent this, create a short timer that then sets the timer for the next frame. if the browser is slow to render,
|
|
// the short timer should fire later, at which point the desired ANIMATE_UPDATE_TIME timer is started
|
|
setTimeout ( function() { setTimeout (window.plugin.linkShowDirection.animateLinks, window.plugin.linkShowDirection.ANIMATE_UPDATE_TIME*1000); }, 10);
|
|
|
|
}
|
|
|
|
|
|
window.plugin.linkShowDirection.addLinkStyle = function(link) {
|
|
link.setStyle ({dashArray: window.plugin.linkShowDirection.frames[window.plugin.linkShowDirection.frame]});
|
|
}
|
|
|
|
window.plugin.linkShowDirection.setup = function() {
|
|
|
|
addHook ('linkAdded', function(data) { window.plugin.linkShowDirection.addLinkStyle (data.link); });
|
|
|
|
// only start the animation timer of the paths support SVG
|
|
if (L.Path.SVG) {
|
|
setTimeout (window.plugin.linkShowDirection.animateLinks, window.plugin.linkShowDirection.ANIMATE_UPDATE_TIME*1000);
|
|
|
|
// set up move start/end handlers to pause animations while moving
|
|
map.on('movestart', function() { window.plugin.linkShowDirection.moving = true; });
|
|
map.on('moveend', function() { window.plugin.linkShowDirection.moving = false; });
|
|
|
|
}
|
|
};
|
|
|
|
var setup = window.plugin.linkShowDirection.setup;
|
|
|
|
// PLUGIN END //////////////////////////////////////////////////////////
|
|
|
|
@@PLUGINEND@@
|