changeset 18000:7a129cd9f0b4 draft

(svn r22809) -Fix [FS#4731]: towns expanding from the "wrong" side of a tunnel or bridge
author rubidium <rubidium@openttd.org>
date Mon, 22 Aug 2011 11:47:15 +0000
parents a3db2ad40080
children 6e430c0b722b
files src/town_cmd.cpp
diffstat 1 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/town_cmd.cpp
+++ b/src/town_cmd.cpp
@@ -1236,9 +1236,14 @@
 			return _grow_town_result;
 		}
 
-		/* Select a random bit from the blockmask, walk a step
-		 * and continue the search from there. */
-		do target_dir = RandomDiagDir(); while (!(cur_rb & DiagDirToRoadBits(target_dir)));
+		if (IsTileType(tile, MP_TUNNELBRIDGE)) {
+			/* Only build in the direction away from the tunnel or bridge. */
+			target_dir = ReverseDiagDir(GetTunnelBridgeDirection(tile));
+		} else {
+			/* Select a random bit from the blockmask, walk a step
+			 * and continue the search from there. */
+			do target_dir = RandomDiagDir(); while (!(cur_rb & DiagDirToRoadBits(target_dir)));
+		}
 		tile = TileAddByDiagDir(tile, target_dir);
 
 		if (IsTileType(tile, MP_ROAD) && !IsRoadDepot(tile) && HasTileRoadType(tile, ROADTYPE_ROAD)) {