aotds-docks/src/lib/shipDux/engine.ts

42 lines
953 B
TypeScript
Raw Normal View History

2023-03-22 20:18:10 +00:00
import { createSlice, type PayloadAction } from "@reduxjs/toolkit";
2023-03-03 18:23:13 +00:00
import u from "updeep";
2023-03-22 20:18:10 +00:00
import { type Reqs, reqs } from "./reqs.js";
2023-03-03 18:23:13 +00:00
const initialState = {
2023-03-22 20:18:10 +00:00
rating: 1,
advanced: false,
reqs,
2023-03-03 18:23:13 +00:00
};
const engine = createSlice({
2023-03-22 20:18:10 +00:00
name: "engine",
initialState,
reducers: {
setDriveRating(state, action: PayloadAction<number>) {
state.rating = action.payload;
},
setDriveAdvanced(state, action: PayloadAction<boolean>) {
state.advanced = action.payload;
},
setDriverReqs(state, action: PayloadAction<Reqs>) {
state.reqs = action.payload;
},
2023-03-03 18:23:13 +00:00
},
});
2023-03-20 15:59:50 +00:00
export const { actions, reducer } = engine;
2023-03-03 18:23:13 +00:00
export function calcDriveReqs(
2023-03-22 20:18:10 +00:00
shipMass: number,
rating: number,
advanced = false
2023-03-03 18:23:13 +00:00
) {
2023-03-22 20:18:10 +00:00
const mass = Math.ceil(rating * 0.05 * shipMass);
const cost = mass * (advanced ? 3 : 2);
2023-03-03 18:23:13 +00:00
2023-03-22 20:18:10 +00:00
return { mass, cost };
2023-03-03 18:23:13 +00:00
}
export default engine;