mirror of
https://github.com/ppy/osu.git
synced 2025-02-05 20:42:55 +08:00
Fix clicking resume overlay hitting underlying hit circle
This commit is contained in:
parent
eafc0f79af
commit
5368a43633
@ -206,6 +206,15 @@ namespace osu.Game.Rulesets.Osu.UI
|
|||||||
|
|
||||||
public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => HitObjectContainer.ReceivePositionalInputAt(screenSpacePos);
|
public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => HitObjectContainer.ReceivePositionalInputAt(screenSpacePos);
|
||||||
|
|
||||||
|
private OsuResumeOverlay.OsuResumeOverlayInputBlocker resumeInputBlocker;
|
||||||
|
|
||||||
|
public void AttachResumeOverlayInputBlocker(OsuResumeOverlay.OsuResumeOverlayInputBlocker resumeInputBlocker)
|
||||||
|
{
|
||||||
|
Debug.Assert(this.resumeInputBlocker == null);
|
||||||
|
this.resumeInputBlocker = resumeInputBlocker;
|
||||||
|
AddInternal(resumeInputBlocker);
|
||||||
|
}
|
||||||
|
|
||||||
private partial class ProxyContainer : LifetimeManagementContainer
|
private partial class ProxyContainer : LifetimeManagementContainer
|
||||||
{
|
{
|
||||||
public void Add(Drawable proxy) => AddInternal(proxy);
|
public void Add(Drawable proxy) => AddInternal(proxy);
|
||||||
|
@ -33,9 +33,26 @@ namespace osu.Game.Rulesets.Osu.UI
|
|||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load()
|
private void load()
|
||||||
{
|
{
|
||||||
|
OsuResumeOverlayInputBlocker? inputBlocker = null;
|
||||||
|
|
||||||
|
if (drawableRuleset != null)
|
||||||
|
{
|
||||||
|
var osuPlayfield = (OsuPlayfield)drawableRuleset.Playfield;
|
||||||
|
osuPlayfield.AttachResumeOverlayInputBlocker(inputBlocker = new OsuResumeOverlayInputBlocker());
|
||||||
|
}
|
||||||
|
|
||||||
Add(cursorScaleContainer = new Container
|
Add(cursorScaleContainer = new Container
|
||||||
{
|
{
|
||||||
Child = clickToResumeCursor = new OsuClickToResumeCursor { ResumeRequested = Resume }
|
Child = clickToResumeCursor = new OsuClickToResumeCursor
|
||||||
|
{
|
||||||
|
ResumeRequested = () =>
|
||||||
|
{
|
||||||
|
if (inputBlocker != null)
|
||||||
|
inputBlocker.BlockNextPress = true;
|
||||||
|
|
||||||
|
Resume();
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,5 +157,32 @@ namespace osu.Game.Rulesets.Osu.UI
|
|||||||
this.FadeColour(IsHovered ? Color4.White : Color4.Orange, 400, Easing.OutQuint);
|
this.FadeColour(IsHovered ? Color4.White : Color4.Orange, 400, Easing.OutQuint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public partial class OsuResumeOverlayInputBlocker : Drawable, IKeyBindingHandler<OsuAction>
|
||||||
|
{
|
||||||
|
public bool BlockNextPress;
|
||||||
|
|
||||||
|
public OsuResumeOverlayInputBlocker()
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both;
|
||||||
|
Depth = float.MinValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool OnPressed(KeyBindingPressEvent<OsuAction> e)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return BlockNextPress;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
BlockNextPress = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnReleased(KeyBindingReleaseEvent<OsuAction> e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user