MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / TrainApproachingCrossing

Function TrainApproachingCrossing

src/train_cmd.cpp:1732–1749  ·  view source on GitHub ↗

* Finds a vehicle approaching rail-road crossing * @param tile tile to test * @return true if a vehicle is approaching the crossing * @pre tile is a rail-road crossing */

Source from the content-addressed store, hash-verified

1730 * @pre tile is a rail-road crossing
1731 */
1732static bool TrainApproachingCrossing(TileIndex tile)
1733{
1734 assert(IsLevelCrossingTile(tile));
1735
1736 DiagDirection dir = AxisToDiagDir(GetCrossingRailAxis(tile));
1737 TileIndex tile_from = tile + TileOffsByDiagDir(dir);
1738
1739 if (HasVehicleOnTile(tile_from, [&](const Vehicle *v) {
1740 return TrainApproachingCrossingEnum(v, tile);
1741 })) return true;
1742
1743 dir = ReverseDiagDir(dir);
1744 tile_from = tile + TileOffsByDiagDir(dir);
1745
1746 return HasVehicleOnTile(tile_from, [&](const Vehicle *v) {
1747 return TrainApproachingCrossingEnum(v, tile);
1748 });
1749}
1750
1751/**
1752 * Check if a level crossing should be barred.

Callers 1

CheckLevelCrossingFunction · 0.85

Calls 7

IsLevelCrossingTileFunction · 0.85
AxisToDiagDirFunction · 0.85
GetCrossingRailAxisFunction · 0.85
TileOffsByDiagDirFunction · 0.85
HasVehicleOnTileFunction · 0.85
ReverseDiagDirFunction · 0.85

Tested by

no test coverage detected