1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-13 09:23:06 +08:00

Make drawable bar line a bit more sane.

This commit is contained in:
smoogipooo 2017-05-29 15:18:06 +09:00
parent 4fce0c1189
commit 32550bda4f
2 changed files with 32 additions and 35 deletions

View File

@ -17,8 +17,8 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
/// </summary>
public class DrawableBarLine : DrawableManiaHitObject<BarLine>
{
public DrawableBarLine(BarLine hitObject)
: base(hitObject, null)
public DrawableBarLine(BarLine barLine)
: base(barLine, null)
{
AutoSizeAxes = Axes.Y;
RelativeSizeAxes = Axes.X;
@ -31,38 +31,35 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
Height = 1
});
int signatureRelativeIndex = hitObject.BeatIndex % (int)hitObject.ControlPoint.TimeSignature;
bool isMajor = barLine.BeatIndex % (int)barLine.ControlPoint.TimeSignature == 0;
switch (signatureRelativeIndex)
if (isMajor)
{
case 0:
Add(new EquilateralTriangle
{
Name = "Left triangle",
Anchor = Anchor.BottomLeft,
Origin = Anchor.TopCentre,
Size = new Vector2(12),
X = -9,
Rotation = 90,
BypassAutoSizeAxes = Axes.Both
});
Add(new EquilateralTriangle
{
Name = "Left triangle",
Anchor = Anchor.BottomLeft,
Origin = Anchor.TopCentre,
Size = new Vector2(12),
X = -9,
Rotation = 90,
BypassAutoSizeAxes = Axes.Both
});
Add(new EquilateralTriangle
{
Name = "Right triangle",
Anchor = Anchor.BottomRight,
Origin = Anchor.TopCentre,
Size = new Vector2(12),
X = 9,
Rotation = -90,
BypassAutoSizeAxes = Axes.Both,
});
break;
case 1:
case 3:
Alpha = 0.2f;
break;
Add(new EquilateralTriangle
{
Name = "Right triangle",
Anchor = Anchor.BottomRight,
Origin = Anchor.TopCentre,
Size = new Vector2(12),
X = 9,
Rotation = -90,
BypassAutoSizeAxes = Axes.Both,
});
}
if (!isMajor && barLine.BeatIndex % 2 == 1)
Alpha = 0.2f;
}
protected override void UpdateState(ArmedState state)

View File

@ -58,7 +58,7 @@ namespace osu.Game.Rulesets.Mania.UI
private readonly FlowContainer<Column> columns;
public IEnumerable<Column> Columns => columns.Children;
private readonly ControlPointContainer barlineContainer;
private readonly ControlPointContainer barLineContainer;
private List<Color4> normalColumnColours = new List<Color4>();
private Color4 specialColumnColour;
@ -116,7 +116,7 @@ namespace osu.Game.Rulesets.Mania.UI
Padding = new MarginPadding { Top = HIT_TARGET_POSITION },
Children = new[]
{
barlineContainer = new ControlPointContainer(timingChanges)
barLineContainer = new ControlPointContainer(timingChanges)
{
Name = "Bar lines",
Anchor = Anchor.TopCentre,
@ -207,7 +207,7 @@ namespace osu.Game.Rulesets.Mania.UI
}
public override void Add(DrawableHitObject<ManiaHitObject, ManiaJudgement> h) => Columns.ElementAt(h.HitObject.Column).Add(h);
public void Add(DrawableBarLine barline) => barlineContainer.Add(barline);
public void Add(DrawableBarLine barline) => barLineContainer.Add(barline);
protected override bool OnKeyDown(InputState state, KeyDownEventArgs args)
{
@ -242,7 +242,7 @@ namespace osu.Game.Rulesets.Mania.UI
timeSpan = MathHelper.Clamp(timeSpan, time_span_min, time_span_max);
barlineContainer.TimeSpan = value;
barLineContainer.TimeSpan = value;
Columns.ForEach(c => c.ControlPointContainer.TimeSpan = value);
}
}
@ -256,7 +256,7 @@ namespace osu.Game.Rulesets.Mania.UI
{
// Due to masking differences, it is not possible to get the width of the columns container automatically
// While masking on effectively only the Y-axis, so we need to set the width of the bar line container manually
barlineContainer.Width = columns.Width;
barLineContainer.Width = columns.Width;
}
private class TransformTimeSpan : Transform<double>