import React from 'react'; import PropTypes from 'prop-types'; import TranslatedComponent from './TranslatedComponent'; import cn from 'classnames'; import { Warning } from './SvgIcons'; import * as Calc from '../shipyard/Calculations'; /** * Ship Summary Table / Stats */ export default class ShipSummaryTable extends TranslatedComponent { static propTypes = { ship: PropTypes.object.isRequired, cargo: PropTypes.number.isRequired, fuel: PropTypes.number.isRequired, marker: PropTypes.string.isRequired, }; /** * Render the table * @return {React.Component} Summary table */ render() { const { ship, cargo, fuel } = this.props; let { language, tooltip, termtip } = this.context; let translate = language.translate; let u = language.units; let formats = language.formats; let { time, int, round, f1, f2 } = formats; let hide = tooltip.bind(null, null); const shieldGenerator = ship.findInternalByGroup('sg'); const sgClassNames = cn({ warning: shieldGenerator && !ship.shield, muted: !shieldGenerator }); const sgTooltip = shieldGenerator ? 'TT_SUMMARY_SHIELDS' : 'TT_SUMMARY_SHIELDS_NONFUNCTIONAL'; const timeToDrain = Calc.timeToDrainWep(ship, 4); const canThrust = ship.canThrust(cargo, ship.fuelCapacity); const speedTooltip = canThrust ? 'TT_SUMMARY_SPEED' : 'TT_SUMMARY_SPEED_NONFUNCTIONAL'; const canBoost = ship.canBoost(cargo, ship.fuelCapacity); const boostTooltip = canBoost ? 'TT_SUMMARY_BOOST' : canThrust ? 'TT_SUMMARY_BOOST_NONFUNCTIONAL' : 'TT_SUMMARY_SPEED_NONFUNCTIONAL'; return
{/* */} {/* */}
{translate('speed')} {translate('boost')} {translate('jump range')} {translate('shield')} {translate('integrity')} {translate('DPS')} {translate('EPS')} {translate('TTD')}{translate('HPS')}{translate('cargo')} {translate('passengers')} {translate('fuel')} {translate('mass')} {translate('hrd')} {translate('crew')} {translate('MLF')}
{translate('max')} {translate('unladen')} {translate('laden')} {translate('total unladen')} {translate('total laden')} {translate('hull')} {translate('unladen')} {translate('laden')}
{ 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} {ship.passengerCapacity} {round(ship.fuelCapacity)}{u.T} {ship.hullMass}{u.T} {int(ship.unladenMass)}{u.T} {int(ship.ladenMass)}{u.T} {int(ship.hardness)} {ship.crew} {ship.masslock}
; } }