Bind to clock instead of music controller

This commit is contained in:
ansel
2022-12-22 15:35:53 +03:00
parent a18ece8610
commit f2e8776529
2 changed files with 14 additions and 32 deletions

View File

@ -5,6 +5,7 @@
using System;
using osu.Framework.Allocation;
using osu.Framework.Audio.Track;
using osu.Framework.Bindables;
using osu.Framework.Extensions.Color4Extensions;
using osu.Framework.Graphics;
@ -15,7 +16,6 @@ using osu.Framework.Input.Events;
using osu.Game.Beatmaps;
using osu.Game.Configuration;
using osu.Game.Graphics;
using osu.Game.Overlays;
using osu.Game.Rulesets.Edit;
using osuTK;
using osuTK.Input;
@ -42,9 +42,6 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
[Resolved]
private EditorBeatmap editorBeatmap { get; set; }
[Resolved]
private MusicController musicController { get; set; }
/// <summary>
/// The timeline's scroll position in the last frame.
/// </summary>
@ -94,6 +91,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
private double trackLengthForZoom;
private readonly IBindable<Track> track = new Bindable<Track>();
[BackgroundDependencyLoader]
private void load(IBindable<WorkingBeatmap> beatmap, OsuColour colours, OsuConfigManager config)
{
@ -141,7 +140,12 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
waveformOpacity = config.GetBindable<float>(OsuSetting.EditorWaveformOpacity);
musicController.TrackChanged += onTrackReload;
track.BindTo(editorClock.Track);
track.BindValueChanged(_ =>
{
waveform.Waveform = beatmap.Value.Waveform;
}, true);
waveform.Waveform = beatmap.Value.Waveform;
Zoom = (float)(defaultTimelineZoom * editorBeatmap.BeatmapInfo.TimelineZoom);
@ -180,11 +184,6 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
private void updateWaveformOpacity() =>
waveform.FadeTo(WaveformVisible.Value ? waveformOpacity.Value : 0, 200, Easing.OutQuint);
private void onTrackReload(WorkingBeatmap beatmap, TrackChangeDirection tcd)
{
waveform.Waveform = beatmap.Waveform;
}
protected override void Update()
{
base.Update();
@ -325,11 +324,5 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
double time = TimeAtPosition(Content.ToLocalSpace(screenSpacePosition).X);
return new SnapResult(screenSpacePosition, beatSnapProvider.SnapTime(time));
}
protected override void Dispose(bool isDisposing)
{
musicController.TrackChanged -= onTrackReload;
base.Dispose(isDisposing);
}
}
}

View File

@ -3,13 +3,13 @@
using System.Linq;
using osu.Framework.Allocation;
using osu.Framework.Audio.Track;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Input.Events;
using osu.Game.Beatmaps;
using osu.Game.Beatmaps.ControlPoints;
using osu.Game.Graphics;
using osu.Game.Graphics.UserInterface;
@ -30,8 +30,7 @@ namespace osu.Game.Screens.Edit.Timing
[Resolved]
private Bindable<ControlPointGroup> selectedGroup { get; set; } = null!;
[Resolved]
private MusicController musicController { get; set; } = null!;
private readonly IBindable<Track> track = new Bindable<Track>();
private readonly BindableBool isHandlingTapping = new BindableBool();
@ -39,7 +38,7 @@ namespace osu.Game.Screens.Edit.Timing
private Container<WaveformComparisonDisplay> waveformContainer = null!;
[BackgroundDependencyLoader]
private void load(OverlayColourProvider colourProvider, OsuColour colours)
private void load(OverlayColourProvider colourProvider, OsuColour colours, EditorClock clock)
{
const float padding = 10;
@ -189,12 +188,8 @@ namespace osu.Game.Screens.Edit.Timing
start();
}, true);
musicController.TrackChanged += onTrackReload;
}
private void onTrackReload(WorkingBeatmap beatmap, TrackChangeDirection tcd)
{
waveformContainer.Child = new WaveformComparisonDisplay();
track.BindTo(clock.Track);
track.ValueChanged += _ => waveformContainer.Child = new WaveformComparisonDisplay();
}
private void start()
@ -249,12 +244,6 @@ namespace osu.Game.Screens.Edit.Timing
timing.BeatLength = 60000 / (timing.BPM + adjust);
}
protected override void Dispose(bool isDisposing)
{
musicController.TrackChanged -= onTrackReload;
base.Dispose(isDisposing);
}
private partial class InlineButton : OsuButton
{
private readonly IconUsage icon;