diff options
-rw-r--r-- | depot.h | 2 | ||||
-rw-r--r-- | depot_gui.c | 18 | ||||
-rw-r--r-- | vehicle.c | 2 |
3 files changed, 22 insertions, 0 deletions
@@ -107,4 +107,6 @@ Depot *GetDepotByTile(TileIndex tile); void InitializeDepots(void); Depot *AllocateDepot(void); +void DeleteDepotHighlightOfVehicle(const Vehicle *v); + #endif /* DEPOT_H */ diff --git a/depot_gui.c b/depot_gui.c index da879bb42..c0ee00ddc 100644 --- a/depot_gui.c +++ b/depot_gui.c @@ -1033,3 +1033,21 @@ void ShowDepotWindow(TileIndex tile, byte type) ResizeDepotButtons(w); } } + +/** Removes the highlight of a vehicle in a depot window + * @param *v Vehicle to remove all highlights from + */ +void DeleteDepotHighlightOfVehicle(const Vehicle *v) +{ + Window* const *wz; + + FOR_ALL_WINDOWS(wz) { + const Window *w = *wz; + if (w->window_class != WC_VEHICLE_DEPOT) continue; + if (w->window_number != v->tile) continue; + if (WP(w, depot_d).sel == v->index) { + WP(w, depot_d).sel = INVALID_VEHICLE; + ResetObjectToPlace(); + } + } +} @@ -566,6 +566,8 @@ void DestroyVehicle(Vehicle *v) InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile); } + DeleteDepotHighlightOfVehicle(v); + UpdateVehiclePosHash(v, INVALID_COORD, 0); v->next_hash = INVALID_VEHICLE; if (v->orders != NULL) DeleteVehicleOrders(v); |