mirror of
https://github.com/osukey/osukey.git
synced 2025-07-03 01:09:57 +09:00
Add hiding support for beatmap difficulties
This commit is contained in:
@ -107,12 +107,39 @@ namespace osu.Game.Screens.Select
|
||||
});
|
||||
}
|
||||
|
||||
public void RemoveBeatmap(BeatmapSetInfo beatmapSet)
|
||||
public void RemoveBeatmap(BeatmapSetInfo beatmapSet) => removeGroup(groups.Find(b => b.BeatmapSet.ID == beatmapSet.ID));
|
||||
|
||||
internal void UpdateBeatmap(BeatmapInfo beatmap)
|
||||
{
|
||||
Schedule(delegate
|
||||
// todo: this method should not run more than once for the same BeatmapSetInfo.
|
||||
var set = manager.Refresh(beatmap.BeatmapSet);
|
||||
|
||||
// todo: this method should be smarter as to not recreate panels that haven't changed, etc.
|
||||
var group = groups.Find(b => b.BeatmapSet.ID == set.ID);
|
||||
|
||||
if (group == null)
|
||||
return;
|
||||
|
||||
var newGroup = createGroup(set);
|
||||
|
||||
int i = groups.IndexOf(group);
|
||||
groups.RemoveAt(i);
|
||||
groups.Insert(i, newGroup);
|
||||
|
||||
if (selectedGroup == group && newGroup.BeatmapPanels.Count == 0)
|
||||
selectedGroup = null;
|
||||
|
||||
Filter(null, false);
|
||||
|
||||
//check if we can/need to maintain our current selection.
|
||||
if (selectedGroup == group && newGroup.BeatmapPanels.Count > 0)
|
||||
{
|
||||
removeGroup(groups.Find(b => b.BeatmapSet.ID == beatmapSet.ID));
|
||||
});
|
||||
var newSelection =
|
||||
newGroup.BeatmapPanels.Find(p => p.Beatmap.ID == selectedPanel?.Beatmap.ID) ??
|
||||
newGroup.BeatmapPanels[Math.Min(newGroup.BeatmapPanels.Count - 1, group.BeatmapPanels.IndexOf(selectedPanel))];
|
||||
|
||||
selectGroup(newGroup, newSelection);
|
||||
}
|
||||
}
|
||||
|
||||
public void SelectBeatmap(BeatmapInfo beatmap, bool animated = true)
|
||||
@ -142,6 +169,8 @@ namespace osu.Game.Screens.Select
|
||||
|
||||
public Action<BeatmapSetInfo> DeleteRequested;
|
||||
|
||||
public Action<BeatmapSetInfo> RestoreRequested;
|
||||
|
||||
public Action<BeatmapInfo> DeleteDifficultyRequested;
|
||||
|
||||
public void SelectNext(int direction = 1, bool skipDifficulties = true)
|
||||
@ -310,6 +339,7 @@ namespace osu.Game.Screens.Select
|
||||
SelectionChanged = (g, p) => selectGroup(g, p),
|
||||
StartRequested = b => StartRequested?.Invoke(),
|
||||
DeleteRequested = b => DeleteRequested?.Invoke(b),
|
||||
RestoreHiddenRequested = s => RestoreRequested?.Invoke(s),
|
||||
DeleteDifficultyRequested = b => DeleteDifficultyRequested?.Invoke(b),
|
||||
State = BeatmapGroupState.Collapsed
|
||||
};
|
||||
|
Reference in New Issue
Block a user