mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 20:22:55 +08:00
Ensure notifications don't interrupt the first run setup process
This commit is contained in:
parent
c562004fe9
commit
17eaa44af1
@ -74,6 +74,8 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
private Container stackContainer = null!;
|
private Container stackContainer = null!;
|
||||||
|
|
||||||
|
private Bindable<OverlayActivation>? overlayActivationMode;
|
||||||
|
|
||||||
public FirstRunSetupOverlay()
|
public FirstRunSetupOverlay()
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both;
|
RelativeSizeAxes = Axes.Both;
|
||||||
@ -225,11 +227,7 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
config.BindWith(OsuSetting.ShowFirstRunSetup, showFirstRunSetup);
|
config.BindWith(OsuSetting.ShowFirstRunSetup, showFirstRunSetup);
|
||||||
|
|
||||||
if (showFirstRunSetup.Value)
|
if (showFirstRunSetup.Value) Show();
|
||||||
{
|
|
||||||
// if we are valid for display, only do so after reaching the main menu.
|
|
||||||
performer.PerformFromScreen(_ => { Show(); }, new[] { typeof(MainMenu) });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool OnPressed(KeyBindingPressEvent<GlobalAction> e)
|
public override bool OnPressed(KeyBindingPressEvent<GlobalAction> e)
|
||||||
@ -258,6 +256,26 @@ namespace osu.Game.Overlays
|
|||||||
return base.OnPressed(e);
|
return base.OnPressed(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void Show()
|
||||||
|
{
|
||||||
|
// if we are valid for display, only do so after reaching the main menu.
|
||||||
|
performer.PerformFromScreen(screen =>
|
||||||
|
{
|
||||||
|
MainMenu menu = (MainMenu)screen;
|
||||||
|
|
||||||
|
// Eventually I'd like to replace this with a better method that doesn't access the screen.
|
||||||
|
// Either this dialog would be converted to its own screen, or at very least be "hosted" by a screen pushed to the main menu.
|
||||||
|
// Alternatively, another method of disabling notifications could be added to `INotificationOverlay`.
|
||||||
|
if (menu != null)
|
||||||
|
{
|
||||||
|
overlayActivationMode = menu.OverlayActivationMode.GetBoundCopy();
|
||||||
|
overlayActivationMode.Value = OverlayActivation.UserTriggered;
|
||||||
|
}
|
||||||
|
|
||||||
|
base.Show();
|
||||||
|
}, new[] { typeof(MainMenu) });
|
||||||
|
}
|
||||||
|
|
||||||
protected override void PopIn()
|
protected override void PopIn()
|
||||||
{
|
{
|
||||||
base.PopIn();
|
base.PopIn();
|
||||||
@ -273,6 +291,13 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
protected override void PopOut()
|
protected override void PopOut()
|
||||||
{
|
{
|
||||||
|
if (overlayActivationMode != null)
|
||||||
|
{
|
||||||
|
// If this is non-null we are guaranteed to have come from the main menu.
|
||||||
|
overlayActivationMode.Value = OverlayActivation.All;
|
||||||
|
overlayActivationMode = null;
|
||||||
|
}
|
||||||
|
|
||||||
if (currentStepIndex != null)
|
if (currentStepIndex != null)
|
||||||
{
|
{
|
||||||
notificationOverlay.Post(new SimpleNotification
|
notificationOverlay.Post(new SimpleNotification
|
||||||
|
@ -48,7 +48,7 @@ namespace osu.Game.Screens
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
protected virtual OverlayActivation InitialOverlayActivationMode => OverlayActivation.All;
|
protected virtual OverlayActivation InitialOverlayActivationMode => OverlayActivation.All;
|
||||||
|
|
||||||
protected readonly Bindable<OverlayActivation> OverlayActivationMode;
|
public readonly Bindable<OverlayActivation> OverlayActivationMode;
|
||||||
|
|
||||||
IBindable<OverlayActivation> IOsuScreen.OverlayActivationMode => OverlayActivationMode;
|
IBindable<OverlayActivation> IOsuScreen.OverlayActivationMode => OverlayActivationMode;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user