diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp index 2b1b246aa0..305d804532 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -180,14 +180,26 @@ RoadType AllocateRoadType(RoadTypeLabel label, RoadTramType rtt) } /** - * Verify whether a road vehicle is available. - * @return \c true if at least one road vehicle is available, \c false if not + * Verify whether a road vehicle has been built. + * @return \c true if at least one road vehicle has been built, \c false if not */ bool RoadVehiclesAreBuilt() { return !RoadVehicle::Iterate().empty(); } +/** + * Verify whether a road vehicle has been built and is not in a depot. + * @return \c true if at least one road vehicle has been built and is not in a depot, \c false if not + */ +bool RoadVehiclesExistOutsideDepots() +{ + for (const RoadVehicle *rv : RoadVehicle::Iterate()) { + if (rv->IsFrontEngine() && !rv->IsChainInDepot()) return true; + } + return false; +} + static DisallowedRoadDirections GetOneWayRoadTileDisallowedRoadDirections(TileIndex tile) { if (IsNormalRoadTile(tile)) return GetDisallowedRoadDirections(tile); diff --git a/src/settings.cpp b/src/settings.cpp index b32af09e2a..cd9fc24bd6 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -1483,8 +1483,8 @@ static void MaxNoAIsChange(int32 new_value) */ static bool CheckRoadSide(int32 &new_value) { - extern bool RoadVehiclesAreBuilt(); - return (_game_mode == GM_MENU || !RoadVehiclesAreBuilt()); + extern bool RoadVehiclesExistOutsideDepots(); + return (_game_mode == GM_MENU || !RoadVehiclesExistOutsideDepots()); } static void RoadSideChanged(int32 new_value)