mirror of
https://github.com/osukey/osukey.git
synced 2025-08-06 16:13:57 +09:00
Tween track frequency on pause
This commit is contained in:
@ -69,6 +69,7 @@ namespace osu.Game.Screens.Play
|
|||||||
RelativeSizeAxes = Axes.Both;
|
RelativeSizeAxes = Axes.Both;
|
||||||
|
|
||||||
sourceClock = (IAdjustableClock)beatmap.Track ?? new StopwatchClock();
|
sourceClock = (IAdjustableClock)beatmap.Track ?? new StopwatchClock();
|
||||||
|
(sourceClock as IAdjustableAudioComponent)?.AddAdjustment(AdjustableProperty.Frequency, pauseFreqAdjust);
|
||||||
|
|
||||||
adjustableClock = new DecoupleableInterpolatingFramedClock { IsCoupled = false };
|
adjustableClock = new DecoupleableInterpolatingFramedClock { IsCoupled = false };
|
||||||
|
|
||||||
@ -85,8 +86,16 @@ namespace osu.Game.Screens.Play
|
|||||||
GameplayClock.IsPaused.BindTo(IsPaused);
|
GameplayClock.IsPaused.BindTo(IsPaused);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void Dispose(bool isDisposing)
|
||||||
|
{
|
||||||
|
base.Dispose(isDisposing);
|
||||||
|
(sourceClock as IAdjustableAudioComponent)?.RemoveAdjustment(AdjustableProperty.Frequency, pauseFreqAdjust);
|
||||||
|
}
|
||||||
|
|
||||||
private double totalOffset => userOffsetClock.Offset + platformOffsetClock.Offset;
|
private double totalOffset => userOffsetClock.Offset + platformOffsetClock.Offset;
|
||||||
|
|
||||||
|
private readonly BindableDouble pauseFreqAdjust = new BindableDouble(1);
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OsuConfigManager config)
|
private void load(OsuConfigManager config)
|
||||||
{
|
{
|
||||||
@ -122,6 +131,8 @@ namespace osu.Game.Screens.Play
|
|||||||
Seek(GameplayClock.CurrentTime);
|
Seek(GameplayClock.CurrentTime);
|
||||||
adjustableClock.Start();
|
adjustableClock.Start();
|
||||||
IsPaused.Value = false;
|
IsPaused.Value = false;
|
||||||
|
|
||||||
|
this.TransformBindableTo(pauseFreqAdjust, 1, 200, Easing.In);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -143,7 +154,8 @@ namespace osu.Game.Screens.Play
|
|||||||
|
|
||||||
public void Stop()
|
public void Stop()
|
||||||
{
|
{
|
||||||
adjustableClock.Stop();
|
this.TransformBindableTo(pauseFreqAdjust, 0, 200, Easing.Out).OnComplete(_ => { adjustableClock.Stop(); });
|
||||||
|
|
||||||
IsPaused.Value = true;
|
IsPaused.Value = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user