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,
+ }
+}