diff --git a/code/entity_decode.js b/code/entity_decode.js index c6d6dd70..edf2b5d5 100644 --- a/code/entity_decode.js +++ b/code/entity_decode.js @@ -37,10 +37,9 @@ } - var summaryArrayLength = 14; - //there's also a 'placeholder' portal - generated from the data in links/fields. only has team/lat/lng + var CORE_PORTA_DATA_LENGTH = 4; function corePortalData(a) { return { // a[0] == type (always 'p') @@ -50,6 +49,7 @@ } }; + var SUMMARY_PORTAL_DATA_LENGTH = 14; function summaryPortalData(a) { return { level: a[4], @@ -65,16 +65,21 @@ }; }; + var DETAILED_PORTAL_DATA_LENGTH = SUMMARY_PORTAL_DATA_LENGTH+4; + + window.decodeArray.portalSummary = function(a) { if (!a) return undefined; if (a[0] != 'p') throw 'Error: decodeArray.portalSUmmary - not a portal'; - if (a.length == 4) { + if (a.length == CORE_PORTA_DATA_LENGTH) { return corePortalData(a); } - if (a.length != summaryArrayLength) { + // NOTE: allow for either summary or detailed portal data to be passed in here, as details are sometimes + // passed into code only expecting summaries + if (a.length != SUMMARY_PORTAL_DATA_LENGTH && a.length != DETAILED_PORTAL_DATA_LENGTH) { console.warn('Portal summary length changed - portal details likely broken!'); debugger; } @@ -87,18 +92,22 @@ if (a[0] != 'p') throw 'Error: decodeArray.portalDetail - not a portal'; + if (a.length != DETAILED_PORTAL_DATA_LENGTH) { + console.warn('Portal detail length changed - portal details may be wrong'); + debugger; + } - //TODO look at the array values, make a better guess as to which index the mods start at, rather than using the hard-coded summaryArrayLength constant + //TODO look at the array values, make a better guess as to which index the mods start at, rather than using the hard-coded SUMMARY_PORTAL_DATA_LENGTH constant // the portal details array is just an extension of the portal summary array // to allow for niantic adding new items into the array before the extended details start, // use the length of the summary array return $.extend(corePortalData(a), summaryPortalData(a),{ - mods: a[summaryArrayLength+0].map(parseMod), - resonators:a[summaryArrayLength+1].map(parseResonator), - owner: a[summaryArrayLength+2], - artifact: parseArtifact(a[summaryArrayLength+3]), + mods: a[SUMMARY_PORTAL_DATA_LENGTH+0].map(parseMod), + resonators:a[SUMMARY_PORTAL_DATA_LENGTH+1].map(parseResonator), + owner: a[SUMMARY_PORTAL_DATA_LENGTH+2], + artifact: parseArtifact(a[SUMMARY_PORTAL_DATA_LENGTH+3]), }); }