From 767275fdf5c364d20030ee6d9ba52e844f9acba4 Mon Sep 17 00:00:00 2001 From: fkloft Date: Wed, 16 Oct 2013 17:24:20 +0200 Subject: [PATCH 1/3] Show detailed portal level in tooltip --- code/portal_detail_display.js | 13 ++++++++++++- style.css | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/code/portal_detail_display.js b/code/portal_detail_display.js index 5004ce1c..b2771d3f 100644 --- a/code/portal_detail_display.js +++ b/code/portal_detail_display.js @@ -90,6 +90,17 @@ window.renderPortalDetails = function(guid) { portalDetailedDescription += ''; } + var levelDetails = getPortalLevel(d); + if(levelDetails != 8) { + if(levelDetails==Math.ceil(levelDetails)) + levelDetails += "\n8"; + else + levelDetails += "\n" + (Math.ceil(levelDetails) - levelDetails)*8; + levelDetails += " resonator level(s) needed for next portal level"; + } else { + levelDetails += "\nfully upgraded"; + } + levelDetails = "Level " + levelDetails; $('#portaldetails') .attr('class', TEAM_TO_CSS[getTeam(d)]) @@ -98,7 +109,7 @@ window.renderPortalDetails = function(guid) { + 'X' // help cursor via ".imgpreview img" + '
' - + ''+Math.floor(getPortalLevel(d))+'' + + ''+Math.floor(getPortalLevel(d))+'' + '
'+ portalDetailedDescription + '
' + '
' + '' diff --git a/style.css b/style.css index 3b886151..8758b7de 100644 --- a/style.css +++ b/style.css @@ -526,6 +526,7 @@ h3 { display: block; margin-right: 15px; text-align:right; + float: right; } /* portal mods */ From a33bdcbf3843b49b1052c1a6dabbf1b8d50dfe62 Mon Sep 17 00:00:00 2001 From: fkloft Date: Wed, 16 Oct 2013 19:03:39 +0200 Subject: [PATCH 2/3] Show link range details for partially deployed portals. Calculates the link range for portals with <8 resonators as well, but uses a dashed circle and a striked-through range value for those. The tooltip over the range value in the details pane shows base range, link amp boost and total range. The range for portals with missing resonators can be important because links with shorter lengths might originate here. Those will collapse when the total link range drops below their length, but not as soon as a resonator is destroyed. --- code/portal_detail_display.js | 9 +++++++-- code/portal_detail_display_tools.js | 17 +++++++++++++---- code/portal_info.js | 14 ++++++++------ 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/code/portal_detail_display.js b/code/portal_detail_display.js index b2771d3f..f2f513bd 100644 --- a/code/portal_detail_display.js +++ b/code/portal_detail_display.js @@ -145,8 +145,13 @@ window.setPortalIndicators = function(d) { var range = getPortalRange(d); var coord = [d.locationE6.latE6/1E6, d.locationE6.lngE6/1E6]; - portalRangeIndicator = (range > 0 - ? L.geodesicCircle(coord, range, { fill: false, color: RANGE_INDICATOR_COLOR, weight: 3, clickable: false }) + portalRangeIndicator = (range.range > 0 + ? L.geodesicCircle(coord, range.range, { + fill: false, + color: RANGE_INDICATOR_COLOR, + weight: 3, + dashArray: range.isLinkable ? undefined : "10,10", + clickable: false }) : L.circle(coord, range, { fill: false, stroke: false, clickable: false }) ).addTo(map); diff --git a/code/portal_detail_display_tools.js b/code/portal_detail_display_tools.js index a1196d60..353189d9 100644 --- a/code/portal_detail_display_tools.js +++ b/code/portal_detail_display_tools.js @@ -5,11 +5,20 @@ // returns displayable text+link about portal range window.getRangeText = function(d) { var range = getPortalRange(d); + + var title = 'Base range:\t' + digits(Math.floor(range.base))+'m' + + '\nLink amp boost:\t×'+range.boost + + '\nRange:\t'+digits(Math.floor(range.range))+'m'; + + if(!range.isLinkable) title += '\nPortal is missing resonators,\nno new links can be made'; + return ['range', - '' - + (range > 1000 - ? Math.floor(range/1000) + ' km' - : Math.floor(range) + ' m') + '' + + (range.range > 1000 + ? Math.floor(range.range/1000) + ' km' + : Math.floor(range.range) + ' m') + '']; } diff --git a/code/portal_info.js b/code/portal_info.js index a6a5bc01..569f8f0f 100644 --- a/code/portal_info.js +++ b/code/portal_info.js @@ -47,18 +47,20 @@ window.getPortalRange = function(d) { $.each(d.resonatorArray.resonators, function(ind, reso) { if(!reso) { resoMissing = true; - return false; + return; } lvl += parseInt(reso.level); }); - if(resoMissing) return 0; - var range = 160*Math.pow(getPortalLevel(d), 4); + var range = { + base: 160*Math.pow(getPortalLevel(d), 4), + boost: getLinkAmpRangeBoost(d) + }; - var boost = getLinkAmpRangeBoost(d); - - return range*boost; + range.range = range.boost * range.base; + range.isLinkable = !resoMissing; + return range; } window.getLinkAmpRangeBoost = function(d) { From 69234ef063a476afc9ad850e9c09b0480c463313 Mon Sep 17 00:00:00 2001 From: fkloft Date: Thu, 17 Oct 2013 21:56:46 +0200 Subject: [PATCH 3/3] Small bugfix (it was impossible to select a neutral portal) --- code/portal_detail_display.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/portal_detail_display.js b/code/portal_detail_display.js index f2f513bd..47967e57 100644 --- a/code/portal_detail_display.js +++ b/code/portal_detail_display.js @@ -152,7 +152,7 @@ window.setPortalIndicators = function(d) { weight: 3, dashArray: range.isLinkable ? undefined : "10,10", clickable: false }) - : L.circle(coord, range, { fill: false, stroke: false, clickable: false }) + : L.circle(coord, range.range, { fill: false, stroke: false, clickable: false }) ).addTo(map); portalAccessIndicator = L.circle(coord, HACK_RANGE,