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
// @name IITC Plugin: Player tracker
// @category Layer
// @version 0.10.4.@@DATETIMEVERSION@@
// @version 0.10.5.@@DATETIMEVERSION@@
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion
// @updateURL @@UPDATEURL@@
// @downloadURL @@DOWNLOADURL@@
@ -111,15 +111,15 @@ window.plugin.playerTracker.getLimit = function() {
window.plugin.playerTracker.discardOldData = function() {
var limit = plugin.playerTracker.getLimit();
$.each(plugin.playerTracker.stored, function(pguid, player) {
$.each(plugin.playerTracker.stored, function(plrname, player) {
var i;
var ev = player.events;
for(i = 0; i < ev.length; i++) {
if(ev[i].time >= limit) break;
}
if(i === 0) return true;
if(i === ev.length) return delete plugin.playerTracker.stored[pguid];
plugin.playerTracker.stored[pguid].events.splice(0, i);
if(i === ev.length) return delete plugin.playerTracker.stored[plrname];
plugin.playerTracker.stored[plrname].events.splice(0, i);
});
}
@ -141,7 +141,7 @@ window.plugin.playerTracker.processNewData = function(data) {
if(json[1] < limit) return true;
// find player and portal information
var pguid, lat, lng, guid, name, address;
var plrname, lat, lng, guid, name, address;
var skipThisMessage = false;
$.each(json[2].plext.markup, function(ind, markup) {
switch(markup[0]) {
@ -157,14 +157,17 @@ window.plugin.playerTracker.processNewData = function(data) {
}
break;
case 'PLAYER':
pguid = markup[1].plain;
plrname = markup[1].plain;
break;
case 'PORTAL':
// link messages are “player linked X to Y” and the player is at
// X.
lat = lat ? lat : markup[1].latE6/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;
address = address ? address : markup[1].address;
break;
@ -172,7 +175,7 @@ window.plugin.playerTracker.processNewData = function(data) {
});
// skip unusable events
if(!pguid || !lat || !lng || !guid || skipThisMessage) return true;
if(!plrname || !lat || !lng || !guid || skipThisMessage) return true;
var newEvent = {
latlngs: [[lat, lng]],
@ -182,13 +185,13 @@ window.plugin.playerTracker.processNewData = function(data) {
address: address
};
var playerData = window.plugin.playerTracker.stored[pguid];
var playerData = window.plugin.playerTracker.stored[plrname];
// short-path if this is a new player
if(!playerData || playerData.events.length === 0) {
plugin.playerTracker.stored[pguid] = {
plugin.playerTracker.stored[plrname] = {
// this always resolves, as the chat delivers this data
nick: pguid,
nick: plrname,
team: json[2].plext.team,
events: [newEvent]
};
@ -209,7 +212,7 @@ window.plugin.playerTracker.processNewData = function(data) {
if(evts[cmp].time === json[1]) {
evts[cmp].latlngs.push([lat, lng]);
evts[cmp].guids.push(guid);
plugin.playerTracker.stored[pguid].events = evts;
plugin.playerTracker.stored[plrname].events = evts;
return true;
}
@ -234,7 +237,7 @@ window.plugin.playerTracker.processNewData = function(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 now = new Date().getTime();
$.each(plugin.playerTracker.stored, function(pguid, playerData) {
$.each(plugin.playerTracker.stored, function(plrname, playerData) {
if(!playerData || playerData.events.length === 0) {
console.warn('broken player data for pguid=' + pguid);
console.warn('broken player data for plrname=' + plrname);
return true;
}
@ -309,7 +312,7 @@ window.plugin.playerTracker.drawData = function() {
}
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) {
popup += 'Level ' + getLevel(8);
} else {
@ -429,7 +432,7 @@ window.plugin.playerTracker.handleData = function(data) {
window.plugin.playerTracker.findUserPosition = function(nick) {
nick = nick.toLowerCase();
var foundPlayerData = undefined;
$.each(plugin.playerTracker.stored, function(pguid, playerData) {
$.each(plugin.playerTracker.stored, function(plrname, playerData) {
if (playerData.nick.toLowerCase() === nick) {
foundPlayerData = playerData;
return false;