1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-21 22:07:25 +08:00

Allow starting maps by clicking an active panel a second time.

This commit is contained in:
Dean Herbert 2016-12-18 16:59:13 +09:00
parent 2cbc528971
commit 6e10a9bb29
3 changed files with 22 additions and 2 deletions

View File

@ -19,6 +19,11 @@ namespace osu.Game.Beatmaps.Drawables
/// </summary>
public Action<BeatmapGroup, BeatmapInfo> SelectionChanged;
/// <summary>
/// Fires when one of our difficulties is clicked when already selected. Should start playing the map.
/// </summary>
public Action<BeatmapInfo> StartRequested;
public BeatmapSetHeader Header;
private BeatmapGroupState state;
@ -68,6 +73,7 @@ namespace osu.Game.Beatmaps.Drawables
{
Alpha = 0,
GainedSelection = panelGainedSelection,
StartRequested = p => { StartRequested?.Invoke(p.Beatmap); },
RelativeSizeAxes = Axes.X,
}).ToList();
}

View File

@ -16,7 +16,8 @@ using osu.Game.Graphics.Backgrounds;
using osu.Game.Graphics.UserInterface;
using OpenTK;
using OpenTK.Graphics;
using osu.Framework.Input;
namespace osu.Game.Beatmaps.Drawables
{
class BeatmapPanel : Panel
@ -25,6 +26,7 @@ namespace osu.Game.Beatmaps.Drawables
private Sprite background;
public Action<BeatmapPanel> GainedSelection;
public Action<BeatmapPanel> StartRequested;
Color4 deselectedColour = new Color4(20, 43, 51, 255);
@ -45,6 +47,14 @@ namespace osu.Game.Beatmaps.Drawables
background.Colour = deselectedColour;
}
protected override bool OnClick(InputState state)
{
if (State == PanelSelectedState.Selected)
StartRequested?.Invoke(this);
return base.OnClick(state);
}
public BeatmapPanel(BeatmapInfo beatmap)
{
Beatmap = beatmap;

View File

@ -348,7 +348,11 @@ namespace osu.Game.Screens.Select
var beatmap = new WorkingBeatmap(beatmapSet.Beatmaps.FirstOrDefault(), beatmapSet, database);
var group = new BeatmapGroup(beatmap) { SelectionChanged = selectionChanged };
var group = new BeatmapGroup(beatmap)
{
SelectionChanged = selectionChanged,
StartRequested = b => start()
};
//for the time being, let's completely load the difficulty panels in the background.
//this likely won't scale so well, but allows us to completely async the loading flow.