mirror of
https://github.com/ppy/osu.git
synced 2025-01-14 19:22:56 +08:00
Add ability to set preview time
This commit is contained in:
parent
60c8ef3fe5
commit
c164744064
@ -0,0 +1,31 @@
|
||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using osu.Framework.Allocation;
|
||||
using osu.Framework.Bindables;
|
||||
using osu.Game.Graphics;
|
||||
using osu.Game.Screens.Edit.Components.Timelines.Summary.Visualisations;
|
||||
|
||||
namespace osu.Game.Screens.Edit.Components.Timelines.Summary.Parts
|
||||
{
|
||||
public partial class PreviewTimePart : TimelinePart
|
||||
{
|
||||
protected override void LoadBeatmap(EditorBeatmap beatmap)
|
||||
{
|
||||
base.LoadBeatmap(beatmap);
|
||||
Add(new PreviewTimeVisualisation(beatmap.PreviewTime));
|
||||
}
|
||||
|
||||
private partial class PreviewTimeVisualisation : PointVisualisation
|
||||
{
|
||||
public PreviewTimeVisualisation(BindableInt time)
|
||||
: base(time.Value)
|
||||
{
|
||||
time.BindValueChanged(s => X = s.NewValue);
|
||||
}
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
private void load(OsuColour colours) => Colour = colours.Lime;
|
||||
}
|
||||
}
|
||||
}
|
@ -41,6 +41,14 @@ namespace osu.Game.Screens.Edit.Components.Timelines.Summary
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Height = 0.35f
|
||||
},
|
||||
new PreviewTimePart
|
||||
{
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.BottomCentre,
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Y = -10,
|
||||
Height = 0.35f
|
||||
},
|
||||
new Container
|
||||
{
|
||||
Name = "centre line",
|
||||
|
@ -322,6 +322,13 @@ namespace osu.Game.Screens.Edit
|
||||
State = { BindTarget = editorHitMarkers },
|
||||
}
|
||||
}
|
||||
},
|
||||
new MenuItem("Timing")
|
||||
{
|
||||
Items = new MenuItem[]
|
||||
{
|
||||
new EditorMenuItem("Set Current Position as Preview Point", MenuItemType.Standard, SetCurrectTimeAsPreview)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -801,6 +808,11 @@ namespace osu.Game.Screens.Edit
|
||||
|
||||
protected void Redo() => changeHandler?.RestoreState(1);
|
||||
|
||||
protected void SetCurrectTimeAsPreview()
|
||||
{
|
||||
editorBeatmap.PreviewTime.Value = (int)clock.CurrentTime;
|
||||
}
|
||||
|
||||
private void resetTrack(bool seekToStart = false)
|
||||
{
|
||||
Beatmap.Value.Track.Stop();
|
||||
|
@ -86,6 +86,8 @@ namespace osu.Game.Screens.Edit
|
||||
[Resolved]
|
||||
private EditorClock editorClock { get; set; }
|
||||
|
||||
public BindableInt PreviewTime;
|
||||
|
||||
private readonly IBeatmapProcessor beatmapProcessor;
|
||||
|
||||
private readonly Dictionary<HitObject, Bindable<double>> startTimeBindables = new Dictionary<HitObject, Bindable<double>>();
|
||||
@ -107,6 +109,9 @@ namespace osu.Game.Screens.Edit
|
||||
|
||||
foreach (var obj in HitObjects)
|
||||
trackStartTime(obj);
|
||||
|
||||
PreviewTime = new BindableInt(playableBeatmap.Metadata.PreviewTime);
|
||||
PreviewTime.BindValueChanged(s => this.beatmapInfo.Metadata.PreviewTime = s.NewValue);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
Loading…
Reference in New Issue
Block a user