equal
deleted
inserted
replaced
1480 static void DisableTrainCrossing(TileIndex tile) |
1480 static void DisableTrainCrossing(TileIndex tile) |
1481 { |
1481 { |
1482 if (IsTileType(tile, MP_STREET) && |
1482 if (IsTileType(tile, MP_STREET) && |
1483 IsLevelCrossing(tile) && |
1483 IsLevelCrossing(tile) && |
1484 VehicleFromPos(tile, &tile, TestTrainOnCrossing) == NULL && // empty? |
1484 VehicleFromPos(tile, &tile, TestTrainOnCrossing) == NULL && // empty? |
1485 GB(_m[tile].m5, 2, 1) != 0) { // Lights on? |
1485 IsCrossingBarred(tile)) { |
1486 SB(_m[tile].m5, 2, 1, 0); // Switch lights off |
1486 UnbarCrossing(tile); |
1487 MarkTileDirtyByTile(tile); |
1487 MarkTileDirtyByTile(tile); |
1488 } |
1488 } |
1489 } |
1489 } |
1490 |
1490 |
1491 /** |
1491 /** |
3204 return false; |
3204 return false; |
3205 } |
3205 } |
3206 if ((ts &= (ts >> 16)) == 0) { |
3206 if ((ts &= (ts >> 16)) == 0) { |
3207 // make a rail/road crossing red |
3207 // make a rail/road crossing red |
3208 if (IsTileType(tile, MP_STREET) && IsLevelCrossing(tile)) { |
3208 if (IsTileType(tile, MP_STREET) && IsLevelCrossing(tile)) { |
3209 if (GB(_m[tile].m5, 2, 1) == 0) { |
3209 if (!IsCrossingBarred(tile)) { |
3210 SB(_m[tile].m5, 2, 1, 1); |
3210 BarCrossing(tile); |
3211 SndPlayVehicleFx(SND_0E_LEVEL_CROSSING, v); |
3211 SndPlayVehicleFx(SND_0E_LEVEL_CROSSING, v); |
3212 MarkTileDirtyByTile(tile); |
3212 MarkTileDirtyByTile(tile); |
3213 } |
3213 } |
3214 } |
3214 } |
3215 return true; |
3215 return true; |