diff --git a/src/dux/index.js b/src/dux/index.js index 204169d..9d83cb5 100644 --- a/src/dux/index.js +++ b/src/dux/index.js @@ -118,11 +118,6 @@ dux.addSubscription((store) => (ship) => ship.structure.screens.standard, (ship) => ship.structure.screens.advanced, (mass, standard, advanced) => { - console.log({ - mass, - standard, - advanced, - }); const standard_mass = standard * Math.max(3, ceil(0.05 * mass)); const advanced_mass = advanced * Math.max(4, ceil(0.075 * mass)); diff --git a/src/dux/structure/screens/index.js b/src/dux/structure/screens/index.js deleted file mode 100644 index 73a4a4e..0000000 --- a/src/dux/structure/screens/index.js +++ /dev/null @@ -1,18 +0,0 @@ -import Updux from "updux"; -import { action, payload } from "ts-action"; -import u from "@yanick/updeep"; -import { createSelector } from "reselect"; - -const dux = new Updux({ - initial: { - standard: 0, advanced: 0, cost: 0, mass: 0, - } -}); - -const set_screens = action('set_screens', payload() ); -dux.addMutation(set_screens, payload => u.update(payload) ); - -const set_screens_reqs = action('set_screens_reqs', payload() ); -dux.addMutation(set_screens_reqs, payload => u.update(payload) ); - -export default dux.asDux; diff --git a/src/lib/components/ShipEdit/Structure/Screens.svelte b/src/lib/components/ShipEdit/Structure/Screens.svelte new file mode 100644 index 0000000..57aad57 --- /dev/null +++ b/src/lib/components/ShipEdit/Structure/Screens.svelte @@ -0,0 +1,37 @@ + +
+ + + + + + + +
+
+ + + + diff --git a/src/lib/components/ShipEdit/Structure/index.svelte b/src/lib/components/ShipEdit/Structure/index.svelte index 99699f6..0bfd6bf 100644 --- a/src/lib/components/ShipEdit/Structure/index.svelte +++ b/src/lib/components/ShipEdit/Structure/index.svelte @@ -1,14 +1,16 @@
+
diff --git a/src/lib/shipDux/index.js b/src/lib/shipDux/index.js index c3b1c69..4b74aab 100644 --- a/src/lib/shipDux/index.js +++ b/src/lib/shipDux/index.js @@ -6,6 +6,7 @@ import identification from "./identification.js"; import { calculateDriveReqs } from './propulsion/drive.js'; import { ftlReqsReaction } from './propulsion/ftl.js'; import structure from './structure/index.js'; +import { screenReqsReaction, screensReqsReaction } from './structure/screens.js' const dux = new Updux({ subduxes: { @@ -24,5 +25,6 @@ dux.setMutation( 'setShipMass', mass => u({reqs: {mass}}) ); dux.addReaction( calculateDriveReqs ); dux.addReaction( ftlReqsReaction ); +dux.addReaction( screenReqsReaction ); export default dux; diff --git a/src/lib/shipDux/structure/index.js b/src/lib/shipDux/structure/index.js index e407a17..a2f8b4d 100644 --- a/src/lib/shipDux/structure/index.js +++ b/src/lib/shipDux/structure/index.js @@ -1,8 +1,9 @@ import { Updux } from 'updux'; import hull from './hull.js'; +import screens from './screens.js'; const dux = new Updux({ - subduxes: { hull } + subduxes: { hull, screens } }); export default dux; diff --git a/src/lib/shipDux/structure/screens.js b/src/lib/shipDux/structure/screens.js new file mode 100644 index 0000000..49e3ed4 --- /dev/null +++ b/src/lib/shipDux/structure/screens.js @@ -0,0 +1,40 @@ +import { Updux } from "updux"; +import u from 'updeep'; +import { createSelector } from 'reselect'; + +import reqs from '../reqs.js'; + +const dux = new Updux({ + subduxes: { + reqs + }, + initial: { + standard: 0, advanced: 0, + }, + actions: { + setScreens: null, + setScreensReqs: null, + } +}); +export default dux; + +dux.setMutation('setScreens', payload => u(payload)); +dux.setMutation('setScreensReqs', reqs => u({reqs})); + +export const screenReqsReaction = store => createSelector( + (ship) => ship.reqs.mass, + (ship) => ship.structure.screens.standard, + (ship) => ship.structure.screens.advanced, + (...args) => store.dispatch.setScreensReqs(calcScreensReqs(...args)), +); + +function calcScreensReqs(mass,standard,advanced) { + + const standard_mass = standard * Math.max(3, Math.ceil(0.05 * mass)); + const advanced_mass = advanced * Math.max(4, Math.ceil(0.075 * mass)); + + return { + mass: standard_mass + advanced_mass, + cost: 3 * standard_mass + 4 * advanced_mass, + } +}