train_cmd.c
changeset 3322 fa5d46929db9
parent 3315 1f65f8260092
child 3334 b72ac8637a30
equal deleted inserted replaced
3321:c5f2375046bc 3322:fa5d46929db9
  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;