Check far side of level crossing when pruning road bits in CleanUpRoadBits

pull/91/head
Jonathan G Rennison 5 years ago
parent 546b5248e0
commit 42b6e8b0d8

@ -47,7 +47,7 @@ RoadBits CleanUpRoadBits(const TileIndex tile, RoadBits org_rb)
{
if (!IsValidTile(tile)) return ROAD_NONE;
for (DiagDirection dir = DIAGDIR_BEGIN; dir < DIAGDIR_END; dir++) {
const TileIndex neighbor_tile = TileAddByDiagDir(tile, dir);
TileIndex neighbor_tile = TileAddByDiagDir(tile, dir);
/* Get the Roadbit pointing to the neighbor_tile */
const RoadBits target_rb = DiagDirToRoadBits(dir);
@ -57,6 +57,7 @@ RoadBits CleanUpRoadBits(const TileIndex tile, RoadBits org_rb)
bool connective = false;
const RoadBits mirrored_rb = MirrorRoadBits(target_rb);
test_tile:
if (IsValidTile(neighbor_tile)) {
switch (GetTileType(neighbor_tile)) {
/* Always connective ones */
@ -79,9 +80,14 @@ RoadBits CleanUpRoadBits(const TileIndex tile, RoadBits org_rb)
}
break;
case MP_RAILWAY:
connective = IsPossibleCrossing(neighbor_tile, DiagDirToAxis(dir));
case MP_RAILWAY: {
if (IsPossibleCrossing(neighbor_tile, DiagDirToAxis(dir))) {
/* Check far side of crossing */
neighbor_tile = TileAddByDiagDir(neighbor_tile, dir);
goto test_tile;
}
break;
}
case MP_WATER:
/* Check for real water tile */

Loading…
Cancel
Save