private IEnumerable <Break> MakeBreaks(BreaksModel breakModel) { Break b = null; if (breakModel != null) { do { var minTime = b?.EndTime + breakModel.MinTimeBetweenBreaks ?? breakModel.MinTimeSinceStartOfTrack; var maxTime = minTime + (breakModel.MaxTimeBetweenBreaks - breakModel.MinTimeBetweenBreaks); var breakTime = minTime + (randomizer.GetRandom(0.5) * (maxTime - minTime)); var topLength = breakModel.MinLength + (randomizer.GetRandom(0.5) * (breakModel.MaxLength - breakModel.MinLength)); b = new Break(breakTime, topLength, breakModel.RampLength); yield return(b); } while (b.EndTime < settings.TrackLength); } }
public BreakApplier(SettingsCommon settings, BreaksModel breaksSettings, IGetRandom randomizer) { this.settings = settings; this.randomizer = randomizer; breaks = MakeBreaks(breaksSettings).ToArray(); }