Simplify menu item checks (and add for other items)

This commit is contained in:
Dean Herbert
2020-04-16 12:10:20 +09:00
parent 255ae0ea61
commit c4caf38feb

View File

@ -41,9 +41,6 @@ namespace osu.Game.Screens.Select.Carousel
[Resolved(CanBeNull = true)] [Resolved(CanBeNull = true)]
private BeatmapSetOverlay beatmapOverlay { get; set; } private BeatmapSetOverlay beatmapOverlay { get; set; }
[Resolved(CanBeNull = true)]
private SongSelect songSelect { get; set; }
public DrawableCarouselBeatmap(CarouselBeatmap panel) public DrawableCarouselBeatmap(CarouselBeatmap panel)
: base(panel) : base(panel)
{ {
@ -52,12 +49,13 @@ namespace osu.Game.Screens.Select.Carousel
} }
[BackgroundDependencyLoader(true)] [BackgroundDependencyLoader(true)]
private void load(BeatmapManager manager) private void load(BeatmapManager manager, SongSelect songSelect)
{ {
if (songSelect != null) if (songSelect != null)
{ {
startRequested = b => songSelect.FinaliseSelection(b); startRequested = b => songSelect.FinaliseSelection(b);
editRequested = songSelect.Edit; if (songSelect.AllowEditing)
editRequested = songSelect.Edit;
} }
if (manager != null) if (manager != null)
@ -190,18 +188,19 @@ namespace osu.Game.Screens.Select.Carousel
{ {
get get
{ {
List<MenuItem> items = new List<MenuItem> List<MenuItem> items = new List<MenuItem>();
{
new OsuMenuItem("Play", MenuItemType.Highlighted, () => startRequested?.Invoke(beatmap)),
};
if (songSelect.AllowEditing) if (startRequested != null)
items.Add(new OsuMenuItem("Edit", MenuItemType.Standard, () => editRequested?.Invoke(beatmap))); items.Add(new OsuMenuItem("Play", MenuItemType.Highlighted, () => startRequested(beatmap)));
items.Add(new OsuMenuItem("Hide", MenuItemType.Destructive, () => hideRequested?.Invoke(beatmap))); if (editRequested != null)
items.Add(new OsuMenuItem("Edit", MenuItemType.Standard, () => editRequested(beatmap)));
if (beatmap.OnlineBeatmapID.HasValue) if (hideRequested != null)
items.Add(new OsuMenuItem("Details", MenuItemType.Standard, () => beatmapOverlay?.FetchAndShowBeatmap(beatmap.OnlineBeatmapID.Value))); items.Add(new OsuMenuItem("Hide", MenuItemType.Destructive, () => hideRequested(beatmap)));
if (beatmap.OnlineBeatmapID.HasValue && beatmapOverlay != null)
items.Add(new OsuMenuItem("Details", MenuItemType.Standard, () => beatmapOverlay.FetchAndShowBeatmap(beatmap.OnlineBeatmapID.Value)));
return items.ToArray(); return items.ToArray();
} }