changeset 11040:d2bb0a7656eb draft

(svn r15380) -Fix (r15190)[FS#2603]: Do not use TileY() on negative TileIndexDiffs. But the test was not needed anyway, as those tiles were already tested in previous iterations.
author frosch <frosch@openttd.org>
date Fri, 06 Feb 2009 20:24:44 +0000
parents 7543e61b0231
children 87ec8ab495b0
files src/town_cmd.cpp
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/town_cmd.cpp
+++ b/src/town_cmd.cpp
@@ -716,7 +716,7 @@
 }
 
 /**
- * Check if a neighboring tile has a road
+ * Check if certain neighboring tiles have a road in a specific direction
  *
  * @param tile curent tile
  * @param dir target direction
@@ -726,6 +726,8 @@
  */
 static bool IsNeighborRoadTile(TileIndex tile, const DiagDirection dir, uint dist_multi)
 {
+	if (!IsValidTile(tile)) return false;
+
 	/* Lookup table for the used diff values */
 	const TileIndexDiff tid_lt[3] = {
 		TileOffsByDiagDir(ChangeDiagDir(dir, DIAGDIRDIFF_90RIGHT)),
@@ -747,7 +749,9 @@
 		if (pos & 2) cur += tid_lt[2];
 
 		cur = (uint)(pos / 4) * cur; // Multiply for the fitting distance
-		if (IsValidTile(tile + TileXY(TileX(cur) / 2, TileY(cur) / 2)) && IsValidTile(tile + cur) && GetTownRoadBits(TILE_ADD(tile, cur)) & DiagDirToRoadBits((pos & 2) ? dir : ReverseDiagDir(dir))) return true;
+
+		if (IsValidTile(tile + cur) &&
+			GetTownRoadBits(TILE_ADD(tile, cur)) & DiagDirToRoadBits((pos & 2) ? dir : ReverseDiagDir(dir))) return true;
 	}
 	return false;
 }