From 143230d8f25e4793bcb03ccb803fbffb41921a66 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sun, 11 Sep 2022 11:51:32 +0100 Subject: [PATCH] Allow changing road vehicle driving side when all road vehicles in depots --- src/road_cmd.cpp | 16 ++++++++++++++-- src/settings.cpp | 4 ++-- 2 files changed, 16 insertions(+), 4 deletions(-) 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)