Make `EditorScreen` inherit from `VisibilityContainer` rather than unsafe transforms

This commit is contained in:
Salman Ahmed 2021-08-25 16:58:06 +03:00
parent c32168c61f
commit 3ad0b529fb
2 changed files with 14 additions and 13 deletions

View File

@ -605,19 +605,14 @@ private void onModeChanged(ValueChangedEvent<EditorScreenMode> e)
{
var lastScreen = currentScreen;
lastScreen?
.ScaleTo(0.98f, 200, Easing.OutQuint)
.FadeOut(200, Easing.OutQuint);
lastScreen?.Hide();
try
{
if ((currentScreen = screenContainer.SingleOrDefault(s => s.Type == e.NewValue)) != null)
{
screenContainer.ChangeChildDepth(currentScreen, lastScreen?.Depth + 1 ?? 0);
currentScreen
.ScaleTo(1, 200, Easing.OutQuint)
.FadeIn(200, Easing.OutQuint);
currentScreen.Show();
return;
}
@ -650,7 +645,10 @@ private void onModeChanged(ValueChangedEvent<EditorScreenMode> e)
LoadComponentAsync(currentScreen, newScreen =>
{
if (newScreen == currentScreen)
{
screenContainer.Add(newScreen);
newScreen.Show();
}
});
}
finally

View File

@ -10,7 +10,7 @@ namespace osu.Game.Screens.Edit
/// <summary>
/// TODO: eventually make this inherit Screen and add a local screen stack inside the Editor.
/// </summary>
public abstract class EditorScreen : Container
public abstract class EditorScreen : VisibilityContainer
{
[Resolved]
protected EditorBeatmap EditorBeatmap { get; private set; }
@ -31,13 +31,16 @@ protected EditorScreen(EditorScreenMode type)
InternalChild = content = new Container { RelativeSizeAxes = Axes.Both };
}
protected override void LoadComplete()
protected override void PopIn()
{
base.LoadComplete();
this.ScaleTo(1f, 200, Easing.OutQuint)
.FadeIn(200, Easing.OutQuint);
}
this.FadeTo(0)
.Then()
.FadeTo(1f, 250, Easing.OutQuint);
protected override void PopOut()
{
this.ScaleTo(0.98f, 200, Easing.OutQuint)
.FadeOut(200, Easing.OutQuint);
}
}
}