private void OnRandomSelected(RandomSelectType randomSelectType) { if (RandomSelected != null) { RandomSelected.Invoke(randomSelectType); } }
public void RandomSelect(RandomSelectType randomSelectType) { if (CurrentMode == Mode.SongInfo) { var songs = randomSelectType == RandomSelectType.InAll ? SongInformation.All : CurrentRoot.Children.Where(s => s.IsPPDSong).ToArray(); var linkAll = Filter.GetFiltered(songs).Select(info => new SelectedSongInfo(info)).ToArray(); if (linkAll.Length == 0) { return; } var rand = new Random(); SongInformation target = linkAll[rand.Next(linkAll.Length)].SongInfo; CurrentRoot = target.Parent; GenerateSelectSongs(); CurrentSelect.Index = songSelects.FindIndex(link => link.SongInfo == target); OnDirectoryChanged(); OnSongChanged(SongChangeMode.Reset); } else if (CurrentMode == Mode.LogicFolder) { var links = randomSelectType == RandomSelectType.InAll ? LogicFolderInfomation.All : CurrentLogicRoot.Children.Where(l => !l.IsFolder).ToArray(); var linkAll = links.Select(info => new LogicSelectedSongInfo(info)).ToArray(); if (linkAll.Length == 0) { return; } var rand = new Random(); LogicFolderInfomation target = linkAll[rand.Next(linkAll.Length)].LogicFolderInfomation; CurrentLogicRoot = target.Parent; GenerateSelectLogics(); logicSelect.Index = logicSelects.FindIndex(link => link.LogicFolderInfomation == target); OnDirectoryChanged(); OnSongChanged(SongChangeMode.Reset); } else if (CurrentMode == Mode.ActiveScore) { var rand = new Random(); activeScoreSelect.Index = rand.Next(activeScores.Length); OnDirectoryChanged(); OnSongChanged(SongChangeMode.Reset); } else if (CurrentMode == Mode.List) { var rand = new Random(); switch (randomSelectType) { case RandomSelectType.InCurrentFolder: listInfoSelect.Index = rand.Next(listInfoSelects.Length); OnSongChanged(SongChangeMode.Reset); break; case RandomSelectType.InAll: var listScores = listInfos.SelectMany(l => l.Scores).ToArray(); var target = listScores[rand.Next(listScores.Length)]; currentList = target.Parent; listInfoSelect.Index = currentList.Scores.FindIndex(s => s == target); GenerateSelectLists(); OnDirectoryChanged(); OnSongChanged(SongChangeMode.Reset); break; } } }
void lm_RandomSelected(RandomSelectType randomSelectType) { ssm.RandomSelect(randomSelectType); }