Zaprange: separate layers, one for each team.

This commit is contained in:
Giacinto Garcea 2013-08-11 16:20:13 +02:00
parent 855ad003a2
commit e2bd30227f

View File

@ -2,7 +2,7 @@
// @id iitc-plugin-zaprange@zaso // @id iitc-plugin-zaprange@zaso
// @name IITC plugin: Zaprange // @name IITC plugin: Zaprange
// @category Layer // @category Layer
// @version 0.1.1.@@DATETIMEVERSION@@ // @version 0.1.2.@@DATETIMEVERSION@@
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @namespace https://github.com/jonatkins/ingress-intel-total-conversion
// @updateURL @@UPDATEURL@@ // @updateURL @@UPDATEURL@@
// @downloadURL @@DOWNLOADURL@@ // @downloadURL @@DOWNLOADURL@@
@ -16,83 +16,100 @@
@@PLUGINSTART@@ @@PLUGINSTART@@
// PLUGIN START //////////////////////////////////////////////////////// // PLUGIN START ///////////////////////////////////////////////////////
// use own namespace for plugin // use own namespace for plugin
window.plugin.zaprange = function() {}; window.plugin.zaprange = function() {};
window.plugin.zaprange.zapLayers = {}; window.plugin.zaprange.zapLayers = {};
window.plugin.zaprange.MIN_MAP_ZOOM = 15; window.plugin.zaprange.MIN_MAP_ZOOM = 16;
window.plugin.zaprange.portalAdded = function(data) { window.plugin.zaprange.portalAdded = function(data) {
data.portal.on('add', function() { data.portal.on('add', function() {
window.plugin.zaprange.draw(this.options.guid); window.plugin.zaprange.draw(this.options.guid, this.options.details.controllingTeam.team);
}); });
data.portal.on('remove', function() { data.portal.on('remove', function() {
window.plugin.zaprange.remove(this.options.guid); window.plugin.zaprange.remove(this.options.guid, this.options.details.controllingTeam.team);
}); });
} }
window.plugin.zaprange.remove = function(guid) { window.plugin.zaprange.remove = function(guid, faction) {
var previousLayer = window.plugin.zaprange.zapLayers[guid]; var previousLayer = window.plugin.zaprange.zapLayers[guid];
if(previousLayer) { if(previousLayer) {
window.plugin.zaprange.zapCircleHolderGroup.removeLayer(previousLayer); if(faction === 'ENLIGHTENED') {
window.plugin.zaprange.zapCircleEnlHolderGroup.removeLayer(previousLayer);
} else {
window.plugin.zaprange.zapCircleResHolderGroup.removeLayer(previousLayer);
}
delete window.plugin.zaprange.zapLayers[guid]; delete window.plugin.zaprange.zapLayers[guid];
} }
} }
window.plugin.zaprange.draw = function(guid) { window.plugin.zaprange.draw = function(guid, faction) {
var d = window.portals[guid]; var d = window.portals[guid];
var dd = d.options.details;
if(dd.controllingTeam.team !== "NEUTRAL") { if(faction !== "NEUTRAL") {
var coo = d._latlng; var coo = d._latlng;
var latlng = new L.LatLng(coo.lat,coo.lng); var latlng = new L.LatLng(coo.lat,coo.lng);
var portalLevel = parseInt(getPortalLevel(dd)); var portalLevel = parseInt(getPortalLevel(d.options.details));
var optCircle = {color:'red',opacity:0.7,fill:true,fillColor:'red',fillOpacity:0.1,weight:1,clickable:false, dashArray: [10,6]}; var optCircle = {color:'red',opacity:0.7,fillColor:'red',fillOpacity:0.1,weight:1,clickable:false, dashArray: [10,6]};
var range = (5*portalLevel)+35; var range = (5*portalLevel)+35;
var circle = new L.Circle(latlng, range, optCircle); var circle = new L.Circle(latlng, range, optCircle);
if(faction === 'ENLIGHTENED') {
circle.addTo(window.plugin.zaprange.zapCircleEnlHolderGroup);
} else {
circle.addTo(window.plugin.zaprange.zapCircleResHolderGroup);
}
window.plugin.zaprange.zapLayers[guid] = circle; window.plugin.zaprange.zapLayers[guid] = circle;
circle.addTo(window.plugin.zaprange.zapCircleHolderGroup);
} }
} }
window.plugin.zaprange.showOrHide = function() { window.plugin.zaprange.showOrHide = function() {
var ctrl = $('.leaflet-control-layers-selector + span:contains("Portal Attack Range")').parent();
if(map.getZoom() >= window.plugin.zaprange.MIN_MAP_ZOOM) { if(map.getZoom() >= window.plugin.zaprange.MIN_MAP_ZOOM) {
// show the layer // show the layer
if(!window.plugin.zaprange.zapLayerHolderGroup.hasLayer(window.plugin.zaprange.zapCircleHolderGroup)) { if(!window.plugin.zaprange.zapLayerEnlHolderGroup.hasLayer(window.plugin.zaprange.zapCircleEnlHolderGroup)) {
window.plugin.zaprange.zapLayerHolderGroup.addLayer(window.plugin.zaprange.zapCircleHolderGroup); window.plugin.zaprange.zapLayerEnlHolderGroup.addLayer(window.plugin.zaprange.zapCircleEnlHolderGroup);
$('.leaflet-control-layers-list span:contains("Zaprange Enlightened")').parent('label').removeClass('disabled').attr('title', '');
}
if(!window.plugin.zaprange.zapLayerResHolderGroup.hasLayer(window.plugin.zaprange.zapCircleResHolderGroup)) {
window.plugin.zaprange.zapLayerResHolderGroup.addLayer(window.plugin.zaprange.zapCircleResHolderGroup);
$('.leaflet-control-layers-list span:contains("Zaprange Resistance")').parent('label').removeClass('disabled').attr('title', '');
} }
ctrl.removeClass('disabled').attr('title', '');
} else { } else {
// hide the layer // hide the layer
if(window.plugin.zaprange.zapLayerHolderGroup.hasLayer(window.plugin.zaprange.zapCircleHolderGroup)) { if(window.plugin.zaprange.zapLayerEnlHolderGroup.hasLayer(window.plugin.zaprange.zapCircleEnlHolderGroup)) {
window.plugin.zaprange.zapLayerHolderGroup.removeLayer(window.plugin.zaprange.zapCircleHolderGroup); window.plugin.zaprange.zapLayerEnlHolderGroup.removeLayer(window.plugin.zaprange.zapCircleEnlHolderGroup);
$('.leaflet-control-layers-list span:contains("Zaprange Enlightened")').parent('label').addClass('disabled').attr('title', 'Zoom in to show those.');
}
if(window.plugin.zaprange.zapLayerResHolderGroup.hasLayer(window.plugin.zaprange.zapCircleResHolderGroup)) {
window.plugin.zaprange.zapLayerResHolderGroup.removeLayer(window.plugin.zaprange.zapCircleResHolderGroup);
$('.leaflet-control-layers-list span:contains("Zaprange Resistance")').parent('label').addClass('disabled').attr('title', 'Zoom in to show those.');
} }
ctrl.addClass('disabled').attr('title', 'Zoom in to show those.');
} }
} }
var setup = function() { var setup = function() {
// this layer is added to tha layer chooser, to be toggled on/off // this layer is added to the layer chooser, to be toggled on/off
window.plugin.zaprange.zapLayerHolderGroup = new L.LayerGroup(); window.plugin.zaprange.zapLayerEnlHolderGroup = new L.LayerGroup();
window.plugin.zaprange.zapLayerResHolderGroup = new L.LayerGroup();
// this layer is added into the above layer, and removed from it when we zoom out too far // this layer is added into the above layer, and removed from it when we zoom out too far
window.plugin.zaprange.zapCircleHolderGroup = new L.LayerGroup(); window.plugin.zaprange.zapCircleEnlHolderGroup = new L.LayerGroup();
window.plugin.zaprange.zapCircleResHolderGroup = new L.LayerGroup();
window.plugin.zaprange.zapLayerHolderGroup.addLayer(window.plugin.zaprange.zapCircleHolderGroup); window.plugin.zaprange.zapLayerEnlHolderGroup.addLayer(window.plugin.zaprange.zapCircleEnlHolderGroup);
window.plugin.zaprange.zapLayerResHolderGroup.addLayer(window.plugin.zaprange.zapCircleResHolderGroup);
window.addLayerGroup('Zaprange Enlightened', window.plugin.zaprange.zapLayerEnlHolderGroup, true);
window.addLayerGroup('Zaprange Resistance', window.plugin.zaprange.zapLayerResHolderGroup, true);
window.addLayerGroup('Portal Attack Range', window.plugin.zaprange.zapLayerHolderGroup, true);
window.addHook('portalAdded', window.plugin.zaprange.portalAdded); window.addHook('portalAdded', window.plugin.zaprange.portalAdded);
map.on('zoomend', window.plugin.zaprange.showOrHide); map.on('zoomend', window.plugin.zaprange.showOrHide);
window.plugin.zaprange.showOrHide(); window.plugin.zaprange.showOrHide();
} }
// PLUGIN END ////////////////////////////////////////////////////////// // PLUGIN END //////////////////////////////////////////////////////////