diff --git a/src/lib/components/ShipEdit/Carrier/index.svelte b/src/lib/components/ShipEdit/Carrier/index.svelte index d219c7c..cb69ac8 100644 --- a/src/lib/components/ShipEdit/Carrier/index.svelte +++ b/src/lib/components/ShipEdit/Carrier/index.svelte @@ -21,7 +21,6 @@ import { getContext } from 'svelte'; export let reqs = {}; export let squadrons = []; -$: console.log({squadrons}) const { dispatch } = getContext('ship'); $: dispatch.setCarrierBays(bays); diff --git a/src/lib/components/ShipEdit/Propulsion/Drive/index.svelte b/src/lib/components/ShipEdit/Propulsion/Drive/index.svelte index 9af3248..a092b2d 100644 --- a/src/lib/components/ShipEdit/Propulsion/Drive/index.svelte +++ b/src/lib/components/ShipEdit/Propulsion/Drive/index.svelte @@ -19,7 +19,6 @@ const ship = getContext("ship"); - console.log( ship.dispatch ) $: ship.dispatch.setDrive({ rating, advanced }); diff --git a/src/lib/shipDux/index.js b/src/lib/shipDux/index.js index 2b18886..bd20867 100644 --- a/src/lib/shipDux/index.js +++ b/src/lib/shipDux/index.js @@ -21,13 +21,39 @@ const dux = new Updux({ initial: { reqs: { cost: 0, mass: 10, usedMass: 0 }, }, - actions: {}, + actions: { + setShipReqs: null, + }, }); dux.setMutation("setShipMass", (mass) => u({ reqs: { mass } })); +dux.setMutation('setShipReqs', reqs => u({reqs})); dux.addReaction(calculateDriveReqs); dux.addReaction(ftlReqsReaction); dux.addReaction(screensReqsReaction); +dux.addReaction( (store) => (state) => { + let cost = 0; + let mass = 0; + + let subsystems = Object.values(state); + + while(subsystems.length>0) { + const subsystem = subsystems.shift(); + if( typeof subsystem !== 'object' ) continue; + + if( subsystem.reqs ) { + cost += subsystem.reqs.cost; + mass += subsystem.reqs.mass; + } + + subsystems.push( ...Object.values(subsystem)); + } + + store.dispatch.setShipReqs({cost,usedMass: mass}); + +}); + + export default dux;