mirror of https://github.com/OpenTTD/OpenTTD
(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.
parent
12770adba6
commit
7456c6e6ed
17
rail_cmd.c
17
rail_cmd.c
|
@ -1737,26 +1737,31 @@ static void TileLoop_Track(TileIndex tile)
|
|||
{
|
||||
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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue