Check far side of level crossing when pruning road bits in CleanUpRoadBits
This commit is contained in:
12
src/road.cpp
12
src/road.cpp
@@ -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 */
|
||||
|
Reference in New Issue
Block a user