public override IEnumerable <Issue> GetIssues(BeatmapSet beatmapSet) { beatmapSet.beatmaps.ForEach(beatmap => { var calculatedBeatmap = BeatmapDistanceCalculator.Calculate(beatmap); SetBeatmaps.TryRemove(beatmap.metadataSettings.version, out var catchObjects); SetBeatmaps.TryAdd(beatmap.metadataSettings.version, calculatedBeatmap); }); yield break; }
public override IEnumerable <Issue> GetIssues(Beatmap beatmap) { var count = 0; var catchObjects = beatmap.hitObjects; if (catchObjects == null || catchObjects.Count == 0) { yield break; } var startObject = catchObjects[0]; var issues = new List <Issue>(); for (var i = 1; i < catchObjects.Count; i++) { var currentObject = catchObjects[i]; // Parse hitobject types as we can't check flags var objectCodeArgs = currentObject.code.Split(','); var objectTypes = (Type)int.Parse(objectCodeArgs[3]); if (objectTypes.HasFlag(Type.NewCombo) || objectTypes.HasFlag(Type.Spinner)) { issues.AddIfNotNull(GetComboIssues(beatmap, startObject, count, ThresholdCup, Beatmap.Difficulty.Easy)); issues.AddIfNotNull(GetComboIssues(beatmap, startObject, count, ThresholdSalad, Beatmap.Difficulty.Normal)); issues.AddIfNotNull(GetComboIssues(beatmap, startObject, count, ThresholdPlatter, Beatmap.Difficulty.Hard)); issues.AddIfNotNull(GetComboIssues(beatmap, startObject, count, ThresholdRainAndOverdose, Beatmap.Difficulty.Insane, Beatmap.Difficulty.Expert, Beatmap.Difficulty.Ultra)); // Reset values for new combo startObject = currentObject; count = 1; } else { count++; if (currentObject is Slider currentSlider) { count += BeatmapDistanceCalculator.GetEdgeTimes(currentSlider).Count() + currentSlider.sliderTickTimes.Count; } } } // Check last combo of the map issues.AddIfNotNull(GetComboIssues(beatmap, startObject, count, ThresholdCup, Beatmap.Difficulty.Easy)); issues.AddIfNotNull(GetComboIssues(beatmap, startObject, count, ThresholdSalad, Beatmap.Difficulty.Normal)); issues.AddIfNotNull(GetComboIssues(beatmap, startObject, count, ThresholdPlatter, Beatmap.Difficulty.Hard)); issues.AddIfNotNull(GetComboIssues(beatmap, startObject, count, ThresholdRainAndOverdose, Beatmap.Difficulty.Insane, Beatmap.Difficulty.Expert, Beatmap.Difficulty.Ultra)); foreach (var issue in issues) { yield return(issue); } }
public override IEnumerable <Issue> GetIssues(BeatmapSet beatmapSet) { beatmapSet.beatmaps.ForEach(beatmap => { var calculatedBeatmap = BeatmapDistanceCalculator.Calculate(beatmap); var beatmapIdentifier = BeatmapUtil.GetBeatmapIdentifier(beatmap); CatchBeatmaps.TryRemove(beatmapIdentifier, out _); CatchBeatmaps.TryAdd(beatmapIdentifier, calculatedBeatmap); }); yield break; }