Safer level crossings: add setting to improve RV level crossing safety.

This commit is contained in:
Jonathan G Rennison
2017-05-07 19:33:59 +01:00
parent 2ee66e9b24
commit 0acb4fdd2f
17 changed files with 108 additions and 9 deletions

View File

@@ -125,6 +125,18 @@ bool TryReserveRailTrack(TileIndex tile, Track t, bool trigger_stations)
case MP_ROAD:
if (IsLevelCrossing(tile) && !HasCrossingReservation(tile)) {
if (_settings_game.vehicle.safer_crossings) {
if (IsCrossingOccupiedByRoadVehicle(tile)) return false;
if (_settings_game.vehicle.adjacent_crossings) {
const Axis axis = GetCrossingRoadAxis(tile);
for (TileIndex t = tile; IsLevelCrossingTile(t) && GetCrossingRoadAxis(t) == axis; t = TileAddByDiagDir(t, AxisToDiagDir(GetCrossingRoadAxis(t)))) {
if (IsCrossingOccupiedByRoadVehicle(t)) return false;
}
for (TileIndex t = tile; IsLevelCrossingTile(t) && GetCrossingRoadAxis(t) == axis; t = TileAddByDiagDir(t, ReverseDiagDir(AxisToDiagDir(GetCrossingRoadAxis(t))))) {
if (IsCrossingOccupiedByRoadVehicle(t)) return false;
}
}
}
SetCrossingReservation(tile, true);
UpdateLevelCrossing(tile, false);
return true;