diff --git a/osu.Game.Rulesets.Taiko/Difficulty/Preprocessing/TaikoDifficultyHitObject.cs b/osu.Game.Rulesets.Taiko/Difficulty/Preprocessing/TaikoDifficultyHitObject.cs
index 54e314f722..1da4a6e994 100644
--- a/osu.Game.Rulesets.Taiko/Difficulty/Preprocessing/TaikoDifficultyHitObject.cs
+++ b/osu.Game.Rulesets.Taiko/Difficulty/Preprocessing/TaikoDifficultyHitObject.cs
@@ -37,6 +37,36 @@ namespace osu.Game.Rulesets.Taiko.Difficulty.Preprocessing
///
public readonly HitType? HitType;
+ ///
+ /// Creates a list of s from a s.
+ /// TODO: Review this - this is moved here from TaikoDifficultyCalculator so that TaikoDifficultyCalculator can
+ /// have less knowledge of implementation details (i.e. creating all the different hitObject lists, and
+ /// calling FindRepetitionInterval for the final object). The down side of this is
+ /// TaikoDifficultyHitObejct.CreateDifficultyHitObjects is now pretty much a proxy for this.
+ ///
+ /// The beatmap from which the list of is created.
+ /// The rate at which the gameplay clock is run at.
+ public static List Create(IBeatmap beatmap, double clockRate)
+ {
+ List difficultyHitObject = new List();
+ List centreObjects = new List();
+ List rimObjects = new List();
+ List noteObjects = new List();
+
+ for (int i = 2; i < beatmap.HitObjects.Count; i++)
+ {
+ difficultyHitObject.Add(
+ new TaikoDifficultyHitObject(
+ beatmap.HitObjects[i], beatmap.HitObjects[i - 1], beatmap.HitObjects[i - 2], clockRate, difficultyHitObject,
+ centreObjects, rimObjects, noteObjects, difficultyHitObject.Count)
+ );
+ }
+
+ // Find repetition interval for the final TaikoDifficultyHitObjectColour
+ ((TaikoDifficultyHitObject)difficultyHitObject.Last()).Colour?.FindRepetitionInterval();
+ return difficultyHitObject;
+ }
+
///
/// Creates a new difficulty hit object.
///
@@ -52,7 +82,7 @@ namespace osu.Game.Rulesets.Taiko.Difficulty.Preprocessing
///
/// TODO: This argument list is getting long, we might want to refactor this into a static method that create
/// all s from a .
- public TaikoDifficultyHitObject(HitObject hitObject, HitObject lastObject, HitObject lastLastObject, double clockRate,
+ private TaikoDifficultyHitObject(HitObject hitObject, HitObject lastObject, HitObject lastLastObject, double clockRate,
List objects,
List centreHitObjects,
List rimHitObjects,
diff --git a/osu.Game.Rulesets.Taiko/Difficulty/TaikoDifficultyCalculator.cs b/osu.Game.Rulesets.Taiko/Difficulty/TaikoDifficultyCalculator.cs
index 91ae1c4ed2..7898b7994e 100644
--- a/osu.Game.Rulesets.Taiko/Difficulty/TaikoDifficultyCalculator.cs
+++ b/osu.Game.Rulesets.Taiko/Difficulty/TaikoDifficultyCalculator.cs
@@ -45,24 +45,7 @@ namespace osu.Game.Rulesets.Taiko.Difficulty
protected override IEnumerable CreateDifficultyHitObjects(IBeatmap beatmap, double clockRate)
{
- List difficultyHitObject = new List();
- List centreObjects = new List();
- List rimObjects = new List();
- List noteObjects = new List();
-
- for (int i = 2; i < beatmap.HitObjects.Count; i++)
- {
- difficultyHitObject.Add(
- new TaikoDifficultyHitObject(
- beatmap.HitObjects[i], beatmap.HitObjects[i - 1], beatmap.HitObjects[i - 2], clockRate, difficultyHitObject,
- centreObjects, rimObjects, noteObjects, difficultyHitObject.Count)
- );
- }
-
- // Find repetition interval for the final TaikoDifficultyHitObjectColour
- // TODO: Might be a good idea to refactor this
- ((TaikoDifficultyHitObject)difficultyHitObject.Last()).Colour?.FindRepetitionInterval();
- return difficultyHitObject;
+ return TaikoDifficultyHitObject.Create(beatmap, clockRate);
}
protected override DifficultyAttributes CreateDifficultyAttributes(IBeatmap beatmap, Mod[] mods, Skill[] skills, double clockRate)