diff --git a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs
index 262f1c67ed..be670936fd 100644
--- a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs
+++ b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs
@@ -34,6 +34,8 @@ namespace osu.Game.Rulesets.Mania.Beatmaps
public ManiaBeatmapConverter(bool isForCurrentRuleset, int availableColumns)
{
+ if (availableColumns <= 0) throw new ArgumentOutOfRangeException(nameof(availableColumns));
+
this.isForCurrentRuleset = isForCurrentRuleset;
this.availableColumns = availableColumns;
}
diff --git a/osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/HitObjectPatternGenerator.cs b/osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/HitObjectPatternGenerator.cs
index 0716671da3..077b926635 100644
--- a/osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/HitObjectPatternGenerator.cs
+++ b/osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/HitObjectPatternGenerator.cs
@@ -23,6 +23,9 @@ namespace osu.Game.Rulesets.Mania.Beatmaps.Patterns.Legacy
public HitObjectPatternGenerator(FastRandom random, HitObject hitObject, Beatmap beatmap, int availableColumns, Pattern previousPattern, double previousTime, Vector2 previousPosition, double density, PatternType lastStair)
: base(random, hitObject, beatmap, availableColumns, previousPattern)
{
+ if (previousTime > hitObject.StartTime) throw new ArgumentOutOfRangeException(nameof(previousTime));
+ if (density < 0) throw new ArgumentOutOfRangeException(nameof(density));
+
StairType = lastStair;
TimingControlPoint timingPoint = beatmap.ControlPointInfo.TimingPointAt(hitObject.StartTime);
diff --git a/osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/PatternGenerator.cs b/osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/PatternGenerator.cs
index d1b962bdd4..a3173f9784 100644
--- a/osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/PatternGenerator.cs
+++ b/osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/PatternGenerator.cs
@@ -28,8 +28,12 @@ namespace osu.Game.Rulesets.Mania.Beatmaps.Patterns.Legacy
protected PatternGenerator(FastRandom random, HitObject hitObject, Beatmap beatmap, int availableColumns, Pattern previousPattern)
: base(hitObject, beatmap, availableColumns, previousPattern)
{
- Random = random;
+ if (random == null) throw new ArgumentNullException(nameof(random));
+ if (beatmap == null) throw new ArgumentNullException(nameof(beatmap));
+ if (availableColumns <= 0) throw new ArgumentOutOfRangeException(nameof(availableColumns));
+ if (previousPattern == null) throw new ArgumentNullException(nameof(previousPattern));
+ Random = random;
RandomStart = AvailableColumns == 8 ? 1 : 0;
}
@@ -62,6 +66,12 @@ namespace osu.Game.Rulesets.Mania.Beatmaps.Patterns.Legacy
/// The amount of notes to be generated.
protected int GetRandomNoteCount(double p2, double p3, double p4 = 0, double p5 = 0, double p6 = 0)
{
+ if (p2 < 0 || p2 > 1) throw new ArgumentOutOfRangeException(nameof(p2));
+ if (p3 < 0 || p3 > 1) throw new ArgumentOutOfRangeException(nameof(p3));
+ if (p4 < 0 || p4 > 1) throw new ArgumentOutOfRangeException(nameof(p4));
+ if (p5 < 0 || p5 > 1) throw new ArgumentOutOfRangeException(nameof(p5));
+ if (p6 < 0 || p6 > 1) throw new ArgumentOutOfRangeException(nameof(p6));
+
double val = Random.NextDouble();
if (val >= 1 - p6)
return 6;
diff --git a/osu.Game.Rulesets.Mania/Beatmaps/Patterns/PatternGenerator.cs b/osu.Game.Rulesets.Mania/Beatmaps/Patterns/PatternGenerator.cs
index 4fe100df23..ef321232c8 100644
--- a/osu.Game.Rulesets.Mania/Beatmaps/Patterns/PatternGenerator.cs
+++ b/osu.Game.Rulesets.Mania/Beatmaps/Patterns/PatternGenerator.cs
@@ -1,6 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+using System;
using osu.Game.Beatmaps;
using osu.Game.Rulesets.Objects;
@@ -33,6 +34,11 @@ namespace osu.Game.Rulesets.Mania.Beatmaps.Patterns
protected PatternGenerator(HitObject hitObject, Beatmap beatmap, int availableColumns, Pattern previousPattern)
{
+ if (hitObject == null) throw new ArgumentNullException(nameof(hitObject));
+ if (beatmap == null) throw new ArgumentNullException(nameof(beatmap));
+ if (availableColumns <= 0) throw new ArgumentOutOfRangeException(nameof(availableColumns));
+ if (previousPattern == null) throw new ArgumentNullException(nameof(previousPattern));
+
HitObject = hitObject;
Beatmap = beatmap;
AvailableColumns = availableColumns;