diff --git a/src/app/components/Offence.jsx b/src/app/components/Offence.jsx index 1c823c3c..bb880d4d 100644 --- a/src/app/components/Offence.jsx +++ b/src/app/components/Offence.jsx @@ -140,6 +140,8 @@ export default class Offence extends TranslatedComponent { const opponentShields = Calc.shieldMetrics(opponent, 4); const opponentArmour = Calc.armourMetrics(opponent); + const timeToDrain = Calc.timeToDrainWep(ship, wep); + let absoluteShieldsSDps = 0; let explosiveShieldsSDps = 0; let kineticShieldsSDps = 0; @@ -243,7 +245,8 @@ export default class Offence extends TranslatedComponent {
-

{translate('damage to opponent')}

+

{translate('offence metrics')}

+

{translate('PHRASE_TIME_TO_DRAIN_WEP')}
{timeToDrain === Infinity ? translate('never') : formats.time(timeToDrain)}

{translate('PHRASE_TIME_TO_REMOVE_SHIELDS')}
{timeToDepleteShields === Infinity ? translate('never') : formats.time(timeToDepleteShields)}

{translate('PHRASE_TIME_TO_REMOVE_ARMOUR')}
{timeToDepleteArmour === Infinity ? translate('never') : formats.time(timeToDepleteArmour)}

diff --git a/src/app/components/ShipSummaryTable.jsx b/src/app/components/ShipSummaryTable.jsx index e4fb8edd..9212bb1b 100644 --- a/src/app/components/ShipSummaryTable.jsx +++ b/src/app/components/ShipSummaryTable.jsx @@ -11,11 +11,6 @@ export default class ShipSummaryTable extends TranslatedComponent { static propTypes = { ship: React.PropTypes.object.isRequired, - sys: React.PropTypes.number.isRequired, - eng: React.PropTypes.number.isRequired, - wep: React.PropTypes.number.isRequired, - cargo: React.PropTypes.number.isRequired, - fuel: React.PropTypes.number.isRequired, marker: React.PropTypes.string.isRequired, }; @@ -24,7 +19,7 @@ export default class ShipSummaryTable extends TranslatedComponent { * @return {React.Component} Summary table */ render() { - const { ship, fuel, eng, wep, cargo, boost } = this.props; + const { ship } = this.props; let { language, tooltip, termtip } = this.context; let translate = language.translate; let u = language.units; @@ -34,9 +29,12 @@ export default class ShipSummaryTable extends TranslatedComponent { const shieldGenerator = ship.findInternalByGroup('sg'); const sgClassNames = cn({ warning: shieldGenerator && !ship.shield, muted: !shieldGenerator }); - const timeToDrain = Calc.timeToDrainWep(ship, wep); + const sgTooltip = shieldGenerator ? 'TT_SUMMARY_SHIELDS' : 'TT_SUMMARY_SHIELDS_NONFUNCTIONAL'; + const timeToDrain = Calc.timeToDrainWep(ship, 4); const canThrust = ship.canThrust(); + const speedTooltip = canThrust ? 'TT_SUMMARY_SPEED' : 'TT_SUMMARY_SPEED_NONFUNCTIONAL'; const canBoost = ship.canBoost(); + const boostTooltip = canBoost ? 'TT_SUMMARY_BOOST' : canThrust ? 'TT_SUMMARY_BOOST_NONFUNCTIONAL' : 'TT_SUMMARY_SPEED_NONFUNCTIONAL'; return
@@ -44,46 +42,52 @@ export default class ShipSummaryTable extends TranslatedComponent { - - - - - - - - + + + + + + + {/* */} - + + - + + + + + + - - - - + + - - - - - - - - - - - - + + + + + + + + + + + + + {/* */} - - + + + + diff --git a/src/app/i18n/en.js b/src/app/i18n/en.js index cf986c7b..6ed56ba4 100644 --- a/src/app/i18n/en.js +++ b/src/app/i18n/en.js @@ -57,6 +57,8 @@ export const terms = { TT_TIME_TO_REMOVE_SHIELDS: 'With sustained fire by all weapons', PHRASE_TIME_TO_REMOVE_ARMOUR: 'Will remove armour in', TT_TIME_TO_REMOVE_ARMOUR: 'With sustained fire by all weapons', + PHRASE_TIME_TO_DRAIN_WEP: 'Will drain WEP in', + TT_TIME_TO_DRAIN_WEP: 'Time to drain WEP capacitor with all weapons firing', TT_TIME_TO_LOSE_SHIELDS: 'Against sustained fire from all opponent\'s weapons', TT_TIME_TO_LOSE_ARMOUR: 'Against sustained fire from all opponent\'s weapons', TT_MODULE_ARMOUR: 'Armour protecting against module damage', @@ -68,6 +70,25 @@ export const terms = { TT_EFFECTIVE_SDPS_ARMOUR: 'Actual sustained DPS whilst WEP capacitor is not empty', TT_EFFECTIVENESS_ARMOUR: 'Effectivness compared to hitting a 0-resistance target at 0m', + TT_SUMMARY_SPEED: 'With full fuel tank and 4 pips to ENG', + TT_SUMMARY_SPEED_NONFUNCTIONAL: 'Thrusters powered off or over maximum mass', + TT_SUMMARY_BOOST: 'With full fuel tank and 4 pips to ENG', + TT_SUMMARY_BOOST_NONFUNCTIONAL: 'Power distributor not able to supply enough power to boost', + TT_SUMMARY_SHIELDS: 'Raw shield strength, including boosters', + TT_SUMMARY_SHIELDS_NONFUNCTIONAL: 'No shield generator or shield generator powered off', + TT_SUMMARY_INTEGRITY: 'Ship integrity, including bulkheads and hull reinforcement packages', + TT_SUMMARY_HULL_MASS: 'Mass of the hull prior to any modules being installed', + TT_SUMMARY_UNLADEN_MASS: 'Mass of the hull and modules prior to any fuel or cargo', + TT_SUMMARY_LADEN_MASS: 'Mass of the hull and modules with full fuel and cargo', + TT_SUMMARY_DPS: 'Damage per second with all weapons firing', + TT_SUMMARY_EPS: 'WEP capacitor consumed per second with all weapons firing', + TT_SUMMARY_TTD: 'Time to drain WEP capacitor with all weapons firing and 4 pips to WEP', + TT_SUMMARY_MAX_SINGLE_JUMP: 'Farthest possible jump range with no cargo and only enough fuel for the jump itself', + TT_SUMMARY_UNLADEN_SINGLE_JUMP: 'Farthest possible jump range with no cargo and a full fuel tank', + TT_SUMMARY_LADEN_SINGLE_JUMP: 'Farthest possible jump range with full cargo and a full fuel tank', + TT_SUMMARY_UNLADEN_TOTAL_JUMP: 'Farthest possible range with no cargo, a full fuel tank, and jumping as far as possible each time', + TT_SUMMARY_LADEN_TOTAL_JUMP: 'Farthest possible range with full cargo, a full fuel tank, and jumping as far as possible each time', + HELP_MODIFICATIONS_MENU: 'Click on a number to enter a new value, or drag along the bar for small changes', // Other languages fallback to these values diff --git a/src/app/pages/OutfittingPage.jsx b/src/app/pages/OutfittingPage.jsx index 583a5485..a4521982 100644 --- a/src/app/pages/OutfittingPage.jsx +++ b/src/app/pages/OutfittingPage.jsx @@ -497,7 +497,7 @@ export default class OutfittingPage extends Page { const internalSlotMarker = `${ship.name}${_iStr}${_pStr}${_mStr}`; const hardpointsSlotMarker = `${ship.name}${_hStr}${_pStr}${_mStr}`; const boostMarker = `${ship.canBoost()}`; - const shipSummaryMarker = `${ship.toString()}${eng}${fuel}${cargo}`; + const shipSummaryMarker = `${ship.name}${_sStr}${_iStr}${_hStr}${_pStr}${_mStr}`; return (
@@ -533,7 +533,7 @@ export default class OutfittingPage extends Page {
{/* Main tables */} - +
{translate('speed')} {translate('boost')}{translate('DPS')}{translate('EPS')}{translate('TTD')}{translate('HPS')}{translate('hrd')}{translate('arm')}{translate('shld')}{translate('mass')}{translate('jump range')}{translate('shield')}{translate('integrity')}{translate('DPS')}{translate('EPS')}{translate('TTD')}{translate('HPS')}{translate('cargo')} {translate('fuel')}{translate('jump range')}{translate('mass')}{translate('hrd')} {translate('crew')}{translate('MLF')}{translate('MLF')}
{translate('max')}{translate('unladen')}{translate('laden')}{translate('total unladen')}{translate('total laden')} {translate('hull')}{translate('unladen')}{translate('laden')}{translate('single')}{translate('total')}{translate('unladen')}{translate('laden')}
{ canThrust ? {int(ship.calcSpeed(eng, fuel, cargo, false))}{u['m/s']} : 0 }{ canBoost ? {int(ship.calcSpeed(eng, fuel, cargo, true))}{u['m/s']} : 0 }{f1(ship.totalDps)}{f1(ship.totalEps)}{timeToDrain === Infinity ? '∞' : time(timeToDrain)}{f1(ship.totalHps)}{int(ship.hardness)}{int(ship.armour)}{int(ship.shield)}{u.MJ}{ship.hullMass}{u.T}{int(ship.unladenMass)}{u.T}{int(ship.ladenMass)}{u.T}{ canThrust ? {int(ship.calcSpeed(4, ship.fuelCapacity, 0, false))}{u['m/s']} : 0 }{ canBoost ? {int(ship.calcSpeed(4, ship.fuelCapacity, 0, true))}{u['m/s']} : 0 }{f2(Calc.jumpRange(ship.unladenMass + ship.standard[2].m.getMaxFuelPerJump(), ship.standard[2].m, ship.standard[2].m.getMaxFuelPerJump()))}{u.LY}{f2(Calc.jumpRange(ship.unladenMass + ship.fuelCapacity, ship.standard[2].m, ship.fuelCapacity))}{u.LY}{f2(Calc.jumpRange(ship.unladenMass + ship.fuelCapacity + ship.cargoCapacity, ship.standard[2].m, ship.fuelCapacity))}{u.LY}{f2(Calc.totalJumpRange(ship.unladenMass + ship.fuelCapacity, ship.standard[2].m, ship.fuelCapacity))}{u.LY}{f2(Calc.totalJumpRange(ship.unladenMass + ship.fuelCapacity + ship.cargoCapacity, ship.standard[2].m, ship.fuelCapacity))}{u.LY}{int(ship.shield)}{u.MJ}{int(ship.armour)}{f1(ship.totalDps)}{f1(ship.totalEps)}{timeToDrain === Infinity ? '∞' : time(timeToDrain)}{f1(ship.totalHps)}{round(ship.cargoCapacity)}{u.T} {round(ship.fuelCapacity)}{u.T}{f2(Calc.jumpRange(ship.unladenMass + fuel + cargo, ship.standard[2].m, fuel))}{u.LY}{f2(Calc.totalJumpRange(ship.unladenMass + fuel + cargo, ship.standard[2].m, fuel))}{u.LY}{ship.hullMass}{u.T}{int(ship.unladenMass)}{u.T}{int(ship.ladenMass)}{u.T}{int(ship.hardness)} {ship.crew} {ship.masslock}