From 0f336bba57f570fcd179f4bb39cfb4e6108fed67 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Thu, 17 Jun 2021 00:52:53 +0100 Subject: [PATCH] Give bridges over the sea a more generous length limit --- src/road.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/road.cpp b/src/road.cpp index 6fb4f9510b..2824537461 100644 --- a/src/road.cpp +++ b/src/road.cpp @@ -425,13 +425,18 @@ static TileIndex BuildBridge(PathNode *current, TileIndex end_tile = INVALID_TIL if (!build_bridge) { const DiagDirection direction = ReverseDiagDir(GetInclinedSlopeDirection(GetTileSlope(start_tile))); + TileIndex tile = start_tile + TileOffsByDiagDir(direction); + const bool is_over_water = IsValidTile(tile) && IsTileType(tile, MP_WATER) && IsSea(tile); + uint bridge_length = 0; + const uint bridge_length_limit = std::min(_settings_game.construction.max_bridge_length, is_over_water ? 20 : 10); + // We are not building yet, so we still need to find the end_tile. - for (TileIndex tile = start_tile + TileOffsByDiagDir(direction); + for (; IsValidTile(tile) && - (GetTunnelBridgeLength(start_tile, tile) <= std::min(_settings_game.construction.max_bridge_length, (uint16)10)) && + (bridge_length <= bridge_length_limit) && (GetTileZ(start_tile) < (GetTileZ(tile) + _settings_game.construction.max_bridge_height)) && (GetTileZ(tile) <= GetTileZ(start_tile)); - tile += TileOffsByDiagDir(direction)) { + tile += TileOffsByDiagDir(direction), bridge_length++) { auto is_complementary_slope = !IsSteepSlope(GetTileSlope(tile)) &&