mirror of
https://github.com/ppy/osu.git
synced 2025-01-06 04:13:11 +08:00
Ensure timeline ticks aren't hidden by other pieces
Addresses https://github.com/ppy/osu/issues/28667.
This commit is contained in:
parent
c100d1ab65
commit
50818da166
@ -150,7 +150,7 @@ namespace osu.Game.Screens.Edit.Compose.Components
|
|||||||
{
|
{
|
||||||
new TextFlowContainer(s => s.Font = s.Font.With(size: 14))
|
new TextFlowContainer(s => s.Font = s.Font.With(size: 14))
|
||||||
{
|
{
|
||||||
Padding = new MarginPadding { Horizontal = 15, Vertical = 8 },
|
Padding = new MarginPadding { Horizontal = 15, Vertical = 2 },
|
||||||
Text = "beat snap",
|
Text = "beat snap",
|
||||||
RelativeSizeAxes = Axes.X,
|
RelativeSizeAxes = Axes.X,
|
||||||
TextAnchor = Anchor.TopCentre,
|
TextAnchor = Anchor.TopCentre,
|
||||||
@ -159,7 +159,7 @@ namespace osu.Game.Screens.Edit.Compose.Components
|
|||||||
},
|
},
|
||||||
RowDimensions = new[]
|
RowDimensions = new[]
|
||||||
{
|
{
|
||||||
new Dimension(GridSizeMode.Absolute, 30),
|
new Dimension(GridSizeMode.Absolute, 40),
|
||||||
new Dimension(GridSizeMode.Absolute, 20),
|
new Dimension(GridSizeMode.Absolute, 20),
|
||||||
new Dimension(GridSizeMode.Absolute, 15)
|
new Dimension(GridSizeMode.Absolute, 15)
|
||||||
}
|
}
|
||||||
@ -526,7 +526,7 @@ namespace osu.Game.Screens.Edit.Compose.Components
|
|||||||
AlwaysDisplayed = alwaysDisplayed;
|
AlwaysDisplayed = alwaysDisplayed;
|
||||||
Divisor = divisor;
|
Divisor = divisor;
|
||||||
|
|
||||||
Size = new Vector2(6f, 12) * BindableBeatDivisor.GetSize(divisor);
|
Size = new Vector2(6f, 18) * BindableBeatDivisor.GetSize(divisor);
|
||||||
Alpha = alwaysDisplayed ? 1 : 0;
|
Alpha = alwaysDisplayed ? 1 : 0;
|
||||||
|
|
||||||
InternalChild = new Box { RelativeSizeAxes = Axes.Both };
|
InternalChild = new Box { RelativeSizeAxes = Axes.Both };
|
||||||
|
@ -25,7 +25,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
|
|||||||
[Cached]
|
[Cached]
|
||||||
public partial class Timeline : ZoomableScrollContainer, IPositionSnapProvider
|
public partial class Timeline : ZoomableScrollContainer, IPositionSnapProvider
|
||||||
{
|
{
|
||||||
private const float timeline_height = 72;
|
private const float timeline_height = 80;
|
||||||
private const float timeline_expanded_height = 94;
|
private const float timeline_expanded_height = 94;
|
||||||
|
|
||||||
private readonly Drawable userContent;
|
private readonly Drawable userContent;
|
||||||
@ -97,6 +97,11 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
|
|||||||
// We don't want the centre marker to scroll
|
// We don't want the centre marker to scroll
|
||||||
AddInternal(centreMarker = new CentreMarker());
|
AddInternal(centreMarker = new CentreMarker());
|
||||||
|
|
||||||
|
ticks = new TimelineTickDisplay
|
||||||
|
{
|
||||||
|
Padding = new MarginPadding { Vertical = 2, },
|
||||||
|
};
|
||||||
|
|
||||||
AddRange(new Drawable[]
|
AddRange(new Drawable[]
|
||||||
{
|
{
|
||||||
controlPoints = new TimelineControlPointDisplay
|
controlPoints = new TimelineControlPointDisplay
|
||||||
@ -104,6 +109,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
|
|||||||
RelativeSizeAxes = Axes.X,
|
RelativeSizeAxes = Axes.X,
|
||||||
Height = timeline_expanded_height,
|
Height = timeline_expanded_height,
|
||||||
},
|
},
|
||||||
|
ticks,
|
||||||
mainContent = new Container
|
mainContent = new Container
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.X,
|
RelativeSizeAxes = Axes.X,
|
||||||
@ -120,7 +126,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
|
|||||||
HighColour = colours.BlueDarker,
|
HighColour = colours.BlueDarker,
|
||||||
},
|
},
|
||||||
centreMarker.CreateProxy(),
|
centreMarker.CreateProxy(),
|
||||||
ticks = new TimelineTickDisplay(),
|
ticks.CreateProxy(),
|
||||||
new Box
|
new Box
|
||||||
{
|
{
|
||||||
Name = "zero marker",
|
Name = "zero marker",
|
||||||
@ -175,7 +181,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
|
|||||||
if (visible.NewValue)
|
if (visible.NewValue)
|
||||||
{
|
{
|
||||||
this.ResizeHeightTo(timeline_expanded_height, 200, Easing.OutQuint);
|
this.ResizeHeightTo(timeline_expanded_height, 200, Easing.OutQuint);
|
||||||
mainContent.MoveToY(20, 200, Easing.OutQuint);
|
mainContent.MoveToY(15, 200, Easing.OutQuint);
|
||||||
|
|
||||||
// delay the fade in else masking looks weird.
|
// delay the fade in else masking looks weird.
|
||||||
controlPoints.Delay(180).FadeIn(400, Easing.OutQuint);
|
controlPoints.Delay(180).FadeIn(400, Easing.OutQuint);
|
||||||
|
@ -9,6 +9,7 @@ using osu.Framework.Caching;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Logging;
|
using osu.Framework.Logging;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Configuration;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Screens.Edit.Components.Timelines.Summary.Parts;
|
using osu.Game.Screens.Edit.Components.Timelines.Summary.Parts;
|
||||||
using osu.Game.Screens.Edit.Components.Timelines.Summary.Visualisations;
|
using osu.Game.Screens.Edit.Components.Timelines.Summary.Visualisations;
|
||||||
@ -41,16 +42,21 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
|
|||||||
RelativeSizeAxes = Axes.Both;
|
RelativeSizeAxes = Axes.Both;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private readonly BindableBool showTimingChanges = new BindableBool(true);
|
||||||
|
|
||||||
private readonly Cached tickCache = new Cached();
|
private readonly Cached tickCache = new Cached();
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load()
|
private void load(OsuConfigManager configManager)
|
||||||
{
|
{
|
||||||
beatDivisor.BindValueChanged(_ => invalidateTicks());
|
beatDivisor.BindValueChanged(_ => invalidateTicks());
|
||||||
|
|
||||||
if (changeHandler != null)
|
if (changeHandler != null)
|
||||||
// currently this is the best way to handle any kind of timing changes.
|
// currently this is the best way to handle any kind of timing changes.
|
||||||
changeHandler.OnStateChange += invalidateTicks;
|
changeHandler.OnStateChange += invalidateTicks;
|
||||||
|
|
||||||
|
configManager.BindWith(OsuSetting.EditorTimelineShowTimingChanges, showTimingChanges);
|
||||||
|
showTimingChanges.BindValueChanged(_ => invalidateTicks());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void invalidateTicks()
|
private void invalidateTicks()
|
||||||
@ -142,7 +148,20 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
|
|||||||
var line = getNextUsableLine();
|
var line = getNextUsableLine();
|
||||||
line.X = xPos;
|
line.X = xPos;
|
||||||
line.Width = PointVisualisation.MAX_WIDTH * size.X;
|
line.Width = PointVisualisation.MAX_WIDTH * size.X;
|
||||||
line.Height = 0.9f * size.Y;
|
|
||||||
|
if (showTimingChanges.Value)
|
||||||
|
{
|
||||||
|
line.Anchor = Anchor.BottomLeft;
|
||||||
|
line.Origin = Anchor.BottomCentre;
|
||||||
|
line.Height = 0.7f + size.Y * 0.28f;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
line.Anchor = Anchor.CentreLeft;
|
||||||
|
line.Origin = Anchor.Centre;
|
||||||
|
line.Height = 0.92f + size.Y * 0.07f;
|
||||||
|
}
|
||||||
|
|
||||||
line.Colour = colour;
|
line.Colour = colour;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user