diff --git a/src/app/components/AvailableModulesMenu.jsx b/src/app/components/AvailableModulesMenu.jsx index b3fda06f..47b87441 100644 --- a/src/app/components/AvailableModulesMenu.jsx +++ b/src/app/components/AvailableModulesMenu.jsx @@ -126,7 +126,7 @@ export default class AvailableModulesMenu extends TranslatedComponent { onSelect: PropTypes.func.isRequired, diffDetails: PropTypes.func, m: PropTypes.object, - shipMass: PropTypes.number, + ship: PropTypes.object.isRequired, warning: PropTypes.func, firstSlotId: PropTypes.string, lastSlotId: PropTypes.string, @@ -134,10 +134,6 @@ export default class AvailableModulesMenu extends TranslatedComponent { slotDiv: PropTypes.object }; - static defaultProps = { - shipMass: 0 - }; - /** * Constructor * @param {Object} props React Component properties @@ -159,15 +155,15 @@ export default class AvailableModulesMenu extends TranslatedComponent { */ _initState(props, context) { let translate = context.language.translate; - let { m, warning, shipMass, onSelect, modules, firstSlotId, lastSlotId } = props; + let { m, warning, onSelect, modules, ship } = props; let list, currentGroup; let buildGroup = this._buildGroup.bind( this, + ship, translate, m, warning, - shipMass - (m && m.mass ? m.mass : 0), (m, event) => { this._hideDiff(event); onSelect(m); @@ -255,18 +251,16 @@ export default class AvailableModulesMenu extends TranslatedComponent { /** * Generate React Components for Module Group + * @param {Ship} ship Ship the selection is for * @param {Function} translate Translate function * @param {Object} mountedModule Mounted Module * @param {Function} warningFunc Warning function - * @param {number} mass Mass * @param {function} onSelect Select/Mount callback * @param {string} grp Group name * @param {Array} modules Available modules - * @param {string} firstSlotId id of first slot item - * @param {string} lastSlotId id of last slot item * @return {React.Component} Available Module Group contents */ - _buildGroup(translate, mountedModule, warningFunc, mass, onSelect, grp, modules, firstSlotId, lastSlotId) { + _buildGroup(ship, translate, mountedModule, warningFunc, onSelect, grp, modules) { let prevClass = null, prevRating = null, prevName; let elems = []; @@ -287,10 +281,12 @@ export default class AvailableModulesMenu extends TranslatedComponent { prevName = m.name; if (ModuleUtils.isShieldGenerator(m.grp)) { // Shield generators care about maximum hull mass - disabled = mass > m.maxmass; + disabled = ship.hullMass > m.maxmass; } else if (m.maxmass) { // Thrusters care about total mass - disabled = mass + m.mass > m.maxmass; + disabled = ship.unladenMass + m.mass > m.maxmass; + } else if (m.experimental) { + disabled = 4 <= ship.hardpoints.filter(o => o.m && o.m.experimental).length; } let active = mountedModule && mountedModule.id === m.id; let classes = cn(m.name ? 'lc' : 'c', { diff --git a/src/app/components/HardpointSlotSection.jsx b/src/app/components/HardpointSlotSection.jsx index 49397390..6a5ecdfa 100644 --- a/src/app/components/HardpointSlotSection.jsx +++ b/src/app/components/HardpointSlotSection.jsx @@ -157,10 +157,6 @@ export default class HardpointSlotSection extends SlotSection { -
{translate('ggc')}
-
{translate('rfl')}