mirror of
https://github.com/osukey/osukey.git
synced 2025-08-03 14:46:38 +09:00
Merge pull request #19973 from peppy/no-gameplay-clock-beat-synced-container
Fix beat synced components not applying offsets
This commit is contained in:
@ -185,6 +185,12 @@ namespace osu.Game
|
||||
|
||||
private RealmAccess realm;
|
||||
|
||||
/// <summary>
|
||||
/// For now, this is used as a source specifically for beat synced components.
|
||||
/// Going forward, it could potentially be used as the single source-of-truth for beatmap timing.
|
||||
/// </summary>
|
||||
private readonly FramedBeatmapClock beatmapClock = new FramedBeatmapClock(true);
|
||||
|
||||
protected override Container<Drawable> Content => content;
|
||||
|
||||
private Container content;
|
||||
@ -368,10 +374,24 @@ namespace osu.Game
|
||||
AddInternal(MusicController = new MusicController());
|
||||
dependencies.CacheAs(MusicController);
|
||||
|
||||
MusicController.TrackChanged += onTrackChanged;
|
||||
AddInternal(beatmapClock);
|
||||
|
||||
Ruleset.BindValueChanged(onRulesetChanged);
|
||||
Beatmap.BindValueChanged(onBeatmapChanged);
|
||||
}
|
||||
|
||||
private void onTrackChanged(WorkingBeatmap beatmap, TrackChangeDirection direction)
|
||||
{
|
||||
// FramedBeatmapClock uses a decoupled clock internally which will mutate the source if it is an `IAdjustableClock`.
|
||||
// We don't want this for now, as the intention of beatmapClock is to be a read-only source for beat sync components.
|
||||
//
|
||||
// Encapsulating in a FramedClock will avoid any mutations.
|
||||
var framedClock = new FramedClock(beatmap.Track);
|
||||
|
||||
beatmapClock.ChangeSource(framedClock);
|
||||
}
|
||||
|
||||
protected virtual void InitialiseFonts()
|
||||
{
|
||||
AddFont(Resources, @"Fonts/osuFont");
|
||||
@ -587,7 +607,7 @@ namespace osu.Game
|
||||
}
|
||||
|
||||
ControlPointInfo IBeatSyncProvider.ControlPoints => Beatmap.Value.BeatmapLoaded ? Beatmap.Value.Beatmap.ControlPointInfo : null;
|
||||
IClock IBeatSyncProvider.Clock => Beatmap.Value.TrackLoaded ? Beatmap.Value.Track : (IClock)null;
|
||||
IClock IBeatSyncProvider.Clock => beatmapClock;
|
||||
ChannelAmplitudes IHasAmplitudes.CurrentAmplitudes => Beatmap.Value.TrackLoaded ? Beatmap.Value.Track.CurrentAmplitudes : ChannelAmplitudes.Empty;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user