diff --git a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs
index 18d2f83fd9..5c6f6b4408 100644
--- a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs
+++ b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs
@@ -81,8 +81,9 @@ namespace osu.Game.Rulesets.Mania.UI
{
var drawableStage = new ManiaStage();
drawableStage.VisibleTimeRange.BindTo(VisibleTimeRange);
+ drawableStage.Inverted.BindTo(Inverted);
drawableStage.ColumnStartIndex = stageIndex;
-
+
stages.Add(drawableStage);
AddNested(drawableStage);
@@ -100,19 +101,6 @@ namespace osu.Game.Rulesets.Mania.UI
stageIndex = stageIndex + stage.Columns;
}
-
- Inverted.ValueChanged += invertedChanged;
- Inverted.TriggerChange();
- }
-
- private void invertedChanged(bool newValue)
- {
- Scale = new Vector2(1, newValue ? -1 : 1);
-
- foreach (var single in stages)
- {
- single.Judgements.Scale = Scale;
- }
}
public override void OnJudgement(DrawableHitObject judgedObject, Judgement judgement)
diff --git a/osu.Game.Rulesets.Mania/UI/ManiaStage.cs b/osu.Game.Rulesets.Mania/UI/ManiaStage.cs
index dee0b8a5bb..408103458e 100644
--- a/osu.Game.Rulesets.Mania/UI/ManiaStage.cs
+++ b/osu.Game.Rulesets.Mania/UI/ManiaStage.cs
@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using osu.Framework.Allocation;
+using osu.Framework.Configuration;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes;
@@ -25,6 +26,11 @@ namespace osu.Game.Rulesets.Mania.UI
{
public const float HIT_TARGET_POSITION = 50;
+ ///
+ /// Whether this playfield should be inverted. This flips everything inside the playfield.
+ ///
+ public readonly Bindable Inverted = new Bindable(true);
+
private SpecialColumnPosition specialColumnPosition;
///
@@ -61,8 +67,8 @@ namespace osu.Game.Rulesets.Mania.UI
: base(ScrollingDirection.Up)
{
Name = "Playfield elements";
- Anchor = Anchor.TopCentre;
- Origin = Anchor.TopCentre;
+ Anchor = Anchor.Centre;
+ Origin = Anchor.Centre;
//RelativeSizeAxes = Axes.Y;
//AutoSizeAxes = Axes.X;
InternalChildren = new Drawable[]
@@ -130,6 +136,15 @@ namespace osu.Game.Rulesets.Mania.UI
}
}
};
+
+ Inverted.ValueChanged += invertedChanged;
+ Inverted.TriggerChange();
+ }
+
+ private void invertedChanged(bool newValue)
+ {
+ Scale = new Vector2(1, newValue ? -1 : 1);
+ Judgements.Scale = Scale;
}
///
@@ -166,15 +181,15 @@ namespace osu.Game.Rulesets.Mania.UI
public override void Add(DrawableHitObject h)
{
- int index = ((ManiaHitObject)h.HitObject).Column - ColumnStartIndex;
- Columns.ElementAt(index).Add(h);
+ int columnIndex = ((ManiaHitObject)h.HitObject).Column - ColumnStartIndex;
+ Columns.ElementAt(columnIndex).Add(h);
}
public void AddJudgement(DrawableHitObject judgedObject, Judgement judgement)
{
var maniaObject = (ManiaHitObject)judgedObject.HitObject;
- int column = maniaObject.Column - ColumnStartIndex;
- columns[column].OnJudgement(judgedObject, judgement);
+ int columnIndex = maniaObject.Column - ColumnStartIndex;
+ columns[columnIndex].OnJudgement(judgedObject, judgement);
judgements.Clear();
judgements.Add(new DrawableManiaJudgement(judgement)