EXPERIMENTAL: first try at catching up with latest stock intel changes

This commit is contained in:
fkloft 2015-01-10 00:06:18 +01:00
parent 8b7769d0bf
commit 8d910a6f1e
3 changed files with 89 additions and 22 deletions

View File

@ -15,6 +15,8 @@ window.teamStringToId = function(teamStr) {
var team = TEAM_NONE;
if(teamStr === 'ENLIGHTENED') team = TEAM_ENL;
if(teamStr === 'RESISTANCE') team = TEAM_RES;
if(teamStr === 'E') team = TEAM_ENL;
if(teamStr === 'R') team = TEAM_RES;
return team;
}

View File

@ -36,7 +36,6 @@ window.Render.prototype.startRenderPass = function(level,bounds) {
this.resetLinkVisibility();
this.rescalePortalMarkers();
}
window.Render.prototype.clearPortalsBelowLevel = function(level) {
@ -87,8 +86,7 @@ window.Render.prototype.processGameEntities = function(entities) {
for (var i in entities) {
var ent = entities[i];
if (ent[2].type == 'region' && !(ent[0] in this.deletedGuid)) {
if (ent[2][0] == 'r' && !(ent[0] in this.deletedGuid)) {
this.createFieldEntity(ent);
}
}
@ -96,7 +94,7 @@ window.Render.prototype.processGameEntities = function(entities) {
for (var i in entities) {
var ent = entities[i];
if (ent[2].type == 'edge' && !(ent[0] in this.deletedGuid)) {
if (ent[2][0] == 'e' && !(ent[0] in this.deletedGuid)) {
this.createLinkEntity(ent);
}
}
@ -104,7 +102,7 @@ window.Render.prototype.processGameEntities = function(entities) {
for (var i in entities) {
var ent = entities[i];
if (ent[2].type == 'portal' && !(ent[0] in this.deletedGuid)) {
if (ent[2][0] == 'p' && !(ent[0] in this.deletedGuid)) {
this.createPortalEntity(ent);
}
}
@ -242,23 +240,36 @@ window.Render.prototype.createPortalEntity = function(ent) {
this.deletePortalEntity(ent[0]);
}
var portalLevel = parseInt(ent[2].level);
var team = teamStringToId(ent[2].team);
var portalLevel = parseInt(ent[2][4]);
var team = teamStringToId(ent[2][1]);
// the data returns unclaimed portals as level 1 - but IITC wants them treated as level 0
if (team == TEAM_NONE) portalLevel = 0;
var latlng = L.latLng(ent[2].latE6/1E6, ent[2].lngE6/1E6);
var latlng = L.latLng(ent[2][2]/1E6, ent[2][3]/1E6);
var data = {
type: ent[2][0],
team: ent[2][1],
latE6: ent[2][2],
lngE6: ent[2][3],
level: ent[2][4],
health: ent[2][5],
resCount: ent[2][6],
image: ent[2][7],
title: ent[2][8],
ornaments: ent[2][9]
};
var dataOptions = {
level: portalLevel,
team: team,
ent: ent, // LEGACY - TO BE REMOVED AT SOME POINT! use .guid, .timestamp and .details instead
ent: ent, // LEGACY - TO BE REMOVED AT SOME POINT! use .guid, .timestamp and .data instead
guid: ent[0],
timestamp: ent[1],
data: ent[2]
data: data
};
window.pushPortalGuidPositionCache(ent[0], ent[2].latE6, ent[2].lngE6);
window.pushPortalGuidPositionCache(ent[0], ent[2][3], ent[2][4]);
var marker = createMarker(latlng, dataOptions);
@ -314,11 +325,17 @@ window.Render.prototype.createFieldEntity = function(ent) {
this.deleteFieldEntity(ent[0]); // option 2, for now
}
var team = teamStringToId(ent[2].team);
var data = {
type: ent[2][0],
team: ent[2][1],
points: ent[2][2].map(function(arr) { return {guid: arr[0], latE6: arr[1], lngE6: arr[2] }; })
};
var team = teamStringToId(ent[2][1]);
var latlngs = [
L.latLng(ent[2].points[0].latE6/1E6, ent[2].points[0].lngE6/1E6),
L.latLng(ent[2].points[1].latE6/1E6, ent[2].points[1].lngE6/1E6),
L.latLng(ent[2].points[2].latE6/1E6, ent[2].points[2].lngE6/1E6)
L.latLng(data.points[0].latE6/1E6, data.points[0].lngE6/1E6),
L.latLng(data.points[1].latE6/1E6, data.points[1].lngE6/1E6),
L.latLng(data.points[2].latE6/1E6, data.points[2].lngE6/1E6)
];
var poly = L.geodesicPolygon(latlngs, {
@ -328,9 +345,10 @@ window.Render.prototype.createFieldEntity = function(ent) {
clickable: false,
team: team,
ent: ent, // LEGACY - TO BE REMOVED AT SOME POINT! use .guid, .timestamp and .data instead
guid: ent[0],
timestamp: ent[1],
data: ent[2],
data: data,
});
runHooks('fieldAdded',{field: poly});
@ -358,10 +376,21 @@ window.Render.prototype.createLinkEntity = function(ent,faked) {
this.deleteLinkEntity(ent[0]); // option 2 - for now
}
var team = teamStringToId(ent[2].team);
var data = { // TODO add other properties and check correction direction
type: ent[2][0],
team: ent[2][1],
oGuid: ent[2][2],
oLatE6: ent[2][3],
oLngE6: ent[2][4],
dGuid: ent[2][5],
dLatE6: ent[2][6],
dLngE6: ent[2][7]
};
var team = teamStringToId(ent[2][1]);
var latlngs = [
L.latLng(ent[2].oLatE6/1E6, ent[2].oLngE6/1E6),
L.latLng(ent[2].dLatE6/1E6, ent[2].dLngE6/1E6)
L.latLng(data.oLatE6/1E6, data.oLngE6/1E6),
L.latLng(data.dLatE6/1E6, data.dLngE6/1E6)
];
var poly = L.geodesicPolyline(latlngs, {
color: COLORS[team],
@ -370,9 +399,10 @@ window.Render.prototype.createLinkEntity = function(ent,faked) {
clickable: false,
team: team,
ent: ent, // LEGACY - TO BE REMOVED AT SOME POINT! use .guid, .timestamp and .data instead
guid: ent[0],
timestamp: ent[1],
data: ent[2]
data: data
});
runHooks('linkAdded', {link: poly});

View File

@ -32,8 +32,43 @@ window.portalDetail.isFresh = function(guid) {
var handleResponse = function(guid, data, success) {
delete requestQueue[guid];
function parseMod(arr) {
if(arr == null) { return null; }
return {
owner: arr[0],
name: arr[1],
rarity: arr[2],
stats: arr[3],
};
}
function parseResonator(arr) {
if(arr == null) { return null; }
return {
owner: arr[0],
level: arr[1],
energy: arr[2],
};
}
var dict = {
raw: data.result,
type: data.result[0],
team: data.result[1],
latE6: data.result[2],
lngE6: data.result[3],
level: data.result[4],
health: data.result[5],
resCount: data.result[6],
image: data.result[7],
title: data.result[8],
ornaments: data.result[9],
mods: data.result[10].map(parseMod),
resonators:data.result[11].map(parseResonator),
owner: data.result[12],
};
if (success) {
cache.store(guid,data);
cache.store(guid,dict);
//FIXME..? better way of handling sidebar refreshing...
@ -42,7 +77,7 @@ var handleResponse = function(guid, data, success) {
}
}
window.runHooks ('portalDetailLoaded', {guid:guid, success:success, details:data});
window.runHooks ('portalDetailLoaded', {guid:guid, success:success, details:data.result});
}
window.portalDetail.request = function(guid) {