1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-06 04:12:55 +08:00

Rewrite storyboard clock management in slightly different way

This commit is contained in:
Bartłomiej Dach 2022-01-11 22:00:04 +01:00
parent 970e0cc85a
commit 76d5225bb9
No known key found for this signature in database
GPG Key ID: BCECCD4FA41F6497

View File

@ -15,7 +15,7 @@ namespace osu.Game.Graphics.Backgrounds
{ {
public class BeatmapBackgroundWithStoryboard : BeatmapBackground public class BeatmapBackgroundWithStoryboard : BeatmapBackground
{ {
private InterpolatingFramedClock storyboardClock = null!; private readonly InterpolatingFramedClock storyboardClock;
[Resolved(CanBeNull = true)] [Resolved(CanBeNull = true)]
private MusicController? musicController { get; set; } private MusicController? musicController { get; set; }
@ -23,6 +23,7 @@ namespace osu.Game.Graphics.Backgrounds
public BeatmapBackgroundWithStoryboard(WorkingBeatmap beatmap, string fallbackTextureName = "Backgrounds/bg1") public BeatmapBackgroundWithStoryboard(WorkingBeatmap beatmap, string fallbackTextureName = "Backgrounds/bg1")
: base(beatmap, fallbackTextureName) : base(beatmap, fallbackTextureName)
{ {
storyboardClock = new InterpolatingFramedClock();
} }
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
@ -38,7 +39,7 @@ namespace osu.Game.Graphics.Backgrounds
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
Volume = { Value = 0 }, Volume = { Value = 0 },
Child = new DrawableStoryboard(Beatmap.Storyboard) { Clock = storyboardClock = new InterpolatingFramedClock(Beatmap.Track) } Child = new DrawableStoryboard(Beatmap.Storyboard) { Clock = storyboardClock }
}, AddInternal); }, AddInternal);
} }
@ -47,9 +48,13 @@ namespace osu.Game.Graphics.Backgrounds
base.LoadComplete(); base.LoadComplete();
if (musicController != null) if (musicController != null)
musicController.TrackChanged += onTrackChanged; musicController.TrackChanged += onTrackChanged;
updateStoryboardClockSource(Beatmap);
} }
private void onTrackChanged(WorkingBeatmap newBeatmap, TrackChangeDirection _) private void onTrackChanged(WorkingBeatmap newBeatmap, TrackChangeDirection _) => updateStoryboardClockSource(newBeatmap);
private void updateStoryboardClockSource(WorkingBeatmap newBeatmap)
{ {
if (newBeatmap != Beatmap) if (newBeatmap != Beatmap)
return; return;