37 lines
936 B
JavaScript
37 lines
936 B
JavaScript
import Updux from "updux";
|
|
import { action, payload } from "ts-action";
|
|
import u from "@yanick/updeep";
|
|
import { createSelector } from "reselect";
|
|
import _ from 'lodash';
|
|
|
|
const dux = new Updux({
|
|
initial: [],
|
|
});
|
|
|
|
const set_armour_nbr_layers = action('set_armour_nbr_layers',payload());
|
|
|
|
dux.addMutation( set_armour_nbr_layers, nbr_layers => state => {
|
|
if( state.length > nbr_layers ) state = state.slice(0,nbr_layers);
|
|
|
|
if( state.length < nbr_layers ) {
|
|
state = [ state, _.times( nbr_layers - state.length, () => [] ) ].flat();
|
|
}
|
|
|
|
state = u.map( (el,i) => ({layer: i +1, rating: 0, cost: 0, mass: 0, ...el }), state);
|
|
|
|
return state;
|
|
});
|
|
|
|
dux.addMutation(
|
|
action('set_armour_layer', payload()),
|
|
({layer, rating}) => u.map(
|
|
u.if(_.matches({layer}), u({
|
|
rating,
|
|
cost: 2 * layer * rating,
|
|
mass: 2 * rating,
|
|
}))
|
|
)
|
|
);
|
|
|
|
export default dux.asDux;
|