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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); } }
private void selectNullBeatmap() { selectedGroup = null; selectedPanel = null; SelectionChanged?.Invoke(null); }