(svn r21266) -Change: don't receive money for removing the rail of non-rail railstation tiles, i.e. rail station tiles for which the NewGRF has prevented trains to be routed

This commit is contained in:
rubidium 2010-11-20 12:52:06 +00:00
parent d6afbd025c
commit ffa437a6c1

View File

@ -1372,13 +1372,13 @@ restart:
/** /**
* Remove a number of tiles from any rail station within the area. * Remove a number of tiles from any rail station within the area.
* @param ta the area to clear station tile from * @param ta the area to clear station tile from.
* @param affected_stations the stations affected * @param affected_stations the stations affected.
* @param flags the command flags * @param flags the command flags.
* @param removal_cost the cost for removing the tile * @param removal_cost the cost for removing the tile, including the rail.
* @param keep_rail whether to keep the rail of the station * @param keep_rail whether to keep the rail of the station.
* @tparam T the type of station to remove * @tparam T the type of station to remove.
* @return the number of cleared tiles or an error * @return the number of cleared tiles or an error.
*/ */
template <class T> template <class T>
CommandCost RemoveFromRailBaseStation(TileArea ta, SmallVector<T *, 4> &affected_stations, DoCommandFlag flags, Money removal_cost, bool keep_rail) CommandCost RemoveFromRailBaseStation(TileArea ta, SmallVector<T *, 4> &affected_stations, DoCommandFlag flags, Money removal_cost, bool keep_rail)
@ -1455,8 +1455,9 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, SmallVector<T *, 4> &affected
if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(ReverseTrackdir(v->GetVehicleTrackdir())), true); if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(ReverseTrackdir(v->GetVehicleTrackdir())), true);
} }
} }
if (keep_rail) { if (keep_rail || IsStationTileBlocked(tile)) {
/* Don't refund the 'steel' of the track! */ /* Don't refund the 'steel' of the track when we keep the
* rail, or when the tile didn't have any rail at all. */
total_cost.AddCost(-_price[PR_CLEAR_RAIL]); total_cost.AddCost(-_price[PR_CLEAR_RAIL]);
} }
} }