public void Scan(PageItemCollection Items) { ActualIndexes.Clear(); Files.Clear(); for (int i = 0; Items.Count > i; i++) { FileItem fi = Items[i] as FileItem; if (fi != null) { if (fi.Playable && System.IO.File.Exists(fi.File.Path)) { ActualIndexes.Add(i); Files.Add(fi); } } } ShuffledIndexes = Enumerable.Range(0, Files.Count).ToArray(); Random rng = new Random(); int n = Files.Count; while (n > 1) { n--; int k = rng.Next(n + 1); int tmp = ShuffledIndexes[k]; ShuffledIndexes[k] = ShuffledIndexes[n]; ShuffledIndexes[n] = tmp; } Index = -1; }
/// <summary> /// コンストラクタで使用したコレクションのインデックスからファイルアイテムを取得します /// </summary> public FileItem FindItemFromIndex(int Index) { int ind = ActualIndexes[ActualIndexes.IndexOf(Index)]; if (ind > -1) { return(Files[ind]); } else { return(null); } }