1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-13 12:53:11 +08:00

Add sorting by Length

This commit is contained in:
iiSaLMaN 2019-07-07 18:26:56 +03:00
parent 65c8249c94
commit b4ef64fa61
4 changed files with 17 additions and 0 deletions

View File

@ -307,6 +307,11 @@ namespace osu.Game.Beatmaps
// TODO: this should be done in a better place once we actually need to dynamically update it.
beatmap.BeatmapInfo.StarDifficulty = ruleset?.CreateInstance().CreateDifficultyCalculator(new DummyConversionBeatmap(beatmap)).Calculate().StarRating ?? 0;
beatmap.BeatmapInfo.OnlineInfo = new BeatmapOnlineInfo
{
Length = beatmap.CalculateLength(),
};
beatmapInfos.Add(beatmap.BeatmapInfo);
}
}

View File

@ -37,6 +37,8 @@ namespace osu.Game.Beatmaps
public double MaxStarDifficulty => Beatmaps?.Max(b => b.StarDifficulty) ?? 0;
public double MaxLength => Beatmaps?.Max(b => b.OnlineInfo.Length) ?? 0;
[NotMapped]
public bool DeletePending { get; set; }

View File

@ -47,6 +47,13 @@ namespace osu.Game.Screens.Select.Carousel
if (ruleset != 0) return ruleset;
return Beatmap.StarDifficulty.CompareTo(otherBeatmap.Beatmap.StarDifficulty);
case SortMode.Length:
// Length comparing must be in seconds
if (TimeSpan.FromMilliseconds(Beatmap.OnlineInfo.Length).Seconds != TimeSpan.FromMilliseconds(otherBeatmap.Beatmap.OnlineInfo.Length).Seconds)
return Beatmap.OnlineInfo.Length.CompareTo(otherBeatmap.Beatmap.OnlineInfo.Length);
goto case SortMode.Difficulty;
}
}

View File

@ -51,6 +51,9 @@ namespace osu.Game.Screens.Select.Carousel
case SortMode.BPM:
return BeatmapSet.OnlineInfo.BPM.CompareTo(otherSet.BeatmapSet.OnlineInfo.BPM);
case SortMode.Length:
return BeatmapSet.MaxLength.CompareTo(otherSet.BeatmapSet.MaxLength);
case SortMode.Difficulty:
return BeatmapSet.MaxStarDifficulty.CompareTo(otherSet.BeatmapSet.MaxStarDifficulty);
}