diff --git a/osu.Game/Screens/Play/MasterGameplayClockContainer.cs b/osu.Game/Screens/Play/MasterGameplayClockContainer.cs
index 2f1ffa126f..57e67e6e26 100644
--- a/osu.Game/Screens/Play/MasterGameplayClockContainer.cs
+++ b/osu.Game/Screens/Play/MasterGameplayClockContainer.cs
@@ -24,7 +24,7 @@ namespace osu.Game.Screens.Play
///
/// This is intended to be used as a single controller for gameplay, or as a reference source for other s.
///
- public class MasterGameplayClockContainer : GameplayClockContainer, IBeatSyncProvider
+ public class MasterGameplayClockContainer : GameplayClockContainer, IBeatSyncProvider, IAdjustableAudioComponent
{
///
/// Duration before gameplay start time required before skip button displays.
@@ -41,6 +41,8 @@ namespace osu.Game.Screens.Play
private readonly WorkingBeatmap beatmap;
+ private readonly Track track;
+
private readonly double skipTargetTime;
private readonly List> nonGameplayAdjustments = new List>();
@@ -66,6 +68,7 @@ namespace osu.Game.Screens.Play
public MasterGameplayClockContainer(WorkingBeatmap beatmap, double skipTargetTime)
: base(beatmap.Track, true)
{
+ track = beatmap.Track;
this.beatmap = beatmap;
this.skipTargetTime = skipTargetTime;
@@ -195,9 +198,6 @@ namespace osu.Game.Screens.Play
if (speedAdjustmentsApplied)
return;
- if (SourceClock is not Track track)
- return;
-
track.AddAdjustment(AdjustableProperty.Frequency, GameplayClock.ExternalPauseFrequencyAdjust);
track.AddAdjustment(AdjustableProperty.Tempo, UserPlaybackRate);
@@ -212,9 +212,6 @@ namespace osu.Game.Screens.Play
if (!speedAdjustmentsApplied)
return;
- if (SourceClock is not Track track)
- return;
-
track.RemoveAdjustment(AdjustableProperty.Frequency, GameplayClock.ExternalPauseFrequencyAdjust);
track.RemoveAdjustment(AdjustableProperty.Tempo, UserPlaybackRate);
@@ -234,5 +231,29 @@ namespace osu.Game.Screens.Play
IClock IBeatSyncProvider.Clock => this;
ChannelAmplitudes IHasAmplitudes.CurrentAmplitudes => beatmap.TrackLoaded ? beatmap.Track.CurrentAmplitudes : ChannelAmplitudes.Empty;
+
+ void IAdjustableAudioComponent.AddAdjustment(AdjustableProperty type, IBindable adjustBindable) =>
+ track.AddAdjustment(type, adjustBindable);
+
+ void IAdjustableAudioComponent.RemoveAdjustment(AdjustableProperty type, IBindable adjustBindable) =>
+ track.RemoveAdjustment(type, adjustBindable);
+
+ public void RemoveAllAdjustments(AdjustableProperty type)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void BindAdjustments(IAggregateAudioAdjustment component) => throw new NotImplementedException();
+ public void UnbindAdjustments(IAggregateAudioAdjustment component) => throw new NotImplementedException();
+
+ public BindableNumber Volume => throw new NotImplementedException();
+ public BindableNumber Balance => throw new NotImplementedException();
+ public BindableNumber Frequency => throw new NotImplementedException();
+ public BindableNumber Tempo => throw new NotImplementedException();
+
+ public IBindable AggregateVolume => throw new NotImplementedException();
+ public IBindable AggregateBalance => throw new NotImplementedException();
+ public IBindable AggregateFrequency => throw new NotImplementedException();
+ public IBindable AggregateTempo => throw new NotImplementedException();
}
}