mirror of
https://github.com/osukey/osukey.git
synced 2025-07-01 16:29:58 +09:00
Fix logo not always returning to the correct state when rapidly changing menus
Fixes #1005 for real
This commit is contained in:
@ -17,6 +17,7 @@ using OpenTK.Graphics;
|
|||||||
using OpenTK.Input;
|
using OpenTK.Input;
|
||||||
using osu.Framework.Audio.Sample;
|
using osu.Framework.Audio.Sample;
|
||||||
using osu.Framework.Audio;
|
using osu.Framework.Audio;
|
||||||
|
using osu.Framework.Threading;
|
||||||
|
|
||||||
namespace osu.Game.Screens.Menu
|
namespace osu.Game.Screens.Menu
|
||||||
{
|
{
|
||||||
@ -281,25 +282,30 @@ namespace osu.Game.Screens.Menu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ScheduledDelegate logoDelayedAction;
|
||||||
|
|
||||||
private void updateLogoState(MenuState lastState = MenuState.Initial)
|
private void updateLogoState(MenuState lastState = MenuState.Initial)
|
||||||
{
|
{
|
||||||
|
if (logo == null) return;
|
||||||
|
|
||||||
|
logoDelayedAction?.Cancel();
|
||||||
|
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case MenuState.Exit:
|
case MenuState.Exit:
|
||||||
case MenuState.Initial:
|
case MenuState.Initial:
|
||||||
logoTracking = false;
|
logoTracking = false;
|
||||||
|
|
||||||
logo?.Delay(150)
|
logoDelayedAction = Scheduler.AddDelayed(() =>
|
||||||
.Schedule(() =>
|
{
|
||||||
{
|
toolbar?.Hide();
|
||||||
toolbar?.Hide();
|
|
||||||
|
|
||||||
logo.ClearTransforms(targetMember: nameof(Position));
|
logo.ClearTransforms(targetMember: nameof(Position));
|
||||||
logo.RelativePositionAxes = Axes.Both;
|
logo.RelativePositionAxes = Axes.Both;
|
||||||
|
|
||||||
logo.MoveTo(new Vector2(0.5f), 800, Easing.OutExpo);
|
logo.MoveTo(new Vector2(0.5f), 800, Easing.OutExpo);
|
||||||
logo.ScaleTo(1, 800, Easing.OutExpo);
|
logo.ScaleTo(1, 800, Easing.OutExpo);
|
||||||
});
|
}, 150);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case MenuState.TopLevel:
|
case MenuState.TopLevel:
|
||||||
@ -307,26 +313,24 @@ namespace osu.Game.Screens.Menu
|
|||||||
logo.ClearTransforms(targetMember: nameof(Position));
|
logo.ClearTransforms(targetMember: nameof(Position));
|
||||||
logo.RelativePositionAxes = Axes.None;
|
logo.RelativePositionAxes = Axes.None;
|
||||||
|
|
||||||
logoTracking = true;
|
|
||||||
|
|
||||||
switch (lastState)
|
switch (lastState)
|
||||||
{
|
{
|
||||||
case MenuState.Initial:
|
case MenuState.Initial:
|
||||||
|
logoTracking = false;
|
||||||
logo.ScaleTo(0.5f, 200, Easing.In);
|
logo.ScaleTo(0.5f, 200, Easing.In);
|
||||||
|
|
||||||
logoTracking = false;
|
logo.MoveTo(logoTrackingPosition, lastState == MenuState.EnteringMode ? 0 : 200, Easing.In);
|
||||||
|
|
||||||
logo
|
logoDelayedAction = Scheduler.AddDelayed(() =>
|
||||||
.MoveTo(logoTrackingPosition, lastState == MenuState.EnteringMode ? 0 : 200, Easing.In)
|
{
|
||||||
.OnComplete(o =>
|
logoTracking = true;
|
||||||
{
|
|
||||||
logoTracking = true;
|
|
||||||
|
|
||||||
o.Impact();
|
logo.Impact();
|
||||||
toolbar?.Show();
|
toolbar?.Show();
|
||||||
});
|
}, 200);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
logoTracking = true;
|
||||||
logo.ScaleTo(0.5f, 200, Easing.OutQuint);
|
logo.ScaleTo(0.5f, 200, Easing.OutQuint);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user