Merge pull request #9763 from Wieku/playfield-shift

Add vertical offset to osu! playfield to match stable
This commit is contained in:
Dan Balasescu
2020-08-07 16:56:07 +09:00
committed by GitHub
2 changed files with 14 additions and 2 deletions

View File

@ -35,7 +35,7 @@ namespace osu.Game.Rulesets.Osu.UI
protected override PassThroughInputManager CreateInputManager() => new OsuInputManager(Ruleset.RulesetInfo);
public override PlayfieldAdjustmentContainer CreatePlayfieldAdjustmentContainer() => new OsuPlayfieldAdjustmentContainer();
public override PlayfieldAdjustmentContainer CreatePlayfieldAdjustmentContainer() => new OsuPlayfieldAdjustmentContainer { AlignWithStoryboard = true };
protected override ResumeOverlay CreateResumeOverlay() => new OsuResumeOverlay();

View File

@ -11,10 +11,19 @@ namespace osu.Game.Rulesets.Osu.UI
public class OsuPlayfieldAdjustmentContainer : PlayfieldAdjustmentContainer
{
protected override Container<Drawable> Content => content;
private readonly Container content;
private readonly ScalingContainer content;
private const float playfield_size_adjust = 0.8f;
/// <summary>
/// When true, an offset is applied to allow alignment with historical storyboards displayed in the same parent space.
/// This will shift the playfield downwards slightly.
/// </summary>
public bool AlignWithStoryboard
{
set => content.PlayfieldShift = value;
}
public OsuPlayfieldAdjustmentContainer()
{
Anchor = Anchor.Centre;
@ -39,6 +48,8 @@ namespace osu.Game.Rulesets.Osu.UI
/// </summary>
private class ScalingContainer : Container
{
internal bool PlayfieldShift { get; set; }
protected override void Update()
{
base.Update();
@ -55,6 +66,7 @@ namespace osu.Game.Rulesets.Osu.UI
// Scale = 819.2 / 512
// Scale = 1.6
Scale = new Vector2(Parent.ChildSize.X / OsuPlayfield.BASE_SIZE.X);
Position = new Vector2(0, (PlayfieldShift ? 8f : 0f) * Scale.X);
// Size = 0.625
Size = Vector2.Divide(Vector2.One, Scale);
}