mirror of
https://github.com/osukey/osukey.git
synced 2025-08-02 14:17:06 +09:00
Create a custom background stack to fix various background issues
This commit is contained in:
@ -85,8 +85,7 @@ namespace osu.Game
|
||||
|
||||
public readonly Bindable<OverlayActivation> OverlayActivationMode = new Bindable<OverlayActivation>();
|
||||
|
||||
private ParallaxContainer backgroundParallax;
|
||||
private ScreenStack backgroundStack;
|
||||
private BackgroundScreenStack backgroundStack;
|
||||
private ScreenStack screenStack;
|
||||
private VolumeOverlay volume;
|
||||
private OnScreenDisplay onscreenDisplay;
|
||||
@ -356,12 +355,7 @@ namespace osu.Game
|
||||
ActionRequested = action => volume.Adjust(action),
|
||||
ScrollActionRequested = (action, amount, isPrecise) => volume.Adjust(action, amount, isPrecise),
|
||||
},
|
||||
backgroundParallax = new ParallaxContainer
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Scale = new Vector2(1.06f),
|
||||
Child = backgroundStack = new ScreenStack { RelativeSizeAxes = Axes.Both }
|
||||
},
|
||||
backgroundStack = new BackgroundScreenStack { RelativeSizeAxes = Axes.Both },
|
||||
screenContainer = new ScalingContainer(ScalingMode.ExcludeOverlays)
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
@ -376,6 +370,8 @@ namespace osu.Game
|
||||
idleTracker = new IdleTracker(6000)
|
||||
});
|
||||
|
||||
dependencies.Cache(backgroundStack);
|
||||
|
||||
screenStack.ScreenPushed += screenPushed;
|
||||
screenStack.ScreenExited += screenExited;
|
||||
|
||||
@ -742,9 +738,6 @@ namespace osu.Game
|
||||
|
||||
protected virtual void ScreenChanged(IScreen lastScreen, IScreen newScreen)
|
||||
{
|
||||
if (newScreen is IOsuScreen newOsuScreen)
|
||||
backgroundParallax.ParallaxAmount = ParallaxContainer.DEFAULT_PARALLAX_AMOUNT * newOsuScreen.BackgroundParallaxAmount;
|
||||
|
||||
switch (newScreen)
|
||||
{
|
||||
case Intro intro:
|
||||
@ -758,18 +751,12 @@ namespace osu.Game
|
||||
|
||||
private void screenPushed(IScreen lastScreen, IScreen newScreen)
|
||||
{
|
||||
if (newScreen is IOsuScreen newOsuScreen && newOsuScreen.Background != null)
|
||||
backgroundStack.Push(newOsuScreen.Background);
|
||||
|
||||
ScreenChanged(lastScreen, newScreen);
|
||||
Logger.Log($"Screen changed → {newScreen}");
|
||||
}
|
||||
|
||||
private void screenExited(IScreen lastScreen, IScreen newScreen)
|
||||
{
|
||||
if (newScreen is IOsuScreen newOsuScreen)
|
||||
newOsuScreen.Background?.MakeCurrent();
|
||||
|
||||
ScreenChanged(lastScreen, newScreen);
|
||||
Logger.Log($"Screen changed ← {newScreen}");
|
||||
|
||||
|
Reference in New Issue
Block a user