예제 #1
0
파일: LeftMenu.cs 프로젝트: KHCmaster/PPD
 private void OnRandomSelected(RandomSelectType randomSelectType)
 {
     if (RandomSelected != null)
     {
         RandomSelected.Invoke(randomSelectType);
     }
 }
예제 #2
0
        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;
                }
            }
        }
예제 #3
0
파일: Menu.cs 프로젝트: KHCmaster/PPD
 void lm_RandomSelected(RandomSelectType randomSelectType)
 {
     ssm.RandomSelect(randomSelectType);
 }