mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
`setCombat` was never called, so old combats were never cleared on turn end, game load, or unload. https://github.com/dcs-liberation/dcs_liberation/issues/2253
50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
import { RootState } from "../app/store";
|
|
import { gameLoaded, gameUnloaded } from "./actions";
|
|
import Combat from "./combat";
|
|
import { PayloadAction, createSlice } from "@reduxjs/toolkit";
|
|
|
|
interface CombatState {
|
|
combat: { [key: string]: Combat };
|
|
}
|
|
|
|
const initialState: CombatState = {
|
|
combat: {},
|
|
};
|
|
|
|
export const combatSlice = createSlice({
|
|
name: "combat",
|
|
initialState,
|
|
reducers: {
|
|
newCombats: (state, action: PayloadAction<Combat[]>) => {
|
|
for (const combat of action.payload) {
|
|
state.combat[combat.id] = combat;
|
|
}
|
|
},
|
|
updateCombats: (state, action: PayloadAction<Combat[]>) => {
|
|
for (const combat of action.payload) {
|
|
state.combat[combat.id] = combat;
|
|
}
|
|
},
|
|
endCombats: (state, action: PayloadAction<string[]>) => {
|
|
for (const cID of action.payload) {
|
|
delete state.combat[cID];
|
|
}
|
|
},
|
|
},
|
|
extraReducers: (builder) => {
|
|
builder.addCase(gameLoaded, (state, action) => {
|
|
state.combat = {};
|
|
});
|
|
builder.addCase(gameUnloaded, (state) => {
|
|
state.combat = {};
|
|
});
|
|
},
|
|
});
|
|
|
|
export const { newCombats, updateCombats, endCombats } =
|
|
combatSlice.actions;
|
|
|
|
export const selectCombat = (state: RootState) => state.combat;
|
|
|
|
export default combatSlice.reducer;
|