Merge pull request #511 from EDCD/fix/data

Not more than 4 experimentals
This commit is contained in:
Felix Linker
2019-05-18 12:48:44 +02:00
committed by GitHub
2 changed files with 24 additions and 5 deletions

View File

@@ -128,6 +128,7 @@ export default class AvailableModulesMenu extends TranslatedComponent {
m: PropTypes.object,
shipMass: PropTypes.number,
warning: PropTypes.func,
disable: PropTypes.func,
firstSlotId: PropTypes.string,
lastSlotId: PropTypes.string,
activeSlotId: PropTypes.string,
@@ -159,7 +160,7 @@ 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, disable, shipMass, onSelect, modules, firstSlotId, lastSlotId } = props;
let list, currentGroup;
let buildGroup = this._buildGroup.bind(
@@ -167,6 +168,7 @@ export default class AvailableModulesMenu extends TranslatedComponent {
translate,
m,
warning,
disable,
shipMass - (m && m.mass ? m.mass : 0),
(m, event) => {
this._hideDiff(event);
@@ -258,6 +260,7 @@ export default class AvailableModulesMenu extends TranslatedComponent {
* @param {Function} translate Translate function
* @param {Object} mountedModule Mounted Module
* @param {Function} warningFunc Warning function
* @param {Function} disableFunc Function when selection should be disabled
* @param {number} mass Mass
* @param {function} onSelect Select/Mount callback
* @param {string} grp Group name
@@ -266,7 +269,7 @@ export default class AvailableModulesMenu extends TranslatedComponent {
* @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(translate, mountedModule, warningFunc, disableFunc, mass, onSelect, grp, modules, firstSlotId, lastSlotId) {
let prevClass = null, prevRating = null, prevName;
let elems = [];
@@ -284,6 +287,7 @@ export default class AvailableModulesMenu extends TranslatedComponent {
let m = sortedModules[i];
let mount = null;
let disabled = false;
let softDisabled = disableFunc && disableFunc(m);
prevName = m.name;
if (ModuleUtils.isShieldGenerator(m.grp)) {
// Shield generators care about maximum hull mass
@@ -294,7 +298,7 @@ export default class AvailableModulesMenu extends TranslatedComponent {
}
let active = mountedModule && mountedModule.id === m.id;
let classes = cn(m.name ? 'lc' : 'c', {
warning: !disabled && warningFunc && warningFunc(m),
warning: !disabled && (softDisabled || (warningFunc && warningFunc(m))),
active,
disabled
});
@@ -316,7 +320,7 @@ export default class AvailableModulesMenu extends TranslatedComponent {
this.lastSlotId = sortedModules[i].id;
let showDiff = this._showDiff.bind(this, mountedModule, m);
let select = onSelect.bind(null, m);
let select = softDisabled ? () => {} : onSelect.bind(null, m);
eventHandlers = {
onMouseEnter: this._over.bind(this, showDiff),
@@ -344,7 +348,7 @@ export default class AvailableModulesMenu extends TranslatedComponent {
// elems.push(<br key={'b' + m.grp + i} />);
itemsOnThisRow = 0;
}
if (itemsOnThisRow == 6 || i > 0 && sortedModules.length > 3 && itemsPerClass > 2 && m.class != prevClass && (m.rating != prevRating || m.mount)) {
if (itemsOnThisRow == 4 || i > 0 && sortedModules.length > 3 && itemsPerClass > 2 && m.class != prevClass && (m.rating != prevRating || m.mount)) {
elems.push(<br key={'b' + m.grp + i}/>);
itemsOnThisRow = 0;
}

View File

@@ -7,6 +7,20 @@ import ModificationsMenu from './ModificationsMenu';
import { diffDetails } from '../utils/SlotFunctions';
import { wrapCtxMenu } from '../utils/UtilityFunctions';
/**
* Returns a function that checks that a given module does not exceed the limit
* of experimental modules.
* @param {Ship} ship Ship to check experimentals for
* @return {Function} Checker function that returns true if the number of
* experimentals is exceeded
*/
function experimentalTracker(ship) {
return (m) => {
return m.experimental &&
4 <= ship.hardpoints.reduce((r, o) => o.m && o.m.experimental ? r + 1 : r, 0);
};
}
/**
* Abstract Slot
*/
@@ -133,6 +147,7 @@ export default class Slot extends TranslatedComponent {
warning={warning}
diffDetails={diffDetails.bind(ship, this.context.language)}
slotDiv = {this.slotDiv}
disable={experimentalTracker(ship)}
/>;
}
}