|
@@ -529,6 +529,9 @@ namespace SongBrowser
|
|
|
case SongSortMode.Rating:
|
|
|
sortedSongs = SortBeatSaverRating(filteredSongs);
|
|
|
break;
|
|
|
+ case SongSortMode.Heat:
|
|
|
+ sortedSongs = SortBeatSaverHeat(filteredSongs);
|
|
|
+ break;
|
|
|
case SongSortMode.YourPlayCount:
|
|
|
sortedSongs = SortPlayCount(filteredSongs);
|
|
|
break;
|
|
@@ -957,9 +960,9 @@ namespace SongBrowser
|
|
|
/// <returns></returns>
|
|
|
private List<IPreviewBeatmapLevel> SortBeatSaverRating(List<IPreviewBeatmapLevel> levelIds)
|
|
|
{
|
|
|
- Logger.Info("Sorting song list by BeatSaver Rating");
|
|
|
+ Logger.Info("Sorting song list by BeatSaver Rating!");
|
|
|
|
|
|
- // Do not always have data when trying to sort by UpVotes
|
|
|
+ // Do not always have data when trying to sort by rating
|
|
|
if (_levelHashToDownloaderData == null)
|
|
|
{
|
|
|
return levelIds;
|
|
@@ -979,5 +982,35 @@ namespace SongBrowser
|
|
|
})
|
|
|
.ToList();
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Sorting by BeatSaver heat stat.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="levelIds"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ private List<IPreviewBeatmapLevel> SortBeatSaverHeat(List<IPreviewBeatmapLevel> levelIds)
|
|
|
+ {
|
|
|
+ Logger.Info("Sorting song list by BeatSaver Heat!");
|
|
|
+
|
|
|
+ // Do not always have data when trying to sort by heat
|
|
|
+ if (_levelHashToDownloaderData == null)
|
|
|
+ {
|
|
|
+ return levelIds;
|
|
|
+ }
|
|
|
+
|
|
|
+ return levelIds
|
|
|
+ .OrderByDescending(x => {
|
|
|
+ var hash = CustomHelpers.GetSongHash(x.levelID);
|
|
|
+ if (_levelHashToDownloaderData.ContainsKey(hash))
|
|
|
+ {
|
|
|
+ return _levelHashToDownloaderData[hash].Heat;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return int.MinValue;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .ToList();
|
|
|
+ }
|
|
|
}
|
|
|
}
|