From d76681aa825ac01d17a45c393f09163ce3c3dce3 Mon Sep 17 00:00:00 2001 From: LeNitrous Date: Sat, 26 Jan 2019 13:39:23 +0800 Subject: [PATCH] use IApplicableToBeatmap instead of IApplicableToRulesetContainer --- osu.Game/Rulesets/Mods/ModWindUp.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/osu.Game/Rulesets/Mods/ModWindUp.cs b/osu.Game/Rulesets/Mods/ModWindUp.cs index 5deeff842b..d0cc9b419e 100644 --- a/osu.Game/Rulesets/Mods/ModWindUp.cs +++ b/osu.Game/Rulesets/Mods/ModWindUp.cs @@ -9,6 +9,7 @@ using osu.Game.Beatmaps; using osu.Game.Graphics; using osu.Game.Rulesets.UI; using osu.Game.Rulesets.Objects; +using osu.Game.Rulesets.Objects.Types; namespace osu.Game.Rulesets.Mods { @@ -24,10 +25,10 @@ namespace osu.Game.Rulesets.Mods public abstract double AppendRate { get; } } - public class ModWindUp : ModWindUp, IUpdatableByPlayfield, IApplicableToClock, IApplicableToRulesetContainer + public abstract class ModWindUp : ModWindUp, IUpdatableByPlayfield, IApplicableToClock, IApplicableToBeatmap where T : HitObject { - private Track Track; + private double LastObjectEndTime; private IAdjustableClock Clock; private IHasPitchAdjust ClockAdjust; public override double AppendRate => 0.5; @@ -38,14 +39,15 @@ namespace osu.Game.Rulesets.Mods ClockAdjust = clock as IHasPitchAdjust; } - public virtual void ApplyToRulesetContainer(RulesetContainer ruleset) + public virtual void ApplyToBeatmap(Beatmap beatmap) { - Track = ruleset.WorkingBeatmap.Track; + HitObject LastObject = beatmap.HitObjects[beatmap.HitObjects.Count - 1]; + LastObjectEndTime = (LastObject as IHasEndTime)?.EndTime ?? LastObject?.StartTime ?? 0; } public virtual void Update(Playfield playfield) { - double newRate = 1 + (AppendRate * (Track.CurrentTime / Track.Length)); + double newRate = 1 + (AppendRate * (Clock.CurrentTime / LastObjectEndTime)); Clock.Rate = newRate; ClockAdjust.PitchAdjust = newRate; }