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;