From 1dfeb791b063b704a2b43b98b2651a06719f1067 Mon Sep 17 00:00:00 2001 From: billybennett Date: Mon, 11 Mar 2013 05:39:08 -0400 Subject: [PATCH] Friendly/Enemy AP gain Should merge now. --- code/portal_detail_display_tools.js | 22 ++++++++------- code/portal_info.js | 42 ++++++++++++++++++++--------- 2 files changed, 43 insertions(+), 21 deletions(-) diff --git a/code/portal_detail_display_tools.js b/code/portal_detail_display_tools.js index 1687f5d9..6fd989b2 100644 --- a/code/portal_detail_display_tools.js +++ b/code/portal_detail_display_tools.js @@ -139,18 +139,22 @@ window.renderResonatorDetails = function(slot, level, nrg, dist, nick) { // calculate AP gain from destroying portal and then capturing it by deploying resonators window.getAttackApGainText = function(d) { var breakdown = getAttackApGain(d); + var totalGain = breakdown.enemyAp; function tt(text) { - var t = 'Destroy & Capture:\n'; - t += breakdown.resoCount + '×\tResonators\t= ' + digits(breakdown.resoAp) + '\n'; - t += breakdown.linkCount + '×\tLinks\t= ' + digits(breakdown.linkAp) + '\n'; - t += breakdown.fieldCount + '×\tFields\t= ' + digits(breakdown.fieldAp) + '\n'; - t += '1×\tCapture\t= ' + CAPTURE_PORTAL + '\n'; - t += '8×\tDeploy\t= ' + (8 * DEPLOY_RESONATOR) + '\n'; - t += '1×\tBonus\t= ' + COMPLETION_BONUS + '\n'; - t += 'Sum: ' + digits(breakdown.totalAp) + ' AP'; + var t = ''; + if (PLAYER.team == d.controllingTeam.team) { + totalGain = breakdown.friendlyAp; + t += 'Friendly AP:\t' + breakdown.friendlyAp + '\n'; + t += ' Deploy ' + breakdown.deployCount + ', '; + t += 'Upgrade ' + breakdown.upgradeCount + '\n'; + t += '\n'; + } + t += 'Enemy AP:\t' + breakdown.enemyAp + '\n'; + t += ' Destroy AP:\t' + breakdown.destroyAp + '\n'; + t += ' Capture AP:\t' + breakdown.captureAp + '\n'; return '' + digits(text) + ''; } - return [tt('AP Gain'), tt(breakdown.totalAp)]; + return [tt('AP Gain'), tt(totalGain)]; } diff --git a/code/portal_info.js b/code/portal_info.js index fdbc91c2..d17e6d9c 100644 --- a/code/portal_info.js +++ b/code/portal_info.js @@ -69,11 +69,21 @@ window.getAvgResoDist = function(d) { window.getAttackApGain = function(d) { var resoCount = 0; - + var maxResonators = MAX_RESO_PER_PLAYER.slice(0); + var curResonators = [ 0, 0, 0, 0, 0, 0, 0, 0, 0]; + + for(var n = PLAYER.level + 1; n < 9; n++) { + maxResonators[n] = 0; + } $.each(d.resonatorArray.resonators, function(ind, reso) { - if (!reso) + if(!reso) return true; resoCount += 1; + if(reso.ownerGuid === PLAYER.guid) { + maxResonators[parseInt(reso.level)] -= 1; + } else { + curResonators[parseInt(reso.level)] += 1; + } }); var linkCount = d.portalV2.linkedEdges ? d.portalV2.linkedEdges.length : 0; @@ -84,17 +94,25 @@ window.getAttackApGain = function(d) { var fieldAp = fieldCount * DESTROY_FIELD; var destroyAp = resoAp + linkAp + fieldAp; var captureAp = CAPTURE_PORTAL + 8 * DEPLOY_RESONATOR + COMPLETION_BONUS; - var totalAp = destroyAp + captureAp; - + var enemyAp = destroyAp + captureAp; + var deployCount = 8 - resoCount; + var completionAp = (deployCount > 0) ? COMPLETION_BONUS : 0; + var upgradeCount = 0; + var upgradeAvailable = maxResonators[8]; + for(var n = 7; n >= 0; n--) { + upgradeCount += curResonators[n]; + if(upgradeAvailable < upgradeCount) { + upgradeCount -= (upgradeCount - upgradeAvailable); + } + upgradeAvailable += maxResonators[n]; + } + var friendlyAp = deployCount * DEPLOY_RESONATOR + upgradeCount * UPGRADE_ANOTHERS_RESONATOR + completionAp; return { - totalAp: totalAp, + friendlyAp: friendlyAp, + deployCount: deployCount, + upgradeCount: upgradeCount, + enemyAp: enemyAp, destroyAp: destroyAp, - captureAp: captureAp, - resoCount: resoCount, - resoAp: resoAp, - linkCount: linkCount, - linkAp: linkAp, - fieldCount: fieldCount, - fieldAp: fieldAp + captureAp: captureAp }; }