// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using osuTK; using osu.Framework.Graphics; using osu.Framework.Graphics.Shapes; using osu.Game.Rulesets.Objects.Drawables; using osuTK.Graphics; namespace osu.Game.Rulesets.Mania.Objects.Drawables { /// /// Visualises a . Although this derives DrawableManiaHitObject, /// this does not handle input/sound like a normal hit object. /// public class DrawableBarLine : DrawableManiaHitObject { /// /// Height of major bar line triangles. /// private const float triangle_height = 12; /// /// Offset of the major bar line triangles from the sides of the bar line. /// private const float triangle_offset = 9; public DrawableBarLine(BarLine barLine) : base(barLine) { RelativeSizeAxes = Axes.X; Height = 2f; AddInternal(new Box { Name = "Bar line", Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, RelativeSizeAxes = Axes.Both, Colour = new Color4(255, 204, 33, 255), }); bool isMajor = barLine.BeatIndex % (int)barLine.ControlPoint.TimeSignature == 0; if (isMajor) { AddInternal(new EquilateralTriangle { Name = "Left triangle", Anchor = Anchor.BottomLeft, Origin = Anchor.TopCentre, Size = new Vector2(triangle_height), X = -triangle_offset, Rotation = 90 }); AddInternal(new EquilateralTriangle { Name = "Right triangle", Anchor = Anchor.BottomRight, Origin = Anchor.TopCentre, Size = new Vector2(triangle_height), X = triangle_offset, Rotation = -90 }); } if (!isMajor && barLine.BeatIndex % 2 == 1) Alpha = 0.2f; } protected override void UpdateStateTransforms(ArmedState state) { } } }