import { Updux } from "updux"; import u from "updeep"; import { createSelector } from "reselect"; import reqs from "../reqs.js"; export const ftlTypes = ["none", "standard", "advanced"]; const dux = new Updux({ subduxes: { reqs }, initial: { type: "none", }, actions: { setFtl: null, setFtlReqs: null, }, }); export default dux; dux.setMutation( 'setFtl', type => u({type}) ); dux.setMutation( 'setFtlReqs', reqs => u({reqs}) ); export function calcFtlReqs(type,shipMass) { if(type==="none") return { cost: 0, mass: 0 }; const mass = Math.ceil(shipMass / 10); return { mass, cost: mass * ( type === 'advanced' ? 3 : 2 ), } } // needs to be at the top level export const ftlReqsReaction = store => createSelector( [ (ship) => ship.propulsion.ftl.type, (ship) => ship.reqs.mass, ], (type,shipMass) => store.dispatch.setFtlReqs(calcFtlReqs(type,shipMass)) );