(svn r7385) -Fix: FS#418 Deleting Train in depot with autoreplace failes

This turned out to be due to continue to drag the old vehicle, that autoreplace sold
  This could also be triggered if more than one player used the same company
  Now deleting a vehicle will remove all depot highlights of that vehicle
This commit is contained in:
bjarni 2006-12-05 22:40:42 +00:00
parent a9ea304121
commit 686a0d7750
3 changed files with 22 additions and 0 deletions

View File

@ -107,4 +107,6 @@ Depot *GetDepotByTile(TileIndex tile);
void InitializeDepots(void);
Depot *AllocateDepot(void);
void DeleteDepotHighlightOfVehicle(const Vehicle *v);
#endif /* DEPOT_H */

View File

@ -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();
}
}
}

View File

@ -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);