From 930c6f95214922e2ce8658c0579ba8fc6b0789c1 Mon Sep 17 00:00:00 2001 From: Xelio Date: Tue, 26 Mar 2013 19:46:55 +0800 Subject: [PATCH] New Plugin: Keys on map Show the keys of Keys plugin on portals in the map. --- plugins/keys-on-map.user.js | 114 ++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 plugins/keys-on-map.user.js diff --git a/plugins/keys-on-map.user.js b/plugins/keys-on-map.user.js new file mode 100644 index 00000000..91a26e47 --- /dev/null +++ b/plugins/keys-on-map.user.js @@ -0,0 +1,114 @@ +// ==UserScript== +// @id iitc-plugin-keys-on-map@xelio +// @name IITC plugin: Keys on map +// @version 0.1.0.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description [@@BUILDNAME@@-@@BUILDDATE@@] Show keys in keys plugin on map. +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://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.keysOnMap = function() {}; + +window.plugin.keysOnMap.keyLayers = {}; +window.plugin.keysOnMap.keyLayerGroup = new L.LayerGroup(); + +// Use portal add and remove event to control render of keys +window.plugin.keysOnMap.portalAdded = function(data) { + data.portal.on('add', function() { + plugin.keysOnMap.renderKey(this.options.guid, this.getLatLng()); + }); + + data.portal.on('remove', function() { + plugin.keysOnMap.removeKey(this.options.guid); + }); +} + +window.plugin.keysOnMap.keyUpdate = function(data) { + var portal = window.portals[data.guid]; + if(!portal) return; + var latLng = portal.getLatLng(); + + plugin.keysOnMap.renderKey(data.guid, latLng) +} + +window.plugin.keysOnMap.renderKey = function(guid,latLng) { + plugin.keysOnMap.removeKey(guid); + + var keyCount = plugin.keys.keys[guid]; + if (keyCount > 0) { + var key = L.marker(latLng, { + icon: L.divIcon({ + className: 'plugin-keys-on-map-key', + iconAnchor: [6,7], + iconSize: [12,10], + html: keyCount + }), + guid: guid + }); + + plugin.keysOnMap.keyLayers[guid] = key; + key.addTo(plugin.keysOnMap.keyLayerGroup); + } +} + +window.plugin.keysOnMap.removeKey = function(guid) { + var previousLayer = plugin.keysOnMap.keyLayers[guid]; + if(previousLayer) { + plugin.keysOnMap.keyLayerGroup.removeLayer(previousLayer); + delete plugin.keysOnMap.keyLayers[guid]; + } +} + +var setup = function() { + $("