mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Fix combat updates in the front-end.
`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
This commit is contained in:
parent
9823f7b96f
commit
7355162d80
@ -1,4 +1,5 @@
|
||||
import { RootState } from "../app/store";
|
||||
import { gameLoaded, gameUnloaded } from "./actions";
|
||||
import Combat from "./combat";
|
||||
import { PayloadAction, createSlice } from "@reduxjs/toolkit";
|
||||
|
||||
@ -14,27 +15,33 @@ export const combatSlice = createSlice({
|
||||
name: "combat",
|
||||
initialState,
|
||||
reducers: {
|
||||
setCombat: (state, action: PayloadAction<Combat[]>) => {
|
||||
state.combat = {};
|
||||
newCombats: (state, action: PayloadAction<Combat[]>) => {
|
||||
for (const combat of action.payload) {
|
||||
state.combat[combat.id] = combat;
|
||||
}
|
||||
},
|
||||
newCombat: (state, action: PayloadAction<Combat>) => {
|
||||
const combat = action.payload;
|
||||
updateCombats: (state, action: PayloadAction<Combat[]>) => {
|
||||
for (const combat of action.payload) {
|
||||
state.combat[combat.id] = combat;
|
||||
}
|
||||
},
|
||||
updateCombat: (state, action: PayloadAction<Combat>) => {
|
||||
const combat = action.payload;
|
||||
state.combat[combat.id] = combat;
|
||||
endCombats: (state, action: PayloadAction<string[]>) => {
|
||||
for (const cID of action.payload) {
|
||||
delete state.combat[cID];
|
||||
}
|
||||
},
|
||||
endCombat: (state, action: PayloadAction<string>) => {
|
||||
delete state.combat[action.payload];
|
||||
},
|
||||
extraReducers: (builder) => {
|
||||
builder.addCase(gameLoaded, (state, action) => {
|
||||
state.combat = {};
|
||||
});
|
||||
builder.addCase(gameUnloaded, (state) => {
|
||||
state.combat = {};
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
export const { setCombat, newCombat, updateCombat, endCombat } =
|
||||
export const { newCombats, updateCombats, endCombats } =
|
||||
combatSlice.actions;
|
||||
|
||||
export const selectCombat = (state: RootState) => state.combat;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { AppDispatch } from "../app/store";
|
||||
import { gameUnloaded } from "./actions";
|
||||
import Combat from "./combat";
|
||||
import { endCombat, newCombat, updateCombat } from "./combatSlice";
|
||||
import { endCombats, newCombats, updateCombats } from "./combatSlice";
|
||||
import { updateControlPoint } from "./controlPointsSlice";
|
||||
import {
|
||||
deselectFlight,
|
||||
@ -67,16 +67,16 @@ export const handleStreamedEvents = (
|
||||
);
|
||||
}
|
||||
|
||||
for (const combat of events.new_combats) {
|
||||
dispatch(newCombat(combat));
|
||||
if (events.new_combats.length > 0) {
|
||||
dispatch(newCombats(events.new_combats));
|
||||
}
|
||||
|
||||
for (const combat of events.updated_combats) {
|
||||
dispatch(updateCombat(combat));
|
||||
if (events.updated_combats.length > 0) {
|
||||
dispatch(updateCombats(events.updated_combats));
|
||||
}
|
||||
|
||||
for (const id of events.ended_combats) {
|
||||
dispatch(endCombat(id));
|
||||
if (events.ended_combats.length > 0) {
|
||||
dispatch(endCombats(events.ended_combats));
|
||||
}
|
||||
|
||||
if (Object.keys(events.navmesh_updates).length > 0) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user