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