public void Sort(FilterControl.SortMode mode) { List <BeatmapGroup> sortedGroups = new List <BeatmapGroup>(groups); switch (mode) { case FilterControl.SortMode.Artist: sortedGroups.Sort((x, y) => string.Compare(x.BeatmapSet.Metadata.Artist, y.BeatmapSet.Metadata.Artist, StringComparison.InvariantCultureIgnoreCase)); break; case FilterControl.SortMode.Title: sortedGroups.Sort((x, y) => string.Compare(x.BeatmapSet.Metadata.Title, y.BeatmapSet.Metadata.Title, StringComparison.InvariantCultureIgnoreCase)); break; case FilterControl.SortMode.Author: sortedGroups.Sort((x, y) => string.Compare(x.BeatmapSet.Metadata.Author, y.BeatmapSet.Metadata.Author, StringComparison.InvariantCultureIgnoreCase)); break; case FilterControl.SortMode.Difficulty: sortedGroups.Sort((x, y) => { float xAverage = 0, yAverage = 0; int counter = 0; foreach (BeatmapInfo set in x.BeatmapSet.Beatmaps) { xAverage += set.StarDifficulty; counter++; } xAverage /= counter; counter = 0; foreach (BeatmapInfo set in y.BeatmapSet.Beatmaps) { yAverage += set.StarDifficulty; counter++; } yAverage /= counter; if (xAverage > yAverage) { return(1); } else { return(-1); } }); break; default: throw new NotImplementedException(); } scrollableContent.Clear(false); panels.Clear(); groups.Clear(); foreach (BeatmapGroup group in sortedGroups) { AddGroup(group); } }
public void Sort(FilterControl.SortMode mode) { switch (mode) { case FilterControl.SortMode.Artist: groups.Sort((x, y) => string.Compare(x.BeatmapSet.Metadata.Artist, y.BeatmapSet.Metadata.Artist)); break; case FilterControl.SortMode.Title: groups.Sort((x, y) => string.Compare(x.BeatmapSet.Metadata.Title, y.BeatmapSet.Metadata.Title)); break; case FilterControl.SortMode.Author: groups.Sort((x, y) => string.Compare(x.BeatmapSet.Metadata.Author, y.BeatmapSet.Metadata.Author)); break; case FilterControl.SortMode.Difficulty: groups.Sort((x, y) => { float xAverage = 0, yAverage = 0; int counter = 0; foreach (BeatmapInfo set in x.BeatmapSet.Beatmaps) { xAverage += set.StarDifficulty; counter++; } xAverage /= counter; counter = 0; foreach (BeatmapInfo set in y.BeatmapSet.Beatmaps) { yAverage += set.StarDifficulty; counter++; } yAverage /= counter; if (xAverage > yAverage) { return(1); } else { return(-1); } }); break; default: throw new NotImplementedException(); } scrollableContent.Clear(false); lifetime.Clear(); foreach (BeatmapGroup group in groups) { group.Header.Depth = -scrollableContent.Children.Count(); scrollableContent.Add(group.Header); foreach (BeatmapPanel panel in group.BeatmapPanels) { panel.Depth = -scrollableContent.Children.Count(); scrollableContent.Add(panel); } } SelectGroup(groups.FirstOrDefault(), groups.First().BeatmapPanels.FirstOrDefault()); }