diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 3deb48c8c9..b996a6910e 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -2539,6 +2539,13 @@ CommandCost CmdBuildAirport(TileIndex tile, DoCommandFlag flags, uint32 p1, uint if (flags & DC_EXEC) { if (action == AIRPORT_UPGRADE) { /* delete old airport if upgrading */ + + for (uint i = 0; i < st->airport.GetNumHangars(); ++i) { + DeleteWindowById( + WC_VEHICLE_DEPOT, st->airport.GetHangarTile(i) + ); + } + const AirportSpec *old_as = st->airport.GetSpec(); AirportTileTableIterator old_iter(old_as->table[st->airport.layout], st->airport.tile); uint old_dist; @@ -2558,12 +2565,6 @@ CommandCost CmdBuildAirport(TileIndex tile, DoCommandFlag flags, uint32 p1, uint DeleteNewGRFInspectWindow(GSF_AIRPORTTILES, tile_cur); } - for (uint i = 0; i < st->airport.GetNumHangars(); ++i) { - DeleteWindowById( - WC_VEHICLE_DEPOT, st->airport.GetHangarTile(i) - ); - } - st->rect.AfterRemoveRect(st, st->airport); st->airport.Clear(); } @@ -2631,6 +2632,12 @@ static CommandCost RemoveAirport(TileIndex tile, DoCommandFlag flags) if (cost.Failed()) return cost; if (flags & DC_EXEC) { + for (uint i = 0; i < st->airport.GetNumHangars(); ++i) { + DeleteWindowById( + WC_VEHICLE_DEPOT, st->airport.GetHangarTile(i) + ); + } + ZoningMarkDirtyStationCoverageArea(st); const AirportSpec *as = st->airport.GetSpec(); /* The noise level is the noise from the airport and reduce it to account for the distance to the town center. @@ -2651,12 +2658,6 @@ static CommandCost RemoveAirport(TileIndex tile, DoCommandFlag flags) /* Clear the persistent storage. */ delete st->airport.psa; - for (uint i = 0; i < st->airport.GetNumHangars(); ++i) { - DeleteWindowById( - WC_VEHICLE_DEPOT, st->airport.GetHangarTile(i) - ); - } - st->rect.AfterRemoveRect(st, st->airport); st->airport.Clear();