Fix laggy animations, incorrect hiding logic.

This commit is contained in:
Dean Herbert
2017-02-02 17:33:39 +09:00
parent c88a2fbf8a
commit aec84ae725
7 changed files with 247 additions and 265 deletions

View File

@ -146,7 +146,7 @@ namespace osu.Game.Screens.Select
Position = wedged_container_start_position,
RelativeSizeAxes = Axes.X,
FilterChanged = filterChanged,
Exit = () => Exit(),
Exit = Exit,
},
beatmapInfoWedge = new BeatmapInfoWedge
{
@ -198,7 +198,6 @@ namespace osu.Game.Screens.Select
filterTask = null;
var search = filter.Search;
BeatmapGroup newSelection = null;
bool changed = false;
foreach (var beatmapGroup in carousel)
{
var set = beatmapGroup.BeatmapSet;
@ -209,24 +208,20 @@ namespace osu.Game.Screens.Select
|| (set.Metadata.TitleUnicode ?? "").IndexOf(search, StringComparison.InvariantCultureIgnoreCase) != -1;
if (match)
{
changed |= beatmapGroup.State != BeatmapGroupState.Hidden;
beatmapGroup.State = BeatmapGroupState.Collapsed;
if (newSelection == null || beatmapGroup.BeatmapSet.OnlineBeatmapSetID == Beatmap.BeatmapSetInfo.OnlineBeatmapSetID)
newSelection = beatmapGroup;
}
else
{
changed |= beatmapGroup.State == BeatmapGroupState.Hidden;
beatmapGroup.State = BeatmapGroupState.Hidden;
}
}
if (newSelection != null)
selectBeatmap(newSelection.BeatmapSet.Beatmaps[0]);
if (changed)
carousel.InvalidateVisible();
carousel.SelectBeatmap(newSelection.BeatmapSet.Beatmaps[0], false);
}, 250);
}
private void onDatabaseOnBeatmapSetAdded(BeatmapSetInfo s)
{
Schedule(() => addBeatmapSet(s, Game, true));
@ -320,11 +315,9 @@ namespace osu.Game.Screens.Select
//todo: change background in selectionChanged instead; support per-difficulty backgrounds.
changeBackground(beatmap);
selectBeatmap(beatmap.BeatmapInfo);
carousel.SelectBeatmap(beatmap.BeatmapInfo);
}
private void selectBeatmap(BeatmapInfo beatmap) => carousel.SelectBeatmap(beatmap);
/// <summary>
/// selection has been changed as the result of interaction with the carousel.
/// </summary>