1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-15 10:02:59 +08:00

Improve transition between multiplayer screens (and share constants)

This commit is contained in:
Dean Herbert 2020-02-20 18:03:53 +09:00
parent 51f03d0f07
commit a11862ba0d
2 changed files with 23 additions and 14 deletions

View File

@ -305,13 +305,13 @@ namespace osu.Game.Screens.Multi
switch (newScreen) switch (newScreen)
{ {
case LoungeSubScreen _: case LoungeSubScreen _:
header.ResizeHeightTo(400, WaveContainer.APPEAR_DURATION, Easing.OutQuint); header.Delay(MultiplayerSubScreen.RESUME_TRANSITION_DELAY).ResizeHeightTo(400, MultiplayerSubScreen.APPEAR_DURATION, Easing.OutQuint);
headerBackground.MoveToX(0, WaveContainer.DISAPPEAR_DURATION, Easing.OutQuint); headerBackground.MoveToX(0, MultiplayerSubScreen.X_MOVE_DURATION, Easing.OutQuint);
break; break;
case MatchSubScreen _: case MatchSubScreen _:
header.ResizeHeightTo(135, WaveContainer.APPEAR_DURATION, Easing.OutQuint); header.ResizeHeightTo(135, MultiplayerSubScreen.APPEAR_DURATION, Easing.OutQuint);
headerBackground.MoveToX(-200, WaveContainer.DISAPPEAR_DURATION, Easing.OutQuint); headerBackground.MoveToX(-MultiplayerSubScreen.X_SHIFT, MultiplayerSubScreen.X_MOVE_DURATION, Easing.OutQuint);
break; break;
} }

View File

@ -4,7 +4,6 @@
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Screens; using osu.Framework.Screens;
using osu.Game.Graphics.Containers;
namespace osu.Game.Screens.Multi namespace osu.Game.Screens.Multi
{ {
@ -24,31 +23,41 @@ namespace osu.Game.Screens.Multi
RelativeSizeAxes = Axes.Both; RelativeSizeAxes = Axes.Both;
} }
public const float X_SHIFT = 200;
public const double X_MOVE_DURATION = 800;
public const double RESUME_TRANSITION_DELAY = DISAPPEAR_DURATION / 2;
public const double APPEAR_DURATION = 800;
public const double DISAPPEAR_DURATION = 500;
public override void OnEntering(IScreen last) public override void OnEntering(IScreen last)
{ {
this.FadeInFromZero(WaveContainer.APPEAR_DURATION, Easing.OutQuint); this.FadeInFromZero(APPEAR_DURATION, Easing.OutQuint);
this.FadeInFromZero(WaveContainer.APPEAR_DURATION, Easing.OutQuint); this.FadeInFromZero(APPEAR_DURATION, Easing.OutQuint);
this.MoveToX(200).MoveToX(0, WaveContainer.APPEAR_DURATION, Easing.OutQuint); this.MoveToX(X_SHIFT).MoveToX(0, X_MOVE_DURATION, Easing.OutQuint);
} }
public override bool OnExiting(IScreen next) public override bool OnExiting(IScreen next)
{ {
this.FadeOut(WaveContainer.DISAPPEAR_DURATION, Easing.OutQuint); this.FadeOut(DISAPPEAR_DURATION, Easing.OutQuint);
this.MoveToX(200, WaveContainer.DISAPPEAR_DURATION, Easing.OutQuint); this.MoveToX(X_SHIFT, X_MOVE_DURATION, Easing.OutQuint);
return false; return false;
} }
public override void OnResuming(IScreen last) public override void OnResuming(IScreen last)
{ {
this.FadeIn(WaveContainer.APPEAR_DURATION, Easing.OutQuint); this.Delay(RESUME_TRANSITION_DELAY).FadeIn(APPEAR_DURATION, Easing.OutQuint);
this.MoveToX(0, WaveContainer.APPEAR_DURATION, Easing.OutQuint); this.MoveToX(0, X_MOVE_DURATION, Easing.OutQuint);
} }
public override void OnSuspending(IScreen next) public override void OnSuspending(IScreen next)
{ {
this.FadeOut(WaveContainer.DISAPPEAR_DURATION, Easing.OutQuint); this.FadeOut(DISAPPEAR_DURATION, Easing.OutQuint);
this.MoveToX(-200, WaveContainer.DISAPPEAR_DURATION, Easing.OutQuint); this.MoveToX(-X_SHIFT, X_MOVE_DURATION, Easing.OutQuint);
} }
public override string ToString() => Title; public override string ToString() => Title;