Пример #1
0
        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);
        }
Пример #2
0
        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);
        }