mirror of
https://github.com/ppy/osu.git
synced 2025-02-21 19:32:55 +08:00
Fix performance issues with song select
This commit is contained in:
parent
d986d66c2f
commit
5e9495d21d
@ -18,6 +18,8 @@ using OpenTK;
|
|||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
using osu.Framework.Graphics.Textures;
|
using osu.Framework.Graphics.Textures;
|
||||||
using osu.Framework.Graphics.UserInterface;
|
using osu.Framework.Graphics.UserInterface;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace osu.Game.GameModes.Play
|
namespace osu.Game.GameModes.Play
|
||||||
{
|
{
|
||||||
@ -54,16 +56,29 @@ namespace osu.Game.GameModes.Play
|
|||||||
selectedBeatmap = beatmap;
|
selectedBeatmap = beatmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Stopwatch watch = new Stopwatch();
|
||||||
|
|
||||||
private void addBeatmapSet(BeatmapSetInfo beatmapSet)
|
private void addBeatmapSet(BeatmapSetInfo beatmapSet)
|
||||||
{
|
{
|
||||||
|
watch.Reset();
|
||||||
|
watch.Start();
|
||||||
beatmapSet = beatmaps.GetWithChildren<BeatmapSetInfo>(beatmapSet.BeatmapSetID);
|
beatmapSet = beatmaps.GetWithChildren<BeatmapSetInfo>(beatmapSet.BeatmapSetID);
|
||||||
beatmapSet.Beatmaps.ForEach(b => beatmaps.GetChildren(b));
|
beatmapSet.Beatmaps.ForEach(b => beatmaps.GetChildren(b));
|
||||||
beatmapSet.Beatmaps = beatmapSet.Beatmaps.OrderBy(b => b.BaseDifficulty.OverallDifficulty)
|
beatmapSet.Beatmaps = beatmapSet.Beatmaps.OrderBy(b => b.BaseDifficulty.OverallDifficulty)
|
||||||
.ToList();
|
.ToList();
|
||||||
var group = new BeatmapGroup(beatmapSet);
|
Scheduler.Add(() =>
|
||||||
group.SetSelected += selectBeatmapSet;
|
{
|
||||||
group.BeatmapSelected += selectBeatmap;
|
var group = new BeatmapGroup(beatmapSet);
|
||||||
setList.Add(group);
|
group.SetSelected += selectBeatmapSet;
|
||||||
|
group.BeatmapSelected += selectBeatmap;
|
||||||
|
setList.Add(group);
|
||||||
|
if (setList.Children.Count() == 1)
|
||||||
|
{
|
||||||
|
selectedBeatmapSet = group.BeatmapSet;
|
||||||
|
selectedBeatmap = group.SelectedBeatmap;
|
||||||
|
group.Collapsed = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addBeatmapSets()
|
private void addBeatmapSets()
|
||||||
@ -165,14 +180,7 @@ namespace osu.Game.GameModes.Play
|
|||||||
|
|
||||||
beatmaps = (game as OsuGameBase).Beatmaps;
|
beatmaps = (game as OsuGameBase).Beatmaps;
|
||||||
beatmaps.BeatmapSetAdded += bset => Scheduler.Add(() => addBeatmapSet(bset));
|
beatmaps.BeatmapSetAdded += bset => Scheduler.Add(() => addBeatmapSet(bset));
|
||||||
addBeatmapSets();
|
Task.Factory.StartNew(addBeatmapSets);
|
||||||
var first = setList.Children.FirstOrDefault() as BeatmapGroup;
|
|
||||||
if (first != null)
|
|
||||||
{
|
|
||||||
first.Collapsed = false;
|
|
||||||
selectedBeatmapSet = first.BeatmapSet;
|
|
||||||
selectedBeatmap = first.SelectedBeatmap;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Dispose(bool isDisposing)
|
protected override void Dispose(bool isDisposing)
|
||||||
|
Loading…
Reference in New Issue
Block a user