// Copyright (c) 2007-2018 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using OpenTK; using osu.Framework.Graphics; using osu.Framework.Graphics.Shapes; using osu.Game.Rulesets.Objects.Drawables; 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 = 1; AddInternal(new Box { Name = "Bar line", Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, RelativeSizeAxes = Axes.Both, }); 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 UpdateState(ArmedState state) { } } }