changeset 3562:270c3c68569b draft

(svn r4440) - Fix: Yoyo-effect of rail in desert/snow introduced by r4379. When a special groundtype below the track is encountered in the tileloop, always return even if groundtype hasn't changed.
author Darkvater <Darkvater@openttd.org>
date Sat, 15 Apr 2006 22:16:47 +0000
parents a3e82fe897d1
children b20938a606d7
files rail_cmd.c
diffstat 1 files changed, 11 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/rail_cmd.c
+++ b/rail_cmd.c
@@ -1737,26 +1737,31 @@
 {
 	RailGroundType old_ground = GetRailGroundType(tile);
 	RailGroundType new_ground = old_ground;
+	bool quick_return = false;
 
 	switch (_opt.landscape) {
 		case LT_HILLY:
-			if (GetTileZ(tile) > _opt.snow_line) new_ground = RAIL_GROUND_ICE_DESERT;
+			if (GetTileZ(tile) > _opt.snow_line) {
+				new_ground = RAIL_GROUND_ICE_DESERT;
+				quick_return = true;
+			}
 			break;
 
 		case LT_DESERT:
-			if (GetTropicZone(tile) == TROPICZONE_DESERT) new_ground = RAIL_GROUND_ICE_DESERT;
-			break;
-
-		default:
+			if (GetTropicZone(tile) == TROPICZONE_DESERT) {
+				new_ground = RAIL_GROUND_ICE_DESERT;
+				quick_return = true;
+			}
 			break;
 	}
 
 	if (new_ground != old_ground) {
 		SetRailGroundType(tile, new_ground);
 		MarkTileDirtyByTile(tile);
-		return;
 	}
 
+	if (quick_return) return;
+
 	// Don't continue tile loop for depots
 	if (GetRailTileType(tile) == RAIL_TYPE_DEPOT_WAYPOINT) return;