cargo
This commit is contained in:
parent
add30bb666
commit
87c923cac3
@ -1,10 +1,13 @@
|
|||||||
<Section label="structure">
|
<Section label="structure">
|
||||||
<Streamlining {...streamlining} />
|
<Streamlining {...streamlining} />
|
||||||
|
<Cargo {...cargo} />
|
||||||
</Section>
|
</Section>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Section from "$lib/components/Section.svelte";
|
import Section from "$lib/components/Section.svelte";
|
||||||
import Streamlining from "./Structure/Streamlining.svelte";
|
import Streamlining from "./Structure/Streamlining.svelte";
|
||||||
|
import Cargo from "./Structure/Cargo.svelte";
|
||||||
|
|
||||||
export let streamlining = {};
|
export let streamlining = {};
|
||||||
|
export let cargo = {};
|
||||||
</script>
|
</script>
|
||||||
|
@ -5,17 +5,17 @@
|
|||||||
</ShipItem>
|
</ShipItem>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import ShipItem from "$lib/components/ShipItem/index.svelte";
|
import ShipItem from "$lib/components/ShipItem.svelte";
|
||||||
import Field from "$lib/components/Field/index.svelte";
|
import Field from "$lib/components/Field.svelte";
|
||||||
|
|
||||||
import { getContext } from "svelte";
|
import { getContext } from "svelte";
|
||||||
|
|
||||||
export let ship = getContext("ship");
|
export let api = getContext("api");
|
||||||
|
|
||||||
export let space = 0;
|
export let space = 0;
|
||||||
export let reqs = {};
|
export let reqs = {};
|
||||||
|
|
||||||
$: ship.dispatch.setCargo(space);
|
$: api?.dispatch?.setCargo?.(space);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
import { createSlice } from "@reduxjs/toolkit";
|
|
||||||
import { reqs } from "../reqs";
|
|
||||||
|
|
||||||
const initialState = { space: 0, reqs };
|
|
||||||
|
|
||||||
const cargo = createSlice({
|
|
||||||
name: "cargo",
|
|
||||||
initialState,
|
|
||||||
reducers: {
|
|
||||||
setCargo: (state, action) => {
|
|
||||||
state.space = action.payload;
|
|
||||||
state.reqs = { cost: 0, mass: action.payload };
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
export const { actions, reducer } = cargo;
|
|
@ -3,8 +3,6 @@ import ship from "./ship";
|
|||||||
|
|
||||||
test("kicking the tires", () => {
|
test("kicking the tires", () => {
|
||||||
const store = ship.createStore();
|
const store = ship.createStore();
|
||||||
console.log(store.getState());
|
|
||||||
console.log(store.getState.getStreamlining());
|
|
||||||
store.dispatch.setFtlType("standard");
|
store.dispatch.setFtlType("standard");
|
||||||
|
|
||||||
expect(store.getState().propulsion.ftl.reqs.mass).toEqual(1);
|
expect(store.getState().propulsion.ftl.reqs.mass).toEqual(1);
|
||||||
@ -29,4 +27,13 @@ test("kicking the tires", () => {
|
|||||||
|
|
||||||
expect(store.getState.getStreamlining()).toBe("partial");
|
expect(store.getState.getStreamlining()).toBe("partial");
|
||||||
expect(store.selectors.getStreamlining(store.getState())).toBe("partial");
|
expect(store.selectors.getStreamlining(store.getState())).toBe("partial");
|
||||||
|
|
||||||
|
store.dispatch.setCargo(3);
|
||||||
|
expect(store.getState().structure.cargo).toEqual({
|
||||||
|
space: 3,
|
||||||
|
reqs: {
|
||||||
|
mass: 3,
|
||||||
|
cost: 0,
|
||||||
|
},
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -9,6 +9,7 @@ import { calcDriveReqs } from "$lib/shipDux/engine";
|
|||||||
import { carrierDux } from "./ship/carrier";
|
import { carrierDux } from "./ship/carrier";
|
||||||
import { streamliningDux as streamlining } from "./ship/structure/streamlining";
|
import { streamliningDux as streamlining } from "./ship/structure/streamlining";
|
||||||
import { calcStreamliningReqs } from "./ship/structure/rules";
|
import { calcStreamliningReqs } from "./ship/structure/rules";
|
||||||
|
import { cargoDux } from "./ship/structure/cargo";
|
||||||
|
|
||||||
const shipDux = new Updux({
|
const shipDux = new Updux({
|
||||||
subduxes: {
|
subduxes: {
|
||||||
@ -17,6 +18,7 @@ const shipDux = new Updux({
|
|||||||
initialState: {},
|
initialState: {},
|
||||||
subduxes: {
|
subduxes: {
|
||||||
streamlining,
|
streamlining,
|
||||||
|
cargo: cargoDux,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
propulsion: new Updux({
|
propulsion: new Updux({
|
||||||
@ -75,7 +77,6 @@ shipDux.addReaction((api) =>
|
|||||||
api.selectors.getShipMass,
|
api.selectors.getShipMass,
|
||||||
api.selectors.getStreamlining,
|
api.selectors.getStreamlining,
|
||||||
(mass, type) => {
|
(mass, type) => {
|
||||||
console.log("AH!", mass, type);
|
|
||||||
api.dispatch.setStreamliningReqs(calcStreamliningReqs(type, mass));
|
api.dispatch.setStreamliningReqs(calcStreamliningReqs(type, mass));
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
25
src/lib/store/ship/structure/cargo.ts
Normal file
25
src/lib/store/ship/structure/cargo.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import { reqs } from "$lib/shipDux/reqs";
|
||||||
|
import Updux, { createPayloadAction } from "updux";
|
||||||
|
import u from "@yanick/updeep-remeda";
|
||||||
|
|
||||||
|
const initialState = { space: 0, reqs };
|
||||||
|
|
||||||
|
const setCargo = createPayloadAction<number>("setCargo");
|
||||||
|
|
||||||
|
export const cargoDux = new Updux({
|
||||||
|
initialState,
|
||||||
|
actions: { setCargo },
|
||||||
|
reducers: {
|
||||||
|
setCargo: (state, action) => {
|
||||||
|
state.space = action.payload;
|
||||||
|
state.reqs = { cost: 0, mass: action.payload };
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
cargoDux.addMutation(setCargo, (space) =>
|
||||||
|
u({
|
||||||
|
space,
|
||||||
|
reqs: { cost: 0, mass: space },
|
||||||
|
})
|
||||||
|
);
|
Loading…
Reference in New Issue
Block a user