Beispiel #1
0
        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;
        }
Beispiel #2
0
        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;
        }