diff --git a/osu.Game.Tests/NonVisual/FirstAvailableHitWindowsTest.cs b/osu.Game.Tests/NonVisual/FirstAvailableHitWindowsTest.cs
index d4b69c1be2..07d6d68e82 100644
--- a/osu.Game.Tests/NonVisual/FirstAvailableHitWindowsTest.cs
+++ b/osu.Game.Tests/NonVisual/FirstAvailableHitWindowsTest.cs
@@ -96,6 +96,7 @@ namespace osu.Game.Tests.NonVisual
public override IAdjustableAudioComponent Audio { get; }
public override Playfield Playfield { get; }
+ public override PlayfieldAdjustmentContainer PlayfieldAdjustmentContainer { get; }
public override Container Overlays { get; }
public override Container FrameStableComponents { get; }
public override IFrameStableClock FrameStableClock { get; }
diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneHitErrorMeter.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneHitErrorMeter.cs
index e57177498d..2e646f2850 100644
--- a/osu.Game.Tests/Visual/Gameplay/TestSceneHitErrorMeter.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestSceneHitErrorMeter.cs
@@ -284,6 +284,7 @@ namespace osu.Game.Tests.Visual.Gameplay
public override IAdjustableAudioComponent Audio { get; }
public override Playfield Playfield { get; }
+ public override PlayfieldAdjustmentContainer PlayfieldAdjustmentContainer { get; }
public override Container Overlays { get; }
public override Container FrameStableComponents { get; }
public override IFrameStableClock FrameStableClock { get; }
diff --git a/osu.Game/Rulesets/UI/DrawableRuleset.cs b/osu.Game/Rulesets/UI/DrawableRuleset.cs
index a28b2716cb..ebd84fd91b 100644
--- a/osu.Game/Rulesets/UI/DrawableRuleset.cs
+++ b/osu.Game/Rulesets/UI/DrawableRuleset.cs
@@ -65,22 +65,20 @@ namespace osu.Game.Rulesets.UI
///
public override Playfield Playfield => playfield.Value;
+ public override PlayfieldAdjustmentContainer PlayfieldAdjustmentContainer => playfieldAdjustmentContainer;
+
public override Container Overlays { get; } = new Container { RelativeSizeAxes = Axes.Both };
public override IAdjustableAudioComponent Audio => audioContainer;
private readonly AudioContainer audioContainer = new AudioContainer { RelativeSizeAxes = Axes.Both };
- ///
- /// A container which encapsulates the and provides any adjustments to
- /// ensure correct scale and position.
- ///
- public virtual PlayfieldAdjustmentContainer PlayfieldAdjustmentContainer { get; private set; }
-
public override Container FrameStableComponents { get; } = new Container { RelativeSizeAxes = Axes.Both };
public override IFrameStableClock FrameStableClock => frameStabilityContainer;
+ private readonly PlayfieldAdjustmentContainer playfieldAdjustmentContainer;
+
private bool allowBackwardsSeeks;
public override bool AllowBackwardsSeeks
@@ -146,6 +144,7 @@ namespace osu.Game.Rulesets.UI
RelativeSizeAxes = Axes.Both;
KeyBindingInputManager = CreateInputManager();
+ playfieldAdjustmentContainer = CreatePlayfieldAdjustmentContainer();
playfield = new Lazy(() => CreatePlayfield().With(p =>
{
p.NewResult += (_, r) => NewResult?.Invoke(r);
@@ -197,8 +196,7 @@ namespace osu.Game.Rulesets.UI
audioContainer.WithChild(KeyBindingInputManager
.WithChildren(new Drawable[]
{
- PlayfieldAdjustmentContainer = CreatePlayfieldAdjustmentContainer()
- .WithChild(Playfield),
+ playfieldAdjustmentContainer.WithChild(Playfield),
Overlays
})),
}
@@ -456,6 +454,12 @@ namespace osu.Game.Rulesets.UI
///
public abstract Playfield Playfield { get; }
+ ///
+ /// A container which encapsulates the and provides any adjustments to
+ /// ensure correct scale and position.
+ ///
+ public abstract PlayfieldAdjustmentContainer PlayfieldAdjustmentContainer { get; }
+
///
/// Content to be placed above hitobjects. Will be affected by frame stability and adjustments applied to .
///
diff --git a/osu.Game/Screens/Play/HUDOverlay.cs b/osu.Game/Screens/Play/HUDOverlay.cs
index ac1b9ce34f..292f554483 100644
--- a/osu.Game/Screens/Play/HUDOverlay.cs
+++ b/osu.Game/Screens/Play/HUDOverlay.cs
@@ -252,7 +252,7 @@ namespace osu.Game.Screens.Play
PlayfieldSkinLayer.Position = ToLocalSpace(playfieldScreenSpaceDrawQuad.TopLeft);
PlayfieldSkinLayer.Width = (ToLocalSpace(playfieldScreenSpaceDrawQuad.TopRight) - ToLocalSpace(playfieldScreenSpaceDrawQuad.TopLeft)).Length;
PlayfieldSkinLayer.Height = (ToLocalSpace(playfieldScreenSpaceDrawQuad.BottomLeft) - ToLocalSpace(playfieldScreenSpaceDrawQuad.TopLeft)).Length;
- PlayfieldSkinLayer.Rotation = drawableRuleset.Playfield.Rotation;
+ PlayfieldSkinLayer.Rotation = drawableRuleset.PlayfieldAdjustmentContainer.Rotation;
}
float? lowestTopScreenSpaceLeft = null;