private DiskAndTrack GenerateConcreteDiskAndTrack(byte diskNumber, byte trackNumber) { DiskAndTrack result = null; if (VolumeInfo.GetVolumes()[0].IsFormatted) { string rootDirectory = VolumeInfo.GetVolumes()[0].RootDirectory; var folder = rootDirectory + "\\" + diskNumber; var files = Directory.EnumerateFiles(folder); byte trackIndex = 1; foreach (var fileObj in files) { if (((string)fileObj).EndsWith(".mp3") /* || file.EndsWith(".m4a")*/) { if (trackIndex == trackNumber) { result = new DiskAndTrack(diskNumber, trackIndex, ((string)fileObj)); break; } trackIndex++; } } files = null; } else { Logger.Warning("Storage is not formatted. " + "Format on PC with FAT32/FAT16 first!"); } return(result); }
private DiskAndTrack GenerateRandomDiskAndTrackNumbers(byte diskNumber) { var diskAndTrack = new DiskAndTrack(); Random r = new Random(); byte filesOnDisk; if (IsRandom) { //do //{ // diskAndTrack.diskNumber = (byte)(r.Next(6) + 1); // filesOnDisk = (byte)StorageInfo[diskAndTrack.diskNumber]; //} while (filesOnDisk == 0); //diskAndTrack.trackNumber = (byte)(r.Next(filesOnDisk) + 1); byte randomNumber = (byte)(r.Next(totalTracksCount) + 1); for (byte i = 1; i <= 6; i++) { var currentDiskTracksCount = (byte)StorageInfo[i]; if (randomNumber > currentDiskTracksCount) { randomNumber -= currentDiskTracksCount; } else { diskAndTrack.diskNumber = i; diskAndTrack.trackNumber = randomNumber; break; } } } else { do { diskAndTrack.diskNumber = diskNumber; filesOnDisk = (byte)StorageInfo[diskAndTrack.diskNumber]; } while (filesOnDisk == 0); diskAndTrack.trackNumber = (byte)(r.Next(filesOnDisk) + 1); } return(diskAndTrack); }