Fix some discrepancies with the main menu logo transitions

This commit is contained in:
Dean Herbert 2018-05-30 19:50:00 +09:00
parent 6d6b186fb2
commit 0dafcf00b7
1 changed files with 28 additions and 23 deletions

View File

@ -325,52 +325,57 @@ private void updateLogoState(MenuState lastState = MenuState.Initial)
{ {
if (logo == null) return; if (logo == null) return;
logoDelayedAction?.Cancel();
switch (state) switch (state)
{ {
case MenuState.Exit: case MenuState.Exit:
case MenuState.Initial: case MenuState.Initial:
logoTracking = false; logoDelayedAction?.Cancel();
logoDelayedAction = Scheduler.AddDelayed(() => logoDelayedAction = Scheduler.AddDelayed(() =>
{ {
hideOverlaysOnEnter.Value = true; logoTracking = false;
allowOpeningOverlays.Value = false;
logo.ClearTransforms(targetMember: nameof(Position)); hideOverlaysOnEnter.Value = true;
logo.RelativePositionAxes = Axes.Both; allowOpeningOverlays.Value = false;
logo.MoveTo(new Vector2(0.5f), 800, Easing.OutExpo); logo.ClearTransforms(targetMember: nameof(Position));
logo.ScaleTo(1, 800, Easing.OutExpo); logo.RelativePositionAxes = Axes.Both;
}, 150);
logo.MoveTo(new Vector2(0.5f), 800, Easing.OutExpo);
logo.ScaleTo(1, 800, Easing.OutExpo);
}, buttonArea.Alpha * 150);
break; break;
case MenuState.TopLevel: case MenuState.TopLevel:
case MenuState.Play: case MenuState.Play:
logo.ClearTransforms(targetMember: nameof(Position));
logo.RelativePositionAxes = Axes.None;
switch (lastState) switch (lastState)
{ {
case MenuState.TopLevel: // coming from toplevel to play case MenuState.TopLevel: // coming from toplevel to play
break;
case MenuState.Initial: case MenuState.Initial:
logoTracking = false; logo.ClearTransforms(targetMember: nameof(Position));
logo.ScaleTo(0.5f, 200, Easing.In); logo.RelativePositionAxes = Axes.None;
bool impact = logo.Scale.X > 0.6f;
if (lastState == MenuState.Initial)
logo.ScaleTo(0.5f, 200, Easing.In);
logo.MoveTo(logoTrackingPosition, lastState == MenuState.EnteringMode ? 0 : 200, Easing.In); logo.MoveTo(logoTrackingPosition, lastState == MenuState.EnteringMode ? 0 : 200, Easing.In);
logoDelayedAction?.Cancel();
logoDelayedAction = Scheduler.AddDelayed(() => logoDelayedAction = Scheduler.AddDelayed(() =>
{ {
logoTracking = true; logoTracking = true;
logo.Impact(); if (impact)
logo.Impact();
hideOverlaysOnEnter.Value = false; hideOverlaysOnEnter.Value = false;
allowOpeningOverlays.Value = true; allowOpeningOverlays.Value = true;
}, 200); }, (1 - buttonArea.Alpha) * 200);
break; break;
default: default:
logo.ClearTransforms(targetMember: nameof(Position));
logo.RelativePositionAxes = Axes.None;
logoTracking = true; logoTracking = true;
logo.ScaleTo(0.5f, 200, Easing.OutQuint); logo.ScaleTo(0.5f, 200, Easing.OutQuint);
break; break;