mirror of
https://github.com/ppy/osu.git
synced 2025-01-13 15:43:22 +08:00
Add sorting by Length
This commit is contained in:
parent
65c8249c94
commit
b4ef64fa61
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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; }
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user