1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-14 16:52:54 +08:00

Add a centre marker to the timeline

This commit is contained in:
smoogipoo 2018-05-24 15:23:59 +09:00
parent b90cdfbfd1
commit 6ceac8ab0a
3 changed files with 66 additions and 1 deletions

View File

@ -15,7 +15,14 @@ namespace osu.Game.Tests.Visual
[TestFixture]
public class TestCaseEditorComposeTimeline : EditorClockTestCase
{
public override IReadOnlyList<Type> RequiredTypes => new[] { typeof(TimelineArea), typeof(Timeline), typeof(TimelineButton) };
public override IReadOnlyList<Type> RequiredTypes => new[]
{
typeof(TimelineArea),
typeof(Timeline),
typeof(BeatmapWaveformGraph),
typeof(TimelineButton),
typeof(CentreMarker)
};
public TestCaseEditorComposeTimeline()
{

View File

@ -0,0 +1,52 @@
// 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;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes;
using osu.Game.Graphics;
using OpenTK;
namespace osu.Game.Screens.Edit.Screens.Compose.Timeline
{
public class CentreMarker : CompositeDrawable
{
private const float triangle_width = 20;
private const float triangle_height = 10;
private const float bar_width = 2;
public CentreMarker()
{
RelativeSizeAxes = Axes.Y;
Size = new Vector2(20, 1);
Anchor = Anchor.Centre;
Origin = Anchor.Centre;
InternalChildren = new Drawable[]
{
new Box
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
RelativeSizeAxes = Axes.Y,
Width = bar_width,
},
new Triangle
{
Anchor = Anchor.TopCentre,
Origin = Anchor.BottomCentre,
Size = new Vector2(triangle_width, triangle_height),
Scale = new Vector2(1, -1)
}
};
}
[BackgroundDependencyLoader]
private void load(OsuColour colours)
{
Colour = colours.Red;
}
}
}

View File

@ -41,6 +41,12 @@ namespace osu.Game.Screens.Edit.Screens.Compose.Timeline
Depth = float.MaxValue
};
// We don't want the centre marker to scroll
AddInternal(new CentreMarker());
// Make sure that the scrollbar is above the centre marker
ChangeInternalChildDepth(Scrollbar, -1);
WaveformVisible.ValueChanged += visible => waveform.FadeTo(visible ? 1 : 0, 200, Easing.OutQuint);
Beatmap.BindTo(beatmap);