mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Push full flight information in the event stream.
https://github.com/dcs-liberation/dcs_liberation/issues/2263
This commit is contained in:
parent
289545e777
commit
d578e763c0
@ -6,10 +6,10 @@ import { endCombat, newCombat, updateCombat } from "./combatSlice";
|
|||||||
import { updateControlPoint } from "./controlPointsSlice";
|
import { updateControlPoint } from "./controlPointsSlice";
|
||||||
import {
|
import {
|
||||||
deselectFlight,
|
deselectFlight,
|
||||||
registerFlight,
|
registerFlights,
|
||||||
selectFlight,
|
selectFlight,
|
||||||
unregisterFlight,
|
unregisterFlights,
|
||||||
updateFlight,
|
updateFlights,
|
||||||
updateFlightPositions,
|
updateFlightPositions,
|
||||||
} from "./flightsSlice";
|
} from "./flightsSlice";
|
||||||
import {
|
import {
|
||||||
@ -43,7 +43,7 @@ interface GameUpdateEvents {
|
|||||||
updated_unculled_zones: UnculledZone[];
|
updated_unculled_zones: UnculledZone[];
|
||||||
threat_zones_updated: boolean;
|
threat_zones_updated: boolean;
|
||||||
new_flights: Flight[];
|
new_flights: Flight[];
|
||||||
updated_flights: string[];
|
updated_flights: Flight[];
|
||||||
deleted_flights: string[];
|
deleted_flights: string[];
|
||||||
selected_flight: string | null;
|
selected_flight: string | null;
|
||||||
deselected_flight: boolean;
|
deselected_flight: boolean;
|
||||||
@ -103,19 +103,16 @@ export const handleStreamedEvents = (
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const flight of events.new_flights) {
|
if (events.new_flights.length > 0) {
|
||||||
dispatch(registerFlight(flight));
|
dispatch(registerFlights(events.new_flights));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const id of events.updated_flights) {
|
if (events.updated_flights.length > 0) {
|
||||||
backend.get(`/flights/${id}?with_waypoints=true`).then((response) => {
|
dispatch(updateFlights(events.updated_flights));
|
||||||
const flight = response.data as Flight;
|
|
||||||
dispatch(updateFlight(flight));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const id of events.deleted_flights) {
|
if (events.deleted_flights.length > 0) {
|
||||||
dispatch(unregisterFlight(id));
|
dispatch(unregisterFlights(events.deleted_flights));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (events.deselected_flight) {
|
if (events.deselected_flight) {
|
||||||
|
|||||||
@ -18,20 +18,23 @@ export const flightsSlice = createSlice({
|
|||||||
name: "flights",
|
name: "flights",
|
||||||
initialState,
|
initialState,
|
||||||
reducers: {
|
reducers: {
|
||||||
registerFlight: (state, action: PayloadAction<Flight>) => {
|
registerFlights: (state, action: PayloadAction<Flight[]>) => {
|
||||||
const flight = action.payload;
|
for (const flight of action.payload) {
|
||||||
if (flight.id in state.flights) {
|
if (flight.id in state.flights) {
|
||||||
console.log(`Overriding flight with ID: ${flight.id}`);
|
console.log(`Overriding flight with ID: ${flight.id}`);
|
||||||
|
}
|
||||||
|
state.flights[flight.id] = flight;
|
||||||
}
|
}
|
||||||
state.flights[flight.id] = flight;
|
|
||||||
},
|
},
|
||||||
unregisterFlight: (state, action: PayloadAction<string>) => {
|
unregisterFlights: (state, action: PayloadAction<string[]>) => {
|
||||||
const id = action.payload;
|
for (const id of action.payload) {
|
||||||
delete state.flights[id];
|
delete state.flights[id];
|
||||||
|
}
|
||||||
},
|
},
|
||||||
updateFlight: (state, action: PayloadAction<Flight>) => {
|
updateFlights: (state, action: PayloadAction<Flight[]>) => {
|
||||||
const flight = action.payload;
|
for (const flight of action.payload) {
|
||||||
state.flights[flight.id] = flight;
|
state.flights[flight.id] = flight;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
deselectFlight: (state) => {
|
deselectFlight: (state) => {
|
||||||
state.selected = null;
|
state.selected = null;
|
||||||
@ -67,9 +70,9 @@ export const flightsSlice = createSlice({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const {
|
export const {
|
||||||
registerFlight,
|
registerFlights,
|
||||||
unregisterFlight,
|
unregisterFlights,
|
||||||
updateFlight,
|
updateFlights,
|
||||||
deselectFlight,
|
deselectFlight,
|
||||||
selectFlight,
|
selectFlight,
|
||||||
updateFlightPositions,
|
updateFlightPositions,
|
||||||
|
|||||||
@ -25,7 +25,7 @@ class GameUpdateEventsJs(BaseModel):
|
|||||||
updated_unculled_zones: list[UnculledZoneJs]
|
updated_unculled_zones: list[UnculledZoneJs]
|
||||||
threat_zones_updated: bool
|
threat_zones_updated: bool
|
||||||
new_flights: list[FlightJs]
|
new_flights: list[FlightJs]
|
||||||
updated_flights: set[UUID]
|
updated_flights: list[FlightJs]
|
||||||
deleted_flights: set[UUID]
|
deleted_flights: set[UUID]
|
||||||
selected_flight: UUID | None
|
selected_flight: UUID | None
|
||||||
deselected_flight: bool
|
deselected_flight: bool
|
||||||
@ -71,7 +71,10 @@ class GameUpdateEventsJs(BaseModel):
|
|||||||
new_flights=[
|
new_flights=[
|
||||||
FlightJs.for_flight(f, with_waypoints=True) for f in events.new_flights
|
FlightJs.for_flight(f, with_waypoints=True) for f in events.new_flights
|
||||||
],
|
],
|
||||||
updated_flights=events.updated_flights,
|
updated_flights=[
|
||||||
|
FlightJs.for_flight(f, with_waypoints=True)
|
||||||
|
for f in events.updated_flights
|
||||||
|
],
|
||||||
deleted_flights=events.deleted_flights,
|
deleted_flights=events.deleted_flights,
|
||||||
selected_flight=events.selected_flight,
|
selected_flight=events.selected_flight,
|
||||||
deselected_flight=events.deselected_flight,
|
deselected_flight=events.deselected_flight,
|
||||||
|
|||||||
@ -25,7 +25,7 @@ class GameUpdateEvents:
|
|||||||
unculled_zones_updated: list[Point] = field(default_factory=list)
|
unculled_zones_updated: list[Point] = field(default_factory=list)
|
||||||
threat_zones_updated: bool = False
|
threat_zones_updated: bool = False
|
||||||
new_flights: set[Flight] = field(default_factory=set)
|
new_flights: set[Flight] = field(default_factory=set)
|
||||||
updated_flights: set[UUID] = field(default_factory=set)
|
updated_flights: set[Flight] = field(default_factory=set)
|
||||||
deleted_flights: set[UUID] = field(default_factory=set)
|
deleted_flights: set[UUID] = field(default_factory=set)
|
||||||
selected_flight: UUID | None = None
|
selected_flight: UUID | None = None
|
||||||
deselected_flight: bool = False
|
deselected_flight: bool = False
|
||||||
@ -81,11 +81,11 @@ class GameUpdateEvents:
|
|||||||
return self
|
return self
|
||||||
|
|
||||||
def update_flight(self, flight: Flight) -> GameUpdateEvents:
|
def update_flight(self, flight: Flight) -> GameUpdateEvents:
|
||||||
self.updated_flights.add(flight.id)
|
self.updated_flights.add(flight)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def update_flights_in_package(self, package: Package) -> GameUpdateEvents:
|
def update_flights_in_package(self, package: Package) -> GameUpdateEvents:
|
||||||
self.updated_flights.update({f.id for f in package.flights})
|
self.updated_flights.update({f for f in package.flights})
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def delete_flight(self, flight: Flight) -> GameUpdateEvents:
|
def delete_flight(self, flight: Flight) -> GameUpdateEvents:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user