DI the scrolling info rather than pass by ctor

This commit is contained in:
smoogipoo
2018-06-08 20:13:24 +09:00
parent 0fb4e6b41b
commit ca5103615d
14 changed files with 146 additions and 118 deletions

View File

@ -0,0 +1,29 @@
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Framework.Allocation;
using osu.Framework.Graphics.Containers;
using osu.Game.Rulesets.Mania.UI;
namespace osu.Game.Rulesets.Mania.Tests
{
/// <summary>
/// A container which provides a <see cref="ScrollingInfo"/> to children.
/// </summary>
public class ScrollingTestContainer : Container
{
private readonly ScrollingInfo scrollingInfo;
public ScrollingTestContainer(ScrollingInfo scrollingInfo)
{
this.scrollingInfo = scrollingInfo;
}
protected override IReadOnlyDependencyContainer CreateLocalDependencies(IReadOnlyDependencyContainer parent)
{
var dependencies = new DependencyContainer(base.CreateLocalDependencies(parent));
dependencies.Cache(scrollingInfo);
return dependencies;
}
}
}

View File

@ -84,7 +84,7 @@ namespace osu.Game.Rulesets.Mania.Tests
} }
} }
private Column createColumn(ScrollingDirection direction, ManiaAction action) private Drawable createColumn(ScrollingDirection direction, ManiaAction action)
{ {
var column = new Column(direction) var column = new Column(direction)
{ {
@ -97,7 +97,15 @@ namespace osu.Game.Rulesets.Mania.Tests
}; };
columns.Add(column); columns.Add(column);
return column;
return new ScrollingTestContainer(new ScrollingInfo(direction))
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
AutoSizeAxes = Axes.X,
RelativeSizeAxes = Axes.Y,
Child = column
};
} }
} }
} }

View File

@ -15,6 +15,7 @@ using osu.Game.Beatmaps;
using osu.Game.Beatmaps.ControlPoints; using osu.Game.Beatmaps.ControlPoints;
using osu.Game.Rulesets.Mania.Objects; using osu.Game.Rulesets.Mania.Objects;
using osu.Game.Rulesets.Mania.Objects.Drawables; using osu.Game.Rulesets.Mania.Objects.Drawables;
using osu.Game.Rulesets.Mania.UI;
using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.Objects.Types;
using osu.Game.Rulesets.UI.Scrolling; using osu.Game.Rulesets.UI.Scrolling;
@ -58,12 +59,12 @@ namespace osu.Game.Rulesets.Mania.Tests
var note = new Note { StartTime = 999999999 }; var note = new Note { StartTime = 999999999 };
note.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty()); note.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty());
return new NoteContainer(direction, $"note, scrolling {direction.ToString().ToLower()}") return new ScrollingTestContainer(new ScrollingInfo(direction))
{ {
Child = new DrawableNote(note, ManiaAction.Key1) AutoSizeAxes = Axes.Both,
Child = new NoteContainer(direction, $"note, scrolling {direction.ToString().ToLower()}")
{ {
AccentColour = Color4.OrangeRed, Child = new DrawableNote(note, ManiaAction.Key1) { AccentColour = Color4.OrangeRed }
Direction = direction
} }
}; };
} }
@ -73,13 +74,16 @@ namespace osu.Game.Rulesets.Mania.Tests
var note = new HoldNote { StartTime = 999999999, Duration = 1000 }; var note = new HoldNote { StartTime = 999999999, Duration = 1000 };
note.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty()); note.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty());
return new NoteContainer(direction, $"hold note, scrolling {direction.ToString().ToLower()}") return new ScrollingTestContainer(new ScrollingInfo(direction))
{
AutoSizeAxes = Axes.Both,
Child = new NoteContainer(direction, $"hold note, scrolling {direction.ToString().ToLower()}")
{ {
Child = new DrawableHoldNote(note, ManiaAction.Key1) Child = new DrawableHoldNote(note, ManiaAction.Key1)
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
AccentColour = Color4.OrangeRed, AccentColour = Color4.OrangeRed,
Direction = direction }
} }
}; };
} }

View File

@ -37,10 +37,18 @@ namespace osu.Game.Rulesets.Mania.Tests
}; };
} }
private ManiaStage createStage(ScrollingDirection direction, ManiaAction action) private Drawable createStage(ScrollingDirection direction, ManiaAction action)
{ {
var specialAction = ManiaAction.Special1; var specialAction = ManiaAction.Special1;
return new ManiaStage(direction, 0, new StageDefinition { Columns = 2 }, ref action, ref specialAction);
return new ScrollingTestContainer(new ScrollingInfo(direction))
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
RelativeSizeAxes = Axes.Y,
AutoSizeAxes = Axes.X,
Child = new ManiaStage(direction, 0, new StageDefinition { Columns = 2 }, ref action, ref specialAction)
};
} }
} }
} }

View File

@ -2,6 +2,7 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using System.Linq; using System.Linq;
using osu.Framework.Allocation;
using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Extensions.IEnumerableExtensions;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Game.Rulesets.Mania.Objects.Drawables.Pieces; using osu.Game.Rulesets.Mania.Objects.Drawables.Pieces;
@ -9,6 +10,7 @@ using OpenTK.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Game.Rulesets.Mania.Judgements; using osu.Game.Rulesets.Mania.Judgements;
using osu.Framework.Input.Bindings; using osu.Framework.Input.Bindings;
using osu.Game.Rulesets.Mania.UI;
using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.Scoring;
using osu.Game.Rulesets.UI.Scrolling; using osu.Game.Rulesets.UI.Scrolling;
@ -36,6 +38,8 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
/// </summary> /// </summary>
private bool hasBroken; private bool hasBroken;
private ScrollingInfo scrollingInfo;
private readonly Container<DrawableHoldNoteTick> tickContainer; private readonly Container<DrawableHoldNoteTick> tickContainer;
public DrawableHoldNote(HoldNote hitObject, ManiaAction action) public DrawableHoldNote(HoldNote hitObject, ManiaAction action)
@ -76,18 +80,14 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
AddNested(tail); AddNested(tail);
} }
private ScrollingDirection direction; [BackgroundDependencyLoader]
public override ScrollingDirection Direction private void load(ScrollingInfo scrollingInfo)
{ {
set this.scrollingInfo = scrollingInfo;
{
base.Direction = value;
direction = value;
bodyPiece.Anchor = value == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft; bodyPiece.Anchor = scrollingInfo.Direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft;
bodyPiece.Origin = bodyPiece.Anchor; bodyPiece.Origin = bodyPiece.Anchor;
} }
}
public override Color4 AccentColour public override Color4 AccentColour
{ {
@ -114,7 +114,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
base.Update(); base.Update();
// Make the body piece not lie under the head note // Make the body piece not lie under the head note
bodyPiece.Y = (direction == ScrollingDirection.Up ? 1 : -1) * head.Height / 2; bodyPiece.Y = (scrollingInfo.Direction == ScrollingDirection.Up ? 1 : -1) * head.Height / 2;
bodyPiece.Height = DrawHeight - head.Height / 2 + tail.Height / 2; bodyPiece.Height = DrawHeight - head.Height / 2 + tail.Height / 2;
} }

View File

@ -1,40 +1,15 @@
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>. // Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using System.Linq; using osu.Framework.Allocation;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Game.Rulesets.Mania.UI;
using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Rulesets.UI.Scrolling; using osu.Game.Rulesets.UI.Scrolling;
namespace osu.Game.Rulesets.Mania.Objects.Drawables namespace osu.Game.Rulesets.Mania.Objects.Drawables
{ {
public abstract class DrawableManiaHitObject : DrawableHitObject<ManiaHitObject> public abstract class DrawableManiaHitObject<TObject> : DrawableHitObject<ManiaHitObject>
{
protected DrawableManiaHitObject(ManiaHitObject hitObject)
: base(hitObject)
{
}
/// <summary>
/// Sets the scrolling direction.
/// </summary>
public virtual ScrollingDirection Direction
{
set
{
Anchor = value == ScrollingDirection.Up ? Anchor.TopCentre : Anchor.BottomCentre;
Origin = Anchor;
if (!HasNestedHitObjects)
return;
foreach (var obj in NestedHitObjects.OfType<DrawableManiaHitObject>())
obj.Direction = value;
}
}
}
public abstract class DrawableManiaHitObject<TObject> : DrawableManiaHitObject
where TObject : ManiaHitObject where TObject : ManiaHitObject
{ {
/// <summary> /// <summary>
@ -47,15 +22,19 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
protected DrawableManiaHitObject(TObject hitObject, ManiaAction? action = null) protected DrawableManiaHitObject(TObject hitObject, ManiaAction? action = null)
: base(hitObject) : base(hitObject)
{ {
Anchor = Anchor.TopCentre;
Origin = Anchor.TopCentre;
HitObject = hitObject; HitObject = hitObject;
if (action != null) if (action != null)
Action = action.Value; Action = action.Value;
} }
[BackgroundDependencyLoader]
private void load(ScrollingInfo scrollingInfo)
{
Anchor = scrollingInfo.Direction == ScrollingDirection.Up ? Anchor.TopCentre : Anchor.BottomCentre;
Origin = Anchor;
}
protected override void UpdateState(ArmedState state) protected override void UpdateState(ArmedState state)
{ {
switch (state) switch (state)

View File

@ -1,6 +1,7 @@
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>. // Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Framework.Allocation;
using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Extensions.Color4Extensions;
using OpenTK.Graphics; using OpenTK.Graphics;
using osu.Framework.Graphics; using osu.Framework.Graphics;
@ -8,6 +9,7 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Input.Bindings; using osu.Framework.Input.Bindings;
using osu.Game.Rulesets.Mania.Judgements; using osu.Game.Rulesets.Mania.Judgements;
using osu.Game.Rulesets.Mania.Objects.Drawables.Pieces; using osu.Game.Rulesets.Mania.Objects.Drawables.Pieces;
using osu.Game.Rulesets.Mania.UI;
using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.Scoring;
using osu.Game.Rulesets.UI.Scrolling; using osu.Game.Rulesets.UI.Scrolling;
@ -29,26 +31,14 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
CornerRadius = 5; CornerRadius = 5;
Masking = true; Masking = true;
InternalChildren = new Drawable[] InternalChild = headPiece = new NotePiece();
{
headPiece = new NotePiece
{
Anchor = Anchor.TopCentre,
Origin = Anchor.TopCentre
}
};
} }
public override ScrollingDirection Direction [BackgroundDependencyLoader]
private void load(ScrollingInfo scrollingInfo)
{ {
set headPiece.Anchor = scrollingInfo.Direction == ScrollingDirection.Up ? Anchor.TopCentre : Anchor.BottomCentre;
{ headPiece.Origin = headPiece.Anchor;
base.Direction = value;
headPiece.Direction = value;
headPiece.Anchor = Anchor;
headPiece.Origin = Origin;
}
} }
public override Color4 AccentColour public override Color4 AccentColour

View File

@ -1,12 +1,14 @@
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>. // Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Framework.Allocation;
using OpenTK.Graphics; using OpenTK.Graphics;
using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Extensions.Color4Extensions;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Shapes;
using osu.Game.Graphics; using osu.Game.Graphics;
using osu.Game.Rulesets.Mania.UI;
using osu.Game.Rulesets.UI.Scrolling; using osu.Game.Rulesets.UI.Scrolling;
namespace osu.Game.Rulesets.Mania.Objects.Drawables.Pieces namespace osu.Game.Rulesets.Mania.Objects.Drawables.Pieces
@ -43,14 +45,12 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables.Pieces
}; };
} }
public ScrollingDirection Direction [BackgroundDependencyLoader]
private void load(ScrollingInfo scrollingInfo)
{ {
set colouredBox.Anchor = scrollingInfo.Direction == ScrollingDirection.Up ? Anchor.TopCentre : Anchor.BottomCentre;
{
colouredBox.Anchor = value == ScrollingDirection.Up ? Anchor.TopCentre : Anchor.BottomCentre;
colouredBox.Origin = colouredBox.Anchor; colouredBox.Origin = colouredBox.Anchor;
} }
}
private Color4 accentColour; private Color4 accentColour;
public Color4 AccentColour public Color4 AccentColour

View File

@ -9,7 +9,6 @@ using osu.Game.Rulesets.Objects.Drawables;
using System.Linq; using System.Linq;
using osu.Framework.Input.Bindings; using osu.Framework.Input.Bindings;
using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Judgements;
using osu.Game.Rulesets.Mania.Objects.Drawables;
using osu.Game.Rulesets.Mania.UI.Components; using osu.Game.Rulesets.Mania.UI.Components;
using osu.Game.Rulesets.UI.Scrolling; using osu.Game.Rulesets.UI.Scrolling;
@ -57,7 +56,7 @@ namespace osu.Game.Rulesets.Mania.UI
Masking = true; Masking = true;
CornerRadius = 5; CornerRadius = 5;
background = new ColumnBackground(direction) { RelativeSizeAxes = Axes.Both }; background = new ColumnBackground { RelativeSizeAxes = Axes.Both };
InternalChildren = new[] InternalChildren = new[]
{ {
@ -74,7 +73,7 @@ namespace osu.Game.Rulesets.Mania.UI
}, },
Children = new Drawable[] Children = new Drawable[]
{ {
hitObjectArea = new ColumnHitObjectArea(direction) { RelativeSizeAxes = Axes.Both }, hitObjectArea = new ColumnHitObjectArea { RelativeSizeAxes = Axes.Both },
explosionContainer = new Container explosionContainer = new Container
{ {
Name = "Hit explosions", Name = "Hit explosions",
@ -82,7 +81,7 @@ namespace osu.Game.Rulesets.Mania.UI
} }
} }
}, },
keyArea = new ColumnKeyArea(direction) keyArea = new ColumnKeyArea
{ {
Anchor = direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft, Anchor = direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft,
Origin = direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft, Origin = direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft,
@ -134,9 +133,6 @@ namespace osu.Game.Rulesets.Mania.UI
/// <param name="hitObject">The DrawableHitObject to add.</param> /// <param name="hitObject">The DrawableHitObject to add.</param>
public override void Add(DrawableHitObject hitObject) public override void Add(DrawableHitObject hitObject)
{ {
var maniaObject = (DrawableManiaHitObject)hitObject;
maniaObject.Direction = direction;
hitObject.AccentColour = AccentColour; hitObject.AccentColour = AccentColour;
hitObject.OnJudgement += OnJudgement; hitObject.OnJudgement += OnJudgement;

View File

@ -18,19 +18,16 @@ namespace osu.Game.Rulesets.Mania.UI.Components
{ {
public ManiaAction Action; public ManiaAction Action;
private readonly ScrollingDirection direction;
private Box background; private Box background;
private Box backgroundOverlay; private Box backgroundOverlay;
public ColumnBackground(ScrollingDirection direction) private ScrollingInfo scrollingInfo;
{
this.direction = direction;
}
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load() private void load(ScrollingInfo scrollingInfo)
{ {
this.scrollingInfo = scrollingInfo;
InternalChildren = new[] InternalChildren = new[]
{ {
background = new Box background = new Box
@ -44,8 +41,8 @@ namespace osu.Game.Rulesets.Mania.UI.Components
Name = "Background Gradient Overlay", Name = "Background Gradient Overlay",
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
Height = 0.5f, Height = 0.5f,
Anchor = direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft, Anchor = scrollingInfo.Direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft,
Origin = direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft, Origin = scrollingInfo.Direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft,
Blending = BlendingMode.Additive, Blending = BlendingMode.Additive,
Alpha = 0 Alpha = 0
} }
@ -84,8 +81,8 @@ namespace osu.Game.Rulesets.Mania.UI.Components
var dimPoint = AccentColour.Opacity(0); var dimPoint = AccentColour.Opacity(0);
backgroundOverlay.Colour = ColourInfo.GradientVertical( backgroundOverlay.Colour = ColourInfo.GradientVertical(
direction == ScrollingDirection.Up ? brightPoint : dimPoint, scrollingInfo.Direction == ScrollingDirection.Up ? brightPoint : dimPoint,
direction == ScrollingDirection.Up ? dimPoint : brightPoint); scrollingInfo.Direction == ScrollingDirection.Up ? dimPoint : brightPoint);
} }
public bool OnPressed(ManiaAction action) public bool OnPressed(ManiaAction action)

View File

@ -20,32 +20,25 @@ namespace osu.Game.Rulesets.Mania.UI.Components
private Container<Drawable> content; private Container<Drawable> content;
protected override Container<Drawable> Content => content; protected override Container<Drawable> Content => content;
private readonly ScrollingDirection direction;
private Container hitTargetBar; private Container hitTargetBar;
public ColumnHitObjectArea(ScrollingDirection direction)
{
this.direction = direction;
}
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load() private void load(ScrollingInfo scrollingInfo)
{ {
InternalChildren = new Drawable[] InternalChildren = new Drawable[]
{ {
new Box new Box
{ {
Anchor = direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft, Anchor = scrollingInfo.Direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft,
Origin = direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft, Origin = scrollingInfo.Direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft,
RelativeSizeAxes = Axes.X, RelativeSizeAxes = Axes.X,
Height = hit_target_height, Height = hit_target_height,
Colour = Color4.Black Colour = Color4.Black
}, },
hitTargetBar = new Container hitTargetBar = new Container
{ {
Anchor = direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft, Anchor = scrollingInfo.Direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft,
Origin = direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft, Origin = scrollingInfo.Direction == ScrollingDirection.Up ? Anchor.TopLeft : Anchor.BottomLeft,
RelativeSizeAxes = Axes.X, RelativeSizeAxes = Axes.X,
Height = hit_target_bar_height, Height = hit_target_bar_height,
Masking = true, Masking = true,

View File

@ -22,17 +22,10 @@ namespace osu.Game.Rulesets.Mania.UI.Components
public ManiaAction Action; public ManiaAction Action;
private readonly ScrollingDirection direction;
private Container keyIcon; private Container keyIcon;
public ColumnKeyArea(ScrollingDirection direction)
{
this.direction = direction;
}
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load() private void load(ScrollingInfo scrollingInfo)
{ {
InternalChildren = new Drawable[] InternalChildren = new Drawable[]
{ {
@ -41,8 +34,8 @@ namespace osu.Game.Rulesets.Mania.UI.Components
Name = "Key gradient", Name = "Key gradient",
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
Colour = ColourInfo.GradientVertical( Colour = ColourInfo.GradientVertical(
direction == ScrollingDirection.Up ? Color4.Black : Color4.Black.Opacity(0), scrollingInfo.Direction == ScrollingDirection.Up ? Color4.Black : Color4.Black.Opacity(0),
direction == ScrollingDirection.Up ? Color4.Black.Opacity(0) : Color4.Black), scrollingInfo.Direction == ScrollingDirection.Up ? Color4.Black.Opacity(0) : Color4.Black),
Alpha = 0.5f Alpha = 0.5f
}, },
keyIcon = new Container keyIcon = new Container

View File

@ -36,6 +36,8 @@ namespace osu.Game.Rulesets.Mania.UI
public IEnumerable<BarLine> BarLines; public IEnumerable<BarLine> BarLines;
private ScrollingInfo scrollingInfo;
public ManiaRulesetContainer(Ruleset ruleset, WorkingBeatmap beatmap) public ManiaRulesetContainer(Ruleset ruleset, WorkingBeatmap beatmap)
: base(ruleset, beatmap) : base(ruleset, beatmap)
{ {
@ -73,7 +75,19 @@ namespace osu.Game.Rulesets.Mania.UI
BarLines.ForEach(Playfield.Add); BarLines.ForEach(Playfield.Add);
} }
protected sealed override Playfield CreatePlayfield() => new ManiaPlayfield(ScrollingDirection.Up, Beatmap.Stages) private DependencyContainer dependencies;
protected override IReadOnlyDependencyContainer CreateLocalDependencies(IReadOnlyDependencyContainer parent)
{
dependencies = new DependencyContainer(base.CreateLocalDependencies(parent));
scrollingInfo = new ScrollingInfo(ScrollingDirection.Up);
dependencies.Cache(scrollingInfo);
return dependencies;
}
protected sealed override Playfield CreatePlayfield() => new ManiaPlayfield(scrollingInfo.Direction, Beatmap.Stages)
{ {
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.Centre, Origin = Anchor.Centre,

View File

@ -0,0 +1,17 @@
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Game.Rulesets.UI.Scrolling;
namespace osu.Game.Rulesets.Mania.UI
{
public class ScrollingInfo
{
public readonly ScrollingDirection Direction;
public ScrollingInfo(ScrollingDirection direction)
{
Direction = direction;
}
}
}