Beispiel #1
0
        public void SelectNextRandom()
        {
            randomSelectedBeatmaps.Push(new KeyValuePair <BeatmapGroup, BeatmapPanel>(selectedGroup, selectedGroup.SelectedPanel));

            var visibleGroups = getVisibleGroups();

            if (!visibleGroups.Any())
            {
                return;
            }

            BeatmapGroup group;

            if (randomType == SelectionRandomType.RandomPermutation)
            {
                var notSeenGroups = visibleGroups.Except(seenGroups);
                if (!notSeenGroups.Any())
                {
                    seenGroups.Clear();
                    notSeenGroups = visibleGroups;
                }

                group = notSeenGroups.ElementAt(RNG.Next(notSeenGroups.Count()));
                seenGroups.Add(group);
            }
            else
            {
                group = visibleGroups.ElementAt(RNG.Next(visibleGroups.Count()));
            }

            BeatmapPanel panel = group.BeatmapPanels[RNG.Next(group.BeatmapPanels.Count)];

            selectGroup(group, panel);
        }
Beispiel #2
0
        public void SelectNext(int direction = 1, bool skipDifficulties = true)
        {
            if (groups.Count == 0)
            {
                selectedGroup = null;
                selectedPanel = null;
                return;
            }

            if (!skipDifficulties && selectedGroup != null)
            {
                int i = selectedGroup.BeatmapPanels.IndexOf(selectedPanel) + direction;

                if (i >= 0 && i < selectedGroup.BeatmapPanels.Count)
                {
                    //changing difficulty panel, not set.
                    selectGroup(selectedGroup, selectedGroup.BeatmapPanels[i]);
                    return;
                }
            }

            int startIndex = groups.IndexOf(selectedGroup);
            int index      = startIndex;

            do
            {
                index = (index + direction + groups.Count) % groups.Count;
                if (groups[index].State != BeatmapGroupState.Hidden)
                {
                    SelectBeatmap(groups[index].BeatmapPanels.First().Beatmap);
                    return;
                }
            } while (index != startIndex);
        }
Beispiel #3
0
 public void SelectRandom()
 {
     if (groups.Count < 1)
         return;
     BeatmapGroup group = groups[RNG.Next(groups.Count)];
     BeatmapPanel panel = group?.BeatmapPanels.First();
     if (panel == null)
         return;
     SelectGroup(group, panel);
 }
Beispiel #4
0
        public void SelectGroup(BeatmapGroup group, BeatmapPanel panel, bool animated = true)
        {
            if (SelectedGroup != null && SelectedGroup != group && SelectedGroup.State != BeatmapGroupState.Hidden)
                SelectedGroup.State = BeatmapGroupState.Collapsed;

            SelectedGroup = group;
            panel.State = PanelSelectedState.Selected;
            SelectedPanel = panel;

            float selectedY = computeYPositions(animated);
            ScrollTo(selectedY, animated);
        }
Beispiel #5
0
        public void SelectRandom()
        {
            List <BeatmapGroup> visibleGroups = groups.Where(selectGroup => selectGroup.State != BeatmapGroupState.Hidden).ToList();

            if (visibleGroups.Count < 1)
            {
                return;
            }

            BeatmapGroup group = visibleGroups[RNG.Next(visibleGroups.Count)];
            BeatmapPanel panel = group.BeatmapPanels[RNG.Next(group.BeatmapPanels.Count)];

            selectGroup(group, panel);
        }
Beispiel #6
0
        public void SelectGroup(BeatmapGroup group, BeatmapPanel panel)
        {
            if (SelectedGroup != null && SelectedGroup != group)
            {
                SelectedGroup.State = BeatmapGroupState.Collapsed;
            }

            SelectedGroup = group;
            panel.State   = PanelSelectedState.Selected;
            SelectedPanel = panel;

            float selectedY = computeYPositions();

            ScrollTo(selectedY);
        }
Beispiel #7
0
        private void selectGroup(BeatmapGroup group, BeatmapPanel panel, bool animated = true)
        {
            Trace.Assert(group.BeatmapPanels.Contains(panel), @"Selected panel must be in provided group");

            if (SelectedGroup != null && SelectedGroup != group && SelectedGroup.State != BeatmapGroupState.Hidden)
            {
                SelectedGroup.State = BeatmapGroupState.Collapsed;
            }

            group.State   = BeatmapGroupState.Expanded;
            SelectedGroup = group;
            panel.State   = PanelSelectedState.Selected;
            SelectedPanel = panel;

            float selectedY = computeYPositions(animated);

            ScrollTo(selectedY, animated);
        }
Beispiel #8
0
        public void SelectRandom()
        {
            List <BeatmapGroup> visibleGroups = this.groups.Where((BeatmapGroup selectGroup) => selectGroup.State != BeatmapGroupState.Hidden).ToList();

            if (visibleGroups.Count < 1)
            {
                return;
            }
            BeatmapGroup group = visibleGroups[RNG.Next(visibleGroups.Count)];
            BeatmapPanel panel = group?.BeatmapPanels.First();

            if (panel == null)
            {
                return;
            }

            selectGroup(group, panel);
        }
Beispiel #9
0
        public void SelectNext(int direction = 1, bool skipDifficulties = true)
        {
            if (groups.All(g => g.State == BeatmapGroupState.Hidden))
            {
                selectedGroup = null;
                selectedPanel = null;
                SelectionChanged?.Invoke(null);
                return;
            }

            if (!skipDifficulties && selectedGroup != null)
            {
                int i = selectedGroup.BeatmapPanels.IndexOf(selectedPanel) + direction;

                if (i >= 0 && i < selectedGroup.BeatmapPanels.Count)
                {
                    //changing difficulty panel, not set.
                    selectGroup(selectedGroup, selectedGroup.BeatmapPanels[i]);
                    return;
                }
            }

            int startIndex = Math.Max(0, groups.IndexOf(selectedGroup));
            int index      = startIndex;

            do
            {
                index = (index + direction + groups.Count) % groups.Count;
                if (groups[index].State != BeatmapGroupState.Hidden)
                {
                    if (skipDifficulties)
                    {
                        SelectBeatmap(groups[index].SelectedPanel != null ? groups[index].SelectedPanel.Beatmap : groups[index].BeatmapPanels.First().Beatmap);
                    }
                    else
                    {
                        SelectBeatmap(direction == 1 ? groups[index].BeatmapPanels.First().Beatmap : groups[index].BeatmapPanels.Last().Beatmap);
                    }

                    return;
                }
            } while (index != startIndex);
        }
Beispiel #10
0
        public void SelectGroup(BeatmapGroup group, BeatmapPanel panel)
        {
            if (SelectedGroup != null && SelectedGroup != group)
            {
                SelectedGroup.State = BeatmapGroupState.Collapsed;
                foreach (BeatmapPanel p in group.BeatmapPanels)
                {
                    p.MoveToY(group.Header.Position.Y);
                }
            }

            SelectedGroup = group;
            panel.State   = PanelSelectedState.Selected;
            SelectedPanel = panel;

            float selectedY = computeYPositions();

            ScrollTo(selectedY);
        }
Beispiel #11
0
        private void selectGroup(BeatmapGroup group, BeatmapPanel panel = null, bool animated = true)
        {
            try
            {
                if (panel == null)
                {
                    panel = group.BeatmapPanels.First();
                }

                if (selectedPanel == panel)
                {
                    return;
                }

                Trace.Assert(group.BeatmapPanels.Contains(panel), @"Selected panel must be in provided group");

                if (selectedGroup != null && selectedGroup != group && selectedGroup.State != BeatmapGroupState.Hidden)
                {
                    selectedGroup.State = BeatmapGroupState.Collapsed;
                }

                group.State         = BeatmapGroupState.Expanded;
                group.SelectedPanel = panel;

                panel.State = PanelSelectedState.Selected;

                if (selectedPanel == panel)
                {
                    return;
                }

                selectedPanel = panel;
                selectedGroup = group;

                SelectionChanged?.Invoke(panel.Beatmap);
            }
            finally
            {
                float selectedY = computeYPositions(animated);
                ScrollTo(selectedY, animated);
            }
        }
Beispiel #12
0
 private void selectNullBeatmap()
 {
     selectedGroup = null;
     selectedPanel = null;
     SelectionChanged?.Invoke(null);
 }