diff --git a/src/lib/components/ShipEdit/Structure/Hull.svelte b/src/lib/components/ShipEdit/Structure/Hull.svelte
new file mode 100644
index 0000000..3f73838
--- /dev/null
+++ b/src/lib/components/ShipEdit/Structure/Hull.svelte
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/Structure/index.svelte b/src/lib/components/ShipEdit/Structure/index.svelte
new file mode 100644
index 0000000..99699f6
--- /dev/null
+++ b/src/lib/components/ShipEdit/Structure/index.svelte
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/src/lib/components/ShipEdit/index.svelte b/src/lib/components/ShipEdit/index.svelte
index c745b75..89dec7a 100644
--- a/src/lib/components/ShipEdit/index.svelte
+++ b/src/lib/components/ShipEdit/index.svelte
@@ -6,12 +6,15 @@
+
+
diff --git a/src/lib/components/Hull/Armour/Layer/index.svelte b/src/lib/components/Structure/Armour/Layer/index.svelte
similarity index 100%
rename from src/lib/components/Hull/Armour/Layer/index.svelte
rename to src/lib/components/Structure/Armour/Layer/index.svelte
diff --git a/src/lib/components/Hull/Armour/index.svelte b/src/lib/components/Structure/Armour/index.svelte
similarity index 100%
rename from src/lib/components/Hull/Armour/index.svelte
rename to src/lib/components/Structure/Armour/index.svelte
diff --git a/src/lib/components/Hull/Armour/stories.js b/src/lib/components/Structure/Armour/stories.js
similarity index 100%
rename from src/lib/components/Hull/Armour/stories.js
rename to src/lib/components/Structure/Armour/stories.js
diff --git a/src/lib/components/Hull/Cargo/index.svelte b/src/lib/components/Structure/Cargo/index.svelte
similarity index 100%
rename from src/lib/components/Hull/Cargo/index.svelte
rename to src/lib/components/Structure/Cargo/index.svelte
diff --git a/src/lib/components/Hull/Screens/index.svelte b/src/lib/components/Structure/Screens/index.svelte
similarity index 100%
rename from src/lib/components/Hull/Screens/index.svelte
rename to src/lib/components/Structure/Screens/index.svelte
diff --git a/src/lib/components/Hull/Streamlining/index.svelte b/src/lib/components/Structure/Streamlining/index.svelte
similarity index 100%
rename from src/lib/components/Hull/Streamlining/index.svelte
rename to src/lib/components/Structure/Streamlining/index.svelte
diff --git a/src/lib/components/Hull/index.svelte b/src/lib/components/Structure/index.svelte
similarity index 100%
rename from src/lib/components/Hull/index.svelte
rename to src/lib/components/Structure/index.svelte
diff --git a/src/lib/shipDux/index.js b/src/lib/shipDux/index.js
index 447ee88..c3b1c69 100644
--- a/src/lib/shipDux/index.js
+++ b/src/lib/shipDux/index.js
@@ -5,17 +5,18 @@ import propulsion from "./propulsion/index.js";
import identification from "./identification.js";
import { calculateDriveReqs } from './propulsion/drive.js';
import { ftlReqsReaction } from './propulsion/ftl.js';
+import structure from './structure/index.js';
const dux = new Updux({
subduxes: {
identification,
- propulsion
+ propulsion,
+ structure
},
initial: {
reqs: { cost: 0, mass: 10, usedMass: 0 },
},
actions: {
- setShipMass: null,
}
});
diff --git a/src/lib/shipDux/structure/hull.js b/src/lib/shipDux/structure/hull.js
new file mode 100644
index 0000000..a91160c
--- /dev/null
+++ b/src/lib/shipDux/structure/hull.js
@@ -0,0 +1,31 @@
+import { Updux } from "updux";
+import u from 'updeep';
+
+import reqs from '../reqs.js';
+
+const dux = new Updux({
+ subduxes: {
+ reqs
+ },
+ initial: {
+ rating: 0, min: 0, max: 0,
+ },
+ actions: {
+ setShipMass: null,
+ setHull: null,
+ }
+});
+export default dux;
+
+dux.setMutation( 'setHull', rating => u({rating,
+ reqs: {
+mass: rating, cost: 2 * rating
+ }}) );
+
+dux.setMutation( 'setShipMass', mass => state => {
+ let {rating} = state;
+ if(rating > mass) rating = mass;
+ const min = Math.ceil(mass/10);
+ if(rating < min) rating = min;
+ return u({max: mass, min, rating}, state);
+})
diff --git a/src/lib/shipDux/structure/index.js b/src/lib/shipDux/structure/index.js
new file mode 100644
index 0000000..e407a17
--- /dev/null
+++ b/src/lib/shipDux/structure/index.js
@@ -0,0 +1,8 @@
+import { Updux } from 'updux';
+
+import hull from './hull.js';
+
+const dux = new Updux({
+ subduxes: { hull }
+});
+export default dux;