player tracker plugin

- rename pguid to plrname - players haven't had GUIDs for ages, and it's easy to confuse with portal GUIDs
- portal GUIDs removed. create a temporary unique string from the portal lat/lng - will be fine for player tracker itself
This commit is contained in:
Jon Atkins 2014-09-13 03:30:03 +01:00
parent db3d9f25c8
commit 074eab268a

View File

@ -2,7 +2,7 @@
// @id iitc-plugin-player-tracker@breunigs // @id iitc-plugin-player-tracker@breunigs
// @name IITC Plugin: Player tracker // @name IITC Plugin: Player tracker
// @category Layer // @category Layer
// @version 0.10.4.@@DATETIMEVERSION@@ // @version 0.10.5.@@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@@
@ -111,15 +111,15 @@ window.plugin.playerTracker.getLimit = function() {
window.plugin.playerTracker.discardOldData = function() { window.plugin.playerTracker.discardOldData = function() {
var limit = plugin.playerTracker.getLimit(); var limit = plugin.playerTracker.getLimit();
$.each(plugin.playerTracker.stored, function(pguid, player) { $.each(plugin.playerTracker.stored, function(plrname, player) {
var i; var i;
var ev = player.events; var ev = player.events;
for(i = 0; i < ev.length; i++) { for(i = 0; i < ev.length; i++) {
if(ev[i].time >= limit) break; if(ev[i].time >= limit) break;
} }
if(i === 0) return true; if(i === 0) return true;
if(i === ev.length) return delete plugin.playerTracker.stored[pguid]; if(i === ev.length) return delete plugin.playerTracker.stored[plrname];
plugin.playerTracker.stored[pguid].events.splice(0, i); plugin.playerTracker.stored[plrname].events.splice(0, i);
}); });
} }
@ -141,7 +141,7 @@ window.plugin.playerTracker.processNewData = function(data) {
if(json[1] < limit) return true; if(json[1] < limit) return true;
// find player and portal information // find player and portal information
var pguid, lat, lng, guid, name, address; var plrname, lat, lng, guid, name, address;
var skipThisMessage = false; var skipThisMessage = false;
$.each(json[2].plext.markup, function(ind, markup) { $.each(json[2].plext.markup, function(ind, markup) {
switch(markup[0]) { switch(markup[0]) {
@ -157,14 +157,17 @@ window.plugin.playerTracker.processNewData = function(data) {
} }
break; break;
case 'PLAYER': case 'PLAYER':
pguid = markup[1].plain; plrname = markup[1].plain;
break; break;
case 'PORTAL': case 'PORTAL':
// link messages are “player linked X to Y” and the player is at // link messages are “player linked X to Y” and the player is at
// X. // X.
lat = lat ? lat : markup[1].latE6/1E6; lat = lat ? lat : markup[1].latE6/1E6;
lng = lng ? lng : markup[1].lngE6/1E6; lng = lng ? lng : markup[1].lngE6/1E6;
guid = guid ? guid : markup[1].guid;
// no GUID in the data any more - but we need some unique string. use the latE6,lngE6
guid = guid ? guid : markup[1].latE6+","+markup[1].lngE6;
name = name ? name : markup[1].name; name = name ? name : markup[1].name;
address = address ? address : markup[1].address; address = address ? address : markup[1].address;
break; break;
@ -172,7 +175,7 @@ window.plugin.playerTracker.processNewData = function(data) {
}); });
// skip unusable events // skip unusable events
if(!pguid || !lat || !lng || !guid || skipThisMessage) return true; if(!plrname || !lat || !lng || !guid || skipThisMessage) return true;
var newEvent = { var newEvent = {
latlngs: [[lat, lng]], latlngs: [[lat, lng]],
@ -182,13 +185,13 @@ window.plugin.playerTracker.processNewData = function(data) {
address: address address: address
}; };
var playerData = window.plugin.playerTracker.stored[pguid]; var playerData = window.plugin.playerTracker.stored[plrname];
// short-path if this is a new player // short-path if this is a new player
if(!playerData || playerData.events.length === 0) { if(!playerData || playerData.events.length === 0) {
plugin.playerTracker.stored[pguid] = { plugin.playerTracker.stored[plrname] = {
// this always resolves, as the chat delivers this data // this always resolves, as the chat delivers this data
nick: pguid, nick: plrname,
team: json[2].plext.team, team: json[2].plext.team,
events: [newEvent] events: [newEvent]
}; };
@ -209,7 +212,7 @@ window.plugin.playerTracker.processNewData = function(data) {
if(evts[cmp].time === json[1]) { if(evts[cmp].time === json[1]) {
evts[cmp].latlngs.push([lat, lng]); evts[cmp].latlngs.push([lat, lng]);
evts[cmp].guids.push(guid); evts[cmp].guids.push(guid);
plugin.playerTracker.stored[pguid].events = evts; plugin.playerTracker.stored[plrname].events = evts;
return true; return true;
} }
@ -234,7 +237,7 @@ window.plugin.playerTracker.processNewData = function(data) {
} }
// update player data // update player data
plugin.playerTracker.stored[pguid].events = evts; plugin.playerTracker.stored[plrname].events = evts;
}); });
} }
@ -271,9 +274,9 @@ window.plugin.playerTracker.drawData = function() {
var split = PLAYER_TRACKER_MAX_TIME / 4; var split = PLAYER_TRACKER_MAX_TIME / 4;
var now = new Date().getTime(); var now = new Date().getTime();
$.each(plugin.playerTracker.stored, function(pguid, playerData) { $.each(plugin.playerTracker.stored, function(plrname, playerData) {
if(!playerData || playerData.events.length === 0) { if(!playerData || playerData.events.length === 0) {
console.warn('broken player data for pguid=' + pguid); console.warn('broken player data for plrname=' + plrname);
return true; return true;
} }
@ -309,7 +312,7 @@ window.plugin.playerTracker.drawData = function() {
} }
popup += '<span style="font-weight:bold;margin-left:10px;">'; popup += '<span style="font-weight:bold;margin-left:10px;">';
var playerLevelDetails = window.plugin.guessPlayerLevels.fetchLevelDetailsByPlayer(pguid); var playerLevelDetails = window.plugin.guessPlayerLevels.fetchLevelDetailsByPlayer(plrname);
if(playerLevelDetails.min == 8) { if(playerLevelDetails.min == 8) {
popup += 'Level ' + getLevel(8); popup += 'Level ' + getLevel(8);
} else { } else {
@ -429,7 +432,7 @@ window.plugin.playerTracker.handleData = function(data) {
window.plugin.playerTracker.findUserPosition = function(nick) { window.plugin.playerTracker.findUserPosition = function(nick) {
nick = nick.toLowerCase(); nick = nick.toLowerCase();
var foundPlayerData = undefined; var foundPlayerData = undefined;
$.each(plugin.playerTracker.stored, function(pguid, playerData) { $.each(plugin.playerTracker.stored, function(plrname, playerData) {
if (playerData.nick.toLowerCase() === nick) { if (playerData.nick.toLowerCase() === nick) {
foundPlayerData = playerData; foundPlayerData = playerData;
return false; return false;