diff --git a/osu.Desktop.Tests/osu.Desktop.Tests.csproj b/osu.Desktop.Tests/osu.Desktop.Tests.csproj
index 8afd632bd1..f0620c98ef 100644
--- a/osu.Desktop.Tests/osu.Desktop.Tests.csproj
+++ b/osu.Desktop.Tests/osu.Desktop.Tests.csproj
@@ -75,21 +75,21 @@
{69051C69-12AE-4E7D-A3E6-460D2E282312}
osu.Desktop.VisualTests
-
+
{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}
- osu.Game.Modes.Catch
+ osu.Game.Rulesets.Catch
-
+
{48F4582B-7687-4621-9CBE-5C24197CB536}
- osu.Game.Modes.Mania
+ osu.Game.Rulesets.Mania
-
+
{C92A607B-1FDD-4954-9F92-03FF547D9080}
- osu.Game.Modes.Osu
+ osu.Game.Rulesets.Osu
-
+
{F167E17A-7DE6-4AF5-B920-A5112296C695}
- osu.Game.Modes.Taiko
+ osu.Game.Rulesets.Taiko
{0D3FBF8A-7464-4CF7-8C90-3E7886DF2D4D}
diff --git a/osu.Desktop.VisualTests/Tests/TestCaseGamefield.cs b/osu.Desktop.VisualTests/Tests/TestCaseGamefield.cs
index d1519d0404..cb15558ec3 100644
--- a/osu.Desktop.VisualTests/Tests/TestCaseGamefield.cs
+++ b/osu.Desktop.VisualTests/Tests/TestCaseGamefield.cs
@@ -9,12 +9,12 @@ using osu.Framework.Testing;
using osu.Framework.Timing;
using osu.Game.Beatmaps;
using osu.Game.Database;
-using osu.Game.Modes.Catch.UI;
-using osu.Game.Modes.Mania.UI;
-using osu.Game.Modes.Objects;
-using osu.Game.Modes.Osu.Objects;
-using osu.Game.Modes.Osu.UI;
-using osu.Game.Modes.Taiko.UI;
+using osu.Game.Rulesets.Catch.UI;
+using osu.Game.Rulesets.Mania.UI;
+using osu.Game.Rulesets.Objects;
+using osu.Game.Rulesets.Osu.Objects;
+using osu.Game.Rulesets.Osu.UI;
+using osu.Game.Rulesets.Taiko.UI;
using System.Collections.Generic;
using osu.Desktop.VisualTests.Beatmaps;
using osu.Framework.Allocation;
@@ -45,7 +45,7 @@ namespace osu.Desktop.VisualTests.Tests
objects.Add(new HitCircle
{
StartTime = time,
- Position = new Vector2(RNG.Next(0, 512), RNG.Next(0, 384)),
+ Position = new Vector2(RNG.Next(0, (int)OsuPlayfield.BASE_SIZE.X), RNG.Next(0, (int)OsuPlayfield.BASE_SIZE.Y)),
Scale = RNG.NextSingle(0.5f, 1.0f),
});
diff --git a/osu.Desktop.VisualTests/Tests/TestCaseHitObjects.cs b/osu.Desktop.VisualTests/Tests/TestCaseHitObjects.cs
index 3d9f3aad79..15b38b3e83 100644
--- a/osu.Desktop.VisualTests/Tests/TestCaseHitObjects.cs
+++ b/osu.Desktop.VisualTests/Tests/TestCaseHitObjects.cs
@@ -10,11 +10,11 @@ using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.UserInterface;
using osu.Framework.Testing;
using osu.Framework.Timing;
-using osu.Game.Modes.Objects;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Osu.Judgements;
-using osu.Game.Modes.Osu.Objects;
-using osu.Game.Modes.Osu.Objects.Drawables;
+using osu.Game.Rulesets.Objects;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Osu.Judgements;
+using osu.Game.Rulesets.Osu.Objects;
+using osu.Game.Rulesets.Osu.Objects.Drawables;
using System.Collections.Generic;
namespace osu.Desktop.VisualTests.Tests
diff --git a/osu.Desktop.VisualTests/Tests/TestCaseLeaderboard.cs b/osu.Desktop.VisualTests/Tests/TestCaseLeaderboard.cs
index 44e52c237e..39010baf91 100644
--- a/osu.Desktop.VisualTests/Tests/TestCaseLeaderboard.cs
+++ b/osu.Desktop.VisualTests/Tests/TestCaseLeaderboard.cs
@@ -4,9 +4,9 @@
using OpenTK;
using osu.Framework.Graphics;
using osu.Framework.Testing;
-using osu.Game.Modes.Mods;
-using osu.Game.Modes.Osu.Mods;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Mods;
+using osu.Game.Rulesets.Osu.Mods;
+using osu.Game.Rulesets.Scoring;
using osu.Game.Screens.Select.Leaderboards;
using osu.Game.Users;
diff --git a/osu.Desktop.VisualTests/Tests/TestCasePlayer.cs b/osu.Desktop.VisualTests/Tests/TestCasePlayer.cs
index 8e19419dbb..f28cdd6a7e 100644
--- a/osu.Desktop.VisualTests/Tests/TestCasePlayer.cs
+++ b/osu.Desktop.VisualTests/Tests/TestCasePlayer.cs
@@ -9,11 +9,12 @@ using osu.Game.Beatmaps;
using OpenTK;
using osu.Framework.Graphics.Sprites;
using osu.Game.Database;
-using osu.Game.Modes.Objects;
-using osu.Game.Modes.Osu.Objects;
+using osu.Game.Rulesets.Objects;
+using osu.Game.Rulesets.Osu.Objects;
using osu.Game.Screens.Play;
using OpenTK.Graphics;
using osu.Desktop.VisualTests.Beatmaps;
+using osu.Game.Rulesets.Osu.UI;
namespace osu.Desktop.VisualTests.Tests
{
@@ -52,8 +53,8 @@ namespace osu.Desktop.VisualTests.Tests
objects.Add(new HitCircle
{
StartTime = time,
- Position = new Vector2(i % 4 == 0 || i % 4 == 2 ? 0 : 512,
- i % 4 < 2 ? 0 : 384),
+ Position = new Vector2(i % 4 == 0 || i % 4 == 2 ? 0 : OsuPlayfield.BASE_SIZE.X,
+ i % 4 < 2 ? 0 : OsuPlayfield.BASE_SIZE.Y),
NewCombo = i % 4 == 0
});
diff --git a/osu.Desktop.VisualTests/Tests/TestCaseReplay.cs b/osu.Desktop.VisualTests/Tests/TestCaseReplay.cs
index ffdca25bb3..e00a912278 100644
--- a/osu.Desktop.VisualTests/Tests/TestCaseReplay.cs
+++ b/osu.Desktop.VisualTests/Tests/TestCaseReplay.cs
@@ -2,8 +2,8 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Game.Beatmaps;
-using osu.Game.Modes.Mods;
-using osu.Game.Modes.Osu.Mods;
+using osu.Game.Rulesets.Mods;
+using osu.Game.Rulesets.Osu.Mods;
using osu.Game.Screens.Play;
namespace osu.Desktop.VisualTests.Tests
diff --git a/osu.Desktop.VisualTests/Tests/TestCaseScoreCounter.cs b/osu.Desktop.VisualTests/Tests/TestCaseScoreCounter.cs
index f3cca16678..d8dac63980 100644
--- a/osu.Desktop.VisualTests/Tests/TestCaseScoreCounter.cs
+++ b/osu.Desktop.VisualTests/Tests/TestCaseScoreCounter.cs
@@ -8,7 +8,7 @@ using osu.Framework.Graphics.Sprites;
using osu.Framework.MathUtils;
using osu.Framework.Testing;
using osu.Game.Graphics.UserInterface;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.UI;
namespace osu.Desktop.VisualTests.Tests
{
diff --git a/osu.Desktop.VisualTests/Tests/TestCaseSongProgress.cs b/osu.Desktop.VisualTests/Tests/TestCaseSongProgress.cs
index 363b0b481e..a75d70acaf 100644
--- a/osu.Desktop.VisualTests/Tests/TestCaseSongProgress.cs
+++ b/osu.Desktop.VisualTests/Tests/TestCaseSongProgress.cs
@@ -6,7 +6,7 @@ using osu.Framework.Graphics;
using osu.Framework.MathUtils;
using osu.Framework.Testing;
using osu.Framework.Timing;
-using osu.Game.Modes.Objects;
+using osu.Game.Rulesets.Objects;
using osu.Game.Screens.Play;
namespace osu.Desktop.VisualTests.Tests
diff --git a/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs b/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs
index b3cb8c3457..d769071bd9 100644
--- a/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs
+++ b/osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs
@@ -6,7 +6,7 @@ using OpenTK;
using OpenTK.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Testing;
-using osu.Game.Modes.Taiko.Objects.Drawables.Pieces;
+using osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces;
namespace osu.Desktop.VisualTests.Tests
{
diff --git a/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs b/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs
index 4e9ff4980e..259d0267db 100644
--- a/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs
+++ b/osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs
@@ -7,11 +7,11 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.MathUtils;
using osu.Framework.Testing;
using osu.Framework.Timing;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Taiko.Judgements;
-using osu.Game.Modes.Taiko.Objects;
-using osu.Game.Modes.Taiko.Objects.Drawables;
-using osu.Game.Modes.Taiko.UI;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Taiko.Judgements;
+using osu.Game.Rulesets.Taiko.Objects;
+using osu.Game.Rulesets.Taiko.Objects.Drawables;
+using osu.Game.Rulesets.Taiko.UI;
using System;
namespace osu.Desktop.VisualTests.Tests
diff --git a/osu.Desktop.VisualTests/osu.Desktop.VisualTests.csproj b/osu.Desktop.VisualTests/osu.Desktop.VisualTests.csproj
index 4fc0a93fb4..80b18c4a9b 100644
--- a/osu.Desktop.VisualTests/osu.Desktop.VisualTests.csproj
+++ b/osu.Desktop.VisualTests/osu.Desktop.VisualTests.csproj
@@ -161,21 +161,21 @@
{d9a367c9-4c1a-489f-9b05-a0cea2b53b58}
osu.Game.Resources
-
+
{c92a607b-1fdd-4954-9f92-03ff547d9080}
- osu.Game.Modes.Osu
+ osu.Game.Rulesets.Osu
-
+
{58f6c80c-1253-4a0e-a465-b8c85ebeadf3}
- osu.Game.Modes.Catch
+ osu.Game.Rulesets.Catch
-
+
{48f4582b-7687-4621-9cbe-5c24197cb536}
- osu.Game.Modes.Mania
+ osu.Game.Rulesets.Mania
-
+
{f167e17a-7de6-4af5-b920-a5112296c695}
- osu.Game.Modes.Taiko
+ osu.Game.Rulesets.Taiko
{0d3fbf8a-7464-4cf7-8c90-3e7886df2d4d}
diff --git a/osu.Desktop/osu.Desktop.csproj b/osu.Desktop/osu.Desktop.csproj
index 553dff6c6f..4f66dfd3eb 100644
--- a/osu.Desktop/osu.Desktop.csproj
+++ b/osu.Desktop/osu.Desktop.csproj
@@ -198,21 +198,21 @@
{d9a367c9-4c1a-489f-9b05-a0cea2b53b58}
osu.Game.Resources
-
+
{c92a607b-1fdd-4954-9f92-03ff547d9080}
- osu.Game.Modes.Osu
+ osu.Game.Rulesets.Osu
-
+
{58f6c80c-1253-4a0e-a465-b8c85ebeadf3}
- osu.Game.Modes.Catch
+ osu.Game.Rulesets.Catch
-
+
{48f4582b-7687-4621-9cbe-5c24197cb536}
- osu.Game.Modes.Mania
+ osu.Game.Rulesets.Mania
-
+
{f167e17a-7de6-4af5-b920-a5112296c695}
- osu.Game.Modes.Taiko
+ osu.Game.Rulesets.Taiko
{0d3fbf8a-7464-4cf7-8c90-3e7886df2d4d}
diff --git a/osu.Game.Modes.Catch/Beatmaps/CatchBeatmapConverter.cs b/osu.Game.Modes.Catch/Beatmaps/CatchBeatmapConverter.cs
deleted file mode 100644
index 9791554f02..0000000000
--- a/osu.Game.Modes.Catch/Beatmaps/CatchBeatmapConverter.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2007-2017 ppy Pty Ltd .
-// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-
-using osu.Game.Beatmaps;
-using osu.Game.Modes.Catch.Objects;
-using System.Collections.Generic;
-
-namespace osu.Game.Modes.Catch.Beatmaps
-{
- internal class CatchBeatmapConverter : IBeatmapConverter
- {
- public Beatmap Convert(Beatmap original)
- {
- return new Beatmap(original)
- {
- HitObjects = new List() // Todo: Convert HitObjects
- };
- }
- }
-}
diff --git a/osu.Game.Modes.Catch/Beatmaps/CatchBeatmapProcessor.cs b/osu.Game.Modes.Catch/Beatmaps/CatchBeatmapProcessor.cs
deleted file mode 100644
index ef585e2675..0000000000
--- a/osu.Game.Modes.Catch/Beatmaps/CatchBeatmapProcessor.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2007-2017 ppy Pty Ltd .
-// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-
-using osu.Game.Beatmaps;
-using osu.Game.Modes.Catch.Objects;
-
-namespace osu.Game.Modes.Catch.Beatmaps
-{
- internal class CatchBeatmapProcessor : IBeatmapProcessor
- {
- public void SetDefaults(CatchBaseHit hitObject, Beatmap beatmap)
- {
- }
-
- public void PostProcess(Beatmap beatmap)
- {
- }
- }
-}
diff --git a/osu.Game.Modes.Mania/Beatmaps/ManiaBeatmapConverter.cs b/osu.Game.Modes.Mania/Beatmaps/ManiaBeatmapConverter.cs
deleted file mode 100644
index 3ff210c1cc..0000000000
--- a/osu.Game.Modes.Mania/Beatmaps/ManiaBeatmapConverter.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2007-2017 ppy Pty Ltd .
-// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-
-using osu.Game.Beatmaps;
-using osu.Game.Modes.Mania.Objects;
-using System.Collections.Generic;
-
-namespace osu.Game.Modes.Mania.Beatmaps
-{
- internal class ManiaBeatmapConverter : IBeatmapConverter
- {
- public Beatmap Convert(Beatmap original)
- {
- return new Beatmap(original)
- {
- HitObjects = new List() // Todo: Implement
- };
- }
- }
-}
diff --git a/osu.Game.Modes.Mania/Beatmaps/ManiaBeatmapProcessor.cs b/osu.Game.Modes.Mania/Beatmaps/ManiaBeatmapProcessor.cs
deleted file mode 100644
index 5e85a8f864..0000000000
--- a/osu.Game.Modes.Mania/Beatmaps/ManiaBeatmapProcessor.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2007-2017 ppy Pty Ltd .
-// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-
-using osu.Game.Beatmaps;
-using osu.Game.Modes.Mania.Objects;
-
-namespace osu.Game.Modes.Mania.Beatmaps
-{
- internal class ManiaBeatmapProcessor : IBeatmapProcessor
- {
- public void SetDefaults(ManiaBaseHit hitObject, Beatmap beatmap)
- {
- }
-
- public void PostProcess(Beatmap beatmap)
- {
- }
- }
-}
diff --git a/osu.Game.Modes.Osu/Beatmaps/OsuBeatmapProcessor.cs b/osu.Game.Modes.Osu/Beatmaps/OsuBeatmapProcessor.cs
deleted file mode 100644
index 08c9d94141..0000000000
--- a/osu.Game.Modes.Osu/Beatmaps/OsuBeatmapProcessor.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2007-2017 ppy Pty Ltd .
-// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-
-using osu.Game.Beatmaps;
-using osu.Game.Modes.Osu.Objects;
-
-namespace osu.Game.Modes.Osu.Beatmaps
-{
- internal class OsuBeatmapProcessor : IBeatmapProcessor
- {
- public void PostProcess(Beatmap beatmap)
- {
- if (beatmap.ComboColors.Count == 0)
- return;
-
- int comboIndex = 0;
- int colourIndex = 0;
-
- foreach (var obj in beatmap.HitObjects)
- {
- if (obj.NewCombo)
- {
- comboIndex = 0;
- colourIndex = (colourIndex + 1) % beatmap.ComboColors.Count;
- }
-
- obj.ComboIndex = comboIndex++;
- obj.ComboColour = beatmap.ComboColors[colourIndex];
- }
- }
- }
-}
diff --git a/osu.Game.Modes.Taiko/Beatmaps/TaikoBeatmapProcessor.cs b/osu.Game.Modes.Taiko/Beatmaps/TaikoBeatmapProcessor.cs
deleted file mode 100644
index 84bc470e55..0000000000
--- a/osu.Game.Modes.Taiko/Beatmaps/TaikoBeatmapProcessor.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2007-2017 ppy Pty Ltd .
-// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-
-using osu.Game.Beatmaps;
-using osu.Game.Modes.Taiko.Objects;
-
-namespace osu.Game.Modes.Taiko.Beatmaps
-{
- internal class TaikoBeatmapProcessor : IBeatmapProcessor
- {
- public void SetDefaults(TaikoHitObject hitObject, Beatmap beatmap)
- {
- }
-
- public void PostProcess(Beatmap beatmap)
- {
- }
- }
-}
diff --git a/osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs b/osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs
new file mode 100644
index 0000000000..f9859cd244
--- /dev/null
+++ b/osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs
@@ -0,0 +1,23 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using osu.Game.Beatmaps;
+using osu.Game.Rulesets.Catch.Objects;
+using System.Collections.Generic;
+using System;
+using osu.Game.Rulesets.Objects.Types;
+using osu.Game.Rulesets.Beatmaps;
+using osu.Game.Rulesets.Objects;
+
+namespace osu.Game.Rulesets.Catch.Beatmaps
+{
+ internal class CatchBeatmapConverter : BeatmapConverter
+ {
+ protected override IEnumerable ValidConversionTypes { get; } = new[] { typeof(IHasXPosition) };
+
+ protected override IEnumerable ConvertHitObject(HitObject original, Beatmap beatmap)
+ {
+ yield return null;
+ }
+ }
+}
diff --git a/osu.Game.Modes.Catch/CatchDifficultyCalculator.cs b/osu.Game.Rulesets.Catch/CatchDifficultyCalculator.cs
similarity index 65%
rename from osu.Game.Modes.Catch/CatchDifficultyCalculator.cs
rename to osu.Game.Rulesets.Catch/CatchDifficultyCalculator.cs
index 53c6f5c2ce..a865299cff 100644
--- a/osu.Game.Modes.Catch/CatchDifficultyCalculator.cs
+++ b/osu.Game.Rulesets.Catch/CatchDifficultyCalculator.cs
@@ -2,11 +2,12 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Game.Beatmaps;
-using osu.Game.Modes.Catch.Beatmaps;
-using osu.Game.Modes.Catch.Objects;
+using osu.Game.Rulesets.Beatmaps;
+using osu.Game.Rulesets.Catch.Beatmaps;
+using osu.Game.Rulesets.Catch.Objects;
using System.Collections.Generic;
-namespace osu.Game.Modes.Catch
+namespace osu.Game.Rulesets.Catch
{
public class CatchDifficultyCalculator : DifficultyCalculator
{
@@ -19,6 +20,6 @@ namespace osu.Game.Modes.Catch
return 0;
}
- protected override IBeatmapConverter CreateBeatmapConverter() => new CatchBeatmapConverter();
+ protected override BeatmapConverter CreateBeatmapConverter() => new CatchBeatmapConverter();
}
}
\ No newline at end of file
diff --git a/osu.Game.Modes.Catch/CatchRuleset.cs b/osu.Game.Rulesets.Catch/CatchRuleset.cs
similarity index 90%
rename from osu.Game.Modes.Catch/CatchRuleset.cs
rename to osu.Game.Rulesets.Catch/CatchRuleset.cs
index 6aafb2a3c6..a6faf13d51 100644
--- a/osu.Game.Modes.Catch/CatchRuleset.cs
+++ b/osu.Game.Rulesets.Catch/CatchRuleset.cs
@@ -4,16 +4,16 @@
using OpenTK.Input;
using osu.Game.Beatmaps;
using osu.Game.Graphics;
-using osu.Game.Modes.Catch.Mods;
-using osu.Game.Modes.Catch.UI;
-using osu.Game.Modes.Mods;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Catch.Mods;
+using osu.Game.Rulesets.Catch.UI;
+using osu.Game.Rulesets.Mods;
+using osu.Game.Rulesets.UI;
using osu.Game.Screens.Play;
using System.Collections.Generic;
-using osu.Game.Modes.Catch.Scoring;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Catch.Scoring;
+using osu.Game.Rulesets.Scoring;
-namespace osu.Game.Modes.Catch
+namespace osu.Game.Rulesets.Catch
{
public class CatchRuleset : Ruleset
{
diff --git a/osu.Game.Modes.Catch/Judgements/CatchJudgement.cs b/osu.Game.Rulesets.Catch/Judgements/CatchJudgement.cs
similarity index 78%
rename from osu.Game.Modes.Catch/Judgements/CatchJudgement.cs
rename to osu.Game.Rulesets.Catch/Judgements/CatchJudgement.cs
index eaacedd7e0..f0125b4c3a 100644
--- a/osu.Game.Modes.Catch/Judgements/CatchJudgement.cs
+++ b/osu.Game.Rulesets.Catch/Judgements/CatchJudgement.cs
@@ -1,9 +1,9 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Judgements;
+using osu.Game.Rulesets.Judgements;
-namespace osu.Game.Modes.Catch.Judgements
+namespace osu.Game.Rulesets.Catch.Judgements
{
public class CatchJudgement : Judgement
{
diff --git a/osu.Game.Modes.Catch/Mods/CatchMod.cs b/osu.Game.Rulesets.Catch/Mods/CatchMod.cs
similarity index 91%
rename from osu.Game.Modes.Catch/Mods/CatchMod.cs
rename to osu.Game.Rulesets.Catch/Mods/CatchMod.cs
index 97e4e58a5d..64a0c51b72 100644
--- a/osu.Game.Modes.Catch/Mods/CatchMod.cs
+++ b/osu.Game.Rulesets.Catch/Mods/CatchMod.cs
@@ -1,9 +1,9 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Mods;
+using osu.Game.Rulesets.Mods;
-namespace osu.Game.Modes.Catch.Mods
+namespace osu.Game.Rulesets.Catch.Mods
{
public class CatchModNoFail : ModNoFail
{
diff --git a/osu.Game.Modes.Catch/Objects/CatchBaseHit.cs b/osu.Game.Rulesets.Catch/Objects/CatchBaseHit.cs
similarity index 75%
rename from osu.Game.Modes.Catch/Objects/CatchBaseHit.cs
rename to osu.Game.Rulesets.Catch/Objects/CatchBaseHit.cs
index ee66894d31..de0547580f 100644
--- a/osu.Game.Modes.Catch/Objects/CatchBaseHit.cs
+++ b/osu.Game.Rulesets.Catch/Objects/CatchBaseHit.cs
@@ -1,9 +1,9 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Objects;
+using osu.Game.Rulesets.Objects;
-namespace osu.Game.Modes.Catch.Objects
+namespace osu.Game.Rulesets.Catch.Objects
{
public abstract class CatchBaseHit : HitObject
{
diff --git a/osu.Game.Modes.Catch/Objects/Drawable/DrawableFruit.cs b/osu.Game.Rulesets.Catch/Objects/Drawable/DrawableFruit.cs
similarity index 93%
rename from osu.Game.Modes.Catch/Objects/Drawable/DrawableFruit.cs
rename to osu.Game.Rulesets.Catch/Objects/Drawable/DrawableFruit.cs
index 885048b938..ae6585bdb2 100644
--- a/osu.Game.Modes.Catch/Objects/Drawable/DrawableFruit.cs
+++ b/osu.Game.Rulesets.Catch/Objects/Drawable/DrawableFruit.cs
@@ -8,7 +8,7 @@ using osu.Framework.Graphics.Textures;
using osu.Framework.Graphics.Transforms;
using OpenTK;
-namespace osu.Game.Modes.Catch.Objects.Drawable
+namespace osu.Game.Rulesets.Catch.Objects.Drawable
{
internal class DrawableFruit : Sprite
{
diff --git a/osu.Game.Modes.Catch/Objects/Droplet.cs b/osu.Game.Rulesets.Catch/Objects/Droplet.cs
similarity index 80%
rename from osu.Game.Modes.Catch/Objects/Droplet.cs
rename to osu.Game.Rulesets.Catch/Objects/Droplet.cs
index dd58fec7e8..b1206e0d75 100644
--- a/osu.Game.Modes.Catch/Objects/Droplet.cs
+++ b/osu.Game.Rulesets.Catch/Objects/Droplet.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Catch.Objects
+namespace osu.Game.Rulesets.Catch.Objects
{
public class Droplet : CatchBaseHit
{
diff --git a/osu.Game.Modes.Catch/Objects/Fruit.cs b/osu.Game.Rulesets.Catch/Objects/Fruit.cs
similarity index 80%
rename from osu.Game.Modes.Catch/Objects/Fruit.cs
rename to osu.Game.Rulesets.Catch/Objects/Fruit.cs
index 15363a7031..fc55f83969 100644
--- a/osu.Game.Modes.Catch/Objects/Fruit.cs
+++ b/osu.Game.Rulesets.Catch/Objects/Fruit.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Catch.Objects
+namespace osu.Game.Rulesets.Catch.Objects
{
public class Fruit : CatchBaseHit
{
diff --git a/osu.Game.Modes.Catch/OpenTK.dll.config b/osu.Game.Rulesets.Catch/OpenTK.dll.config
similarity index 100%
rename from osu.Game.Modes.Catch/OpenTK.dll.config
rename to osu.Game.Rulesets.Catch/OpenTK.dll.config
diff --git a/osu.Game.Modes.Catch/Properties/AssemblyInfo.cs b/osu.Game.Rulesets.Catch/Properties/AssemblyInfo.cs
similarity index 90%
rename from osu.Game.Modes.Catch/Properties/AssemblyInfo.cs
rename to osu.Game.Rulesets.Catch/Properties/AssemblyInfo.cs
index 1d25411e73..42fbc7e082 100644
--- a/osu.Game.Modes.Catch/Properties/AssemblyInfo.cs
+++ b/osu.Game.Rulesets.Catch/Properties/AssemblyInfo.cs
@@ -7,11 +7,11 @@ using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
-[assembly: AssemblyTitle("osu.Game.Modes.Catch")]
+[assembly: AssemblyTitle("osu.Game.Rulesets.Catch")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("osu.Game.Modes.Catch")]
+[assembly: AssemblyProduct("osu.Game.Rulesets.Catch")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
diff --git a/osu.Game.Modes.Catch/Scoring/CatchScoreProcessor.cs b/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs
similarity index 72%
rename from osu.Game.Modes.Catch/Scoring/CatchScoreProcessor.cs
rename to osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs
index 1b9bedf7fb..3f29547e46 100644
--- a/osu.Game.Modes.Catch/Scoring/CatchScoreProcessor.cs
+++ b/osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs
@@ -1,12 +1,12 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Catch.Judgements;
-using osu.Game.Modes.Catch.Objects;
-using osu.Game.Modes.Scoring;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Catch.Judgements;
+using osu.Game.Rulesets.Catch.Objects;
+using osu.Game.Rulesets.Scoring;
+using osu.Game.Rulesets.UI;
-namespace osu.Game.Modes.Catch.Scoring
+namespace osu.Game.Rulesets.Catch.Scoring
{
internal class CatchScoreProcessor : ScoreProcessor
{
diff --git a/osu.Game.Modes.Catch/UI/CatchHitRenderer.cs b/osu.Game.Rulesets.Catch/UI/CatchHitRenderer.cs
similarity index 56%
rename from osu.Game.Modes.Catch/UI/CatchHitRenderer.cs
rename to osu.Game.Rulesets.Catch/UI/CatchHitRenderer.cs
index 90bd61a39f..f34585be55 100644
--- a/osu.Game.Modes.Catch/UI/CatchHitRenderer.cs
+++ b/osu.Game.Rulesets.Catch/UI/CatchHitRenderer.cs
@@ -2,15 +2,16 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Game.Beatmaps;
-using osu.Game.Modes.Catch.Beatmaps;
-using osu.Game.Modes.Catch.Judgements;
-using osu.Game.Modes.Catch.Objects;
-using osu.Game.Modes.Catch.Scoring;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Scoring;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Beatmaps;
+using osu.Game.Rulesets.Catch.Beatmaps;
+using osu.Game.Rulesets.Catch.Judgements;
+using osu.Game.Rulesets.Catch.Objects;
+using osu.Game.Rulesets.Catch.Scoring;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Scoring;
+using osu.Game.Rulesets.UI;
-namespace osu.Game.Modes.Catch.UI
+namespace osu.Game.Rulesets.Catch.UI
{
public class CatchHitRenderer : HitRenderer
{
@@ -21,9 +22,7 @@ namespace osu.Game.Modes.Catch.UI
public override ScoreProcessor CreateScoreProcessor() => new CatchScoreProcessor(this);
- protected override IBeatmapConverter CreateBeatmapConverter() => new CatchBeatmapConverter();
-
- protected override IBeatmapProcessor CreateBeatmapProcessor() => new CatchBeatmapProcessor();
+ protected override BeatmapConverter CreateBeatmapConverter() => new CatchBeatmapConverter();
protected override Playfield CreatePlayfield() => new CatchPlayfield();
diff --git a/osu.Game.Modes.Catch/UI/CatchPlayfield.cs b/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs
similarity index 77%
rename from osu.Game.Modes.Catch/UI/CatchPlayfield.cs
rename to osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs
index f8792a7fd5..4b1e6e93cd 100644
--- a/osu.Game.Modes.Catch/UI/CatchPlayfield.cs
+++ b/osu.Game.Rulesets.Catch/UI/CatchPlayfield.cs
@@ -3,12 +3,12 @@
using osu.Framework.Graphics;
using osu.Framework.Graphics.Sprites;
-using osu.Game.Modes.Catch.Objects;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Catch.Objects;
+using osu.Game.Rulesets.UI;
using OpenTK;
-using osu.Game.Modes.Catch.Judgements;
+using osu.Game.Rulesets.Catch.Judgements;
-namespace osu.Game.Modes.Catch.UI
+namespace osu.Game.Rulesets.Catch.UI
{
public class CatchPlayfield : Playfield
{
diff --git a/osu.Game.Modes.Catch/osu.Game.Modes.Catch.csproj b/osu.Game.Rulesets.Catch/osu.Game.Rulesets.Catch.csproj
similarity index 91%
rename from osu.Game.Modes.Catch/osu.Game.Modes.Catch.csproj
rename to osu.Game.Rulesets.Catch/osu.Game.Rulesets.Catch.csproj
index b3e847a5be..281d2b5a79 100644
--- a/osu.Game.Modes.Catch/osu.Game.Modes.Catch.csproj
+++ b/osu.Game.Rulesets.Catch/osu.Game.Rulesets.Catch.csproj
@@ -7,8 +7,8 @@
{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}
Library
Properties
- osu.Game.Modes.Catch
- osu.Game.Modes.Catch
+ osu.Game.Rulesets.Catch
+ osu.Game.Rulesets.Catch
v4.5
512
@@ -48,7 +48,6 @@
-
@@ -74,9 +73,9 @@
{C76BF5B3-985E-4D39-95FE-97C9C879B83A}
osu.Framework
-
+
{C92A607B-1FDD-4954-9F92-03FF547D9080}
- osu.Game.Modes.Osu
+ osu.Game.Rulesets.Osu
{0D3FBF8A-7464-4CF7-8C90-3E7886DF2D4D}
diff --git a/osu.Game.Modes.Catch/packages.config b/osu.Game.Rulesets.Catch/packages.config
similarity index 100%
rename from osu.Game.Modes.Catch/packages.config
rename to osu.Game.Rulesets.Catch/packages.config
diff --git a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs
new file mode 100644
index 0000000000..847af965cc
--- /dev/null
+++ b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs
@@ -0,0 +1,23 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using osu.Game.Beatmaps;
+using osu.Game.Rulesets.Mania.Objects;
+using System.Collections.Generic;
+using System;
+using osu.Game.Rulesets.Objects.Types;
+using osu.Game.Rulesets.Beatmaps;
+using osu.Game.Rulesets.Objects;
+
+namespace osu.Game.Rulesets.Mania.Beatmaps
+{
+ internal class ManiaBeatmapConverter : BeatmapConverter
+ {
+ protected override IEnumerable ValidConversionTypes { get; } = new[] { typeof(IHasXPosition) };
+
+ protected override IEnumerable ConvertHitObject(HitObject original, Beatmap beatmap)
+ {
+ yield return null;
+ }
+ }
+}
diff --git a/osu.Game.Modes.Mania/Judgements/ManiaJudgement.cs b/osu.Game.Rulesets.Mania/Judgements/ManiaJudgement.cs
similarity index 78%
rename from osu.Game.Modes.Mania/Judgements/ManiaJudgement.cs
rename to osu.Game.Rulesets.Mania/Judgements/ManiaJudgement.cs
index 3ef5b0f29b..8dafbd01a5 100644
--- a/osu.Game.Modes.Mania/Judgements/ManiaJudgement.cs
+++ b/osu.Game.Rulesets.Mania/Judgements/ManiaJudgement.cs
@@ -1,9 +1,9 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Judgements;
+using osu.Game.Rulesets.Judgements;
-namespace osu.Game.Modes.Mania.Judgements
+namespace osu.Game.Rulesets.Mania.Judgements
{
public class ManiaJudgement : Judgement
{
diff --git a/osu.Game.Modes.Mania/ManiaDifficultyCalculator.cs b/osu.Game.Rulesets.Mania/ManiaDifficultyCalculator.cs
similarity index 65%
rename from osu.Game.Modes.Mania/ManiaDifficultyCalculator.cs
rename to osu.Game.Rulesets.Mania/ManiaDifficultyCalculator.cs
index 02a5a3acdc..e9bcc60d2c 100644
--- a/osu.Game.Modes.Mania/ManiaDifficultyCalculator.cs
+++ b/osu.Game.Rulesets.Mania/ManiaDifficultyCalculator.cs
@@ -2,11 +2,12 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Game.Beatmaps;
-using osu.Game.Modes.Mania.Beatmaps;
-using osu.Game.Modes.Mania.Objects;
+using osu.Game.Rulesets.Beatmaps;
+using osu.Game.Rulesets.Mania.Beatmaps;
+using osu.Game.Rulesets.Mania.Objects;
using System.Collections.Generic;
-namespace osu.Game.Modes.Mania
+namespace osu.Game.Rulesets.Mania
{
public class ManiaDifficultyCalculator : DifficultyCalculator
{
@@ -20,6 +21,6 @@ namespace osu.Game.Modes.Mania
return 0;
}
- protected override IBeatmapConverter CreateBeatmapConverter() => new ManiaBeatmapConverter();
+ protected override BeatmapConverter CreateBeatmapConverter() => new ManiaBeatmapConverter();
}
}
\ No newline at end of file
diff --git a/osu.Game.Modes.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs
similarity index 91%
rename from osu.Game.Modes.Mania/ManiaRuleset.cs
rename to osu.Game.Rulesets.Mania/ManiaRuleset.cs
index 030cea7344..26614075b1 100644
--- a/osu.Game.Modes.Mania/ManiaRuleset.cs
+++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs
@@ -3,16 +3,16 @@
using osu.Game.Beatmaps;
using osu.Game.Graphics;
-using osu.Game.Modes.Mania.Mods;
-using osu.Game.Modes.Mania.UI;
-using osu.Game.Modes.Mods;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Mania.Mods;
+using osu.Game.Rulesets.Mania.UI;
+using osu.Game.Rulesets.Mods;
+using osu.Game.Rulesets.UI;
using osu.Game.Screens.Play;
using System.Collections.Generic;
-using osu.Game.Modes.Mania.Scoring;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Mania.Scoring;
+using osu.Game.Rulesets.Scoring;
-namespace osu.Game.Modes.Mania
+namespace osu.Game.Rulesets.Mania
{
public class ManiaRuleset : Ruleset
{
diff --git a/osu.Game.Modes.Mania/Mods/ManiaMod.cs b/osu.Game.Rulesets.Mania/Mods/ManiaMod.cs
similarity index 94%
rename from osu.Game.Modes.Mania/Mods/ManiaMod.cs
rename to osu.Game.Rulesets.Mania/Mods/ManiaMod.cs
index b330680550..68458caeac 100644
--- a/osu.Game.Modes.Mania/Mods/ManiaMod.cs
+++ b/osu.Game.Rulesets.Mania/Mods/ManiaMod.cs
@@ -2,10 +2,10 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Game.Graphics;
-using osu.Game.Modes.Mods;
+using osu.Game.Rulesets.Mods;
using System;
-namespace osu.Game.Modes.Mania.Mods
+namespace osu.Game.Rulesets.Mania.Mods
{
public class ManiaModNoFail : ModNoFail
{
diff --git a/osu.Game.Modes.Mania/Objects/Drawable/DrawableNote.cs b/osu.Game.Rulesets.Mania/Objects/Drawable/DrawableNote.cs
similarity index 93%
rename from osu.Game.Modes.Mania/Objects/Drawable/DrawableNote.cs
rename to osu.Game.Rulesets.Mania/Objects/Drawable/DrawableNote.cs
index 76999cef21..07a27b1643 100644
--- a/osu.Game.Modes.Mania/Objects/Drawable/DrawableNote.cs
+++ b/osu.Game.Rulesets.Mania/Objects/Drawable/DrawableNote.cs
@@ -8,7 +8,7 @@ using osu.Framework.Graphics.Transforms;
using osu.Framework.Graphics;
using OpenTK;
-namespace osu.Game.Modes.Mania.Objects.Drawable
+namespace osu.Game.Rulesets.Mania.Objects.Drawable
{
public class DrawableNote : Sprite
{
diff --git a/osu.Game.Modes.Mania/Objects/HoldNote.cs b/osu.Game.Rulesets.Mania/Objects/HoldNote.cs
similarity index 79%
rename from osu.Game.Modes.Mania/Objects/HoldNote.cs
rename to osu.Game.Rulesets.Mania/Objects/HoldNote.cs
index 3d95e11118..e8ce1da77f 100644
--- a/osu.Game.Modes.Mania/Objects/HoldNote.cs
+++ b/osu.Game.Rulesets.Mania/Objects/HoldNote.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Mania.Objects
+namespace osu.Game.Rulesets.Mania.Objects
{
public class HoldNote : Note
{
diff --git a/osu.Game.Modes.Mania/Objects/ManiaBaseHit.cs b/osu.Game.Rulesets.Mania/Objects/ManiaBaseHit.cs
similarity index 74%
rename from osu.Game.Modes.Mania/Objects/ManiaBaseHit.cs
rename to osu.Game.Rulesets.Mania/Objects/ManiaBaseHit.cs
index 8b3afc82d9..4c15b69eb7 100644
--- a/osu.Game.Modes.Mania/Objects/ManiaBaseHit.cs
+++ b/osu.Game.Rulesets.Mania/Objects/ManiaBaseHit.cs
@@ -1,9 +1,9 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Objects;
+using osu.Game.Rulesets.Objects;
-namespace osu.Game.Modes.Mania.Objects
+namespace osu.Game.Rulesets.Mania.Objects
{
public abstract class ManiaBaseHit : HitObject
{
diff --git a/osu.Game.Modes.Mania/Objects/Note.cs b/osu.Game.Rulesets.Mania/Objects/Note.cs
similarity index 80%
rename from osu.Game.Modes.Mania/Objects/Note.cs
rename to osu.Game.Rulesets.Mania/Objects/Note.cs
index c36ed8cf7e..5a6d6003db 100644
--- a/osu.Game.Modes.Mania/Objects/Note.cs
+++ b/osu.Game.Rulesets.Mania/Objects/Note.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Mania.Objects
+namespace osu.Game.Rulesets.Mania.Objects
{
public class Note : ManiaBaseHit
{
diff --git a/osu.Game.Modes.Mania/OpenTK.dll.config b/osu.Game.Rulesets.Mania/OpenTK.dll.config
similarity index 100%
rename from osu.Game.Modes.Mania/OpenTK.dll.config
rename to osu.Game.Rulesets.Mania/OpenTK.dll.config
diff --git a/osu.Game.Modes.Mania/Properties/AssemblyInfo.cs b/osu.Game.Rulesets.Mania/Properties/AssemblyInfo.cs
similarity index 90%
rename from osu.Game.Modes.Mania/Properties/AssemblyInfo.cs
rename to osu.Game.Rulesets.Mania/Properties/AssemblyInfo.cs
index 11c8290f1b..790002acd7 100644
--- a/osu.Game.Modes.Mania/Properties/AssemblyInfo.cs
+++ b/osu.Game.Rulesets.Mania/Properties/AssemblyInfo.cs
@@ -7,11 +7,11 @@ using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
-[assembly: AssemblyTitle("osu.Game.Modes.Mania")]
+[assembly: AssemblyTitle("osu.Game.Rulesets.Mania")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("osu.Game.Modes.Mania")]
+[assembly: AssemblyProduct("osu.Game.Rulesets.Mania")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
diff --git a/osu.Game.Modes.Mania/Scoring/ManiaScoreProcessor.cs b/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs
similarity index 72%
rename from osu.Game.Modes.Mania/Scoring/ManiaScoreProcessor.cs
rename to osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs
index 0f87030e25..ba0304a44a 100644
--- a/osu.Game.Modes.Mania/Scoring/ManiaScoreProcessor.cs
+++ b/osu.Game.Rulesets.Mania/Scoring/ManiaScoreProcessor.cs
@@ -1,12 +1,12 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Mania.Judgements;
-using osu.Game.Modes.Mania.Objects;
-using osu.Game.Modes.Scoring;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Mania.Judgements;
+using osu.Game.Rulesets.Mania.Objects;
+using osu.Game.Rulesets.Scoring;
+using osu.Game.Rulesets.UI;
-namespace osu.Game.Modes.Mania.Scoring
+namespace osu.Game.Rulesets.Mania.Scoring
{
internal class ManiaScoreProcessor : ScoreProcessor
{
diff --git a/osu.Game.Modes.Mania/UI/ManiaHitRenderer.cs b/osu.Game.Rulesets.Mania/UI/ManiaHitRenderer.cs
similarity index 59%
rename from osu.Game.Modes.Mania/UI/ManiaHitRenderer.cs
rename to osu.Game.Rulesets.Mania/UI/ManiaHitRenderer.cs
index 0415bc961a..7fb8f95b4c 100644
--- a/osu.Game.Modes.Mania/UI/ManiaHitRenderer.cs
+++ b/osu.Game.Rulesets.Mania/UI/ManiaHitRenderer.cs
@@ -2,15 +2,16 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Game.Beatmaps;
-using osu.Game.Modes.Mania.Beatmaps;
-using osu.Game.Modes.Mania.Judgements;
-using osu.Game.Modes.Mania.Objects;
-using osu.Game.Modes.Mania.Scoring;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Scoring;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Beatmaps;
+using osu.Game.Rulesets.Mania.Beatmaps;
+using osu.Game.Rulesets.Mania.Judgements;
+using osu.Game.Rulesets.Mania.Objects;
+using osu.Game.Rulesets.Mania.Scoring;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Scoring;
+using osu.Game.Rulesets.UI;
-namespace osu.Game.Modes.Mania.UI
+namespace osu.Game.Rulesets.Mania.UI
{
public class ManiaHitRenderer : HitRenderer
{
@@ -24,9 +25,7 @@ namespace osu.Game.Modes.Mania.UI
public override ScoreProcessor CreateScoreProcessor() => new ManiaScoreProcessor(this);
- protected override IBeatmapConverter CreateBeatmapConverter() => new ManiaBeatmapConverter();
-
- protected override IBeatmapProcessor CreateBeatmapProcessor() => new ManiaBeatmapProcessor();
+ protected override BeatmapConverter CreateBeatmapConverter() => new ManiaBeatmapConverter();
protected override Playfield CreatePlayfield() => new ManiaPlayfield(columns);
diff --git a/osu.Game.Modes.Mania/UI/ManiaPlayfield.cs b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs
similarity index 84%
rename from osu.Game.Modes.Mania/UI/ManiaPlayfield.cs
rename to osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs
index deb4ebac25..5eea3d70c0 100644
--- a/osu.Game.Modes.Mania/UI/ManiaPlayfield.cs
+++ b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs
@@ -3,13 +3,13 @@
using osu.Framework.Graphics;
using osu.Framework.Graphics.Sprites;
-using osu.Game.Modes.Mania.Objects;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Mania.Objects;
+using osu.Game.Rulesets.UI;
using OpenTK;
using OpenTK.Graphics;
-using osu.Game.Modes.Mania.Judgements;
+using osu.Game.Rulesets.Mania.Judgements;
-namespace osu.Game.Modes.Mania.UI
+namespace osu.Game.Rulesets.Mania.UI
{
public class ManiaPlayfield : Playfield
{
diff --git a/osu.Game.Modes.Mania/osu.Game.Modes.Mania.csproj b/osu.Game.Rulesets.Mania/osu.Game.Rulesets.Mania.csproj
similarity index 88%
rename from osu.Game.Modes.Mania/osu.Game.Modes.Mania.csproj
rename to osu.Game.Rulesets.Mania/osu.Game.Rulesets.Mania.csproj
index 6c666fd6ea..facffa757c 100644
--- a/osu.Game.Modes.Mania/osu.Game.Modes.Mania.csproj
+++ b/osu.Game.Rulesets.Mania/osu.Game.Rulesets.Mania.csproj
@@ -7,8 +7,8 @@
{48F4582B-7687-4621-9CBE-5C24197CB536}
Library
Properties
- osu.Game.Modes.Mania
- osu.Game.Modes.Mania
+ osu.Game.Rulesets.Mania
+ osu.Game.Rulesets.Mania
v4.5
512
@@ -48,7 +48,6 @@
-
@@ -67,13 +66,13 @@
{C76BF5B3-985E-4D39-95FE-97C9C879B83A}
osu.Framework
-
+
{C92A607B-1FDD-4954-9F92-03FF547D9080}
- osu.Game.Modes.Osu
+ osu.Game.Rulesets.Osu
-
+
{F167E17A-7DE6-4AF5-B920-A5112296C695}
- osu.Game.Modes.Taiko
+ osu.Game.Rulesets.Taiko
{0D3FBF8A-7464-4CF7-8C90-3E7886DF2D4D}
diff --git a/osu.Game.Modes.Mania/packages.config b/osu.Game.Rulesets.Mania/packages.config
similarity index 100%
rename from osu.Game.Modes.Mania/packages.config
rename to osu.Game.Rulesets.Mania/packages.config
diff --git a/osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs b/osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs
new file mode 100644
index 0000000000..0eece7fc4c
--- /dev/null
+++ b/osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs
@@ -0,0 +1,61 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using OpenTK;
+using osu.Game.Beatmaps;
+using osu.Game.Rulesets.Objects;
+using osu.Game.Rulesets.Osu.Objects;
+using System.Collections.Generic;
+using osu.Game.Rulesets.Objects.Types;
+using System;
+using osu.Game.Rulesets.Osu.UI;
+using osu.Game.Rulesets.Beatmaps;
+
+namespace osu.Game.Rulesets.Osu.Beatmaps
+{
+ internal class OsuBeatmapConverter : BeatmapConverter
+ {
+ protected override IEnumerable ValidConversionTypes { get; } = new[] { typeof(IHasPosition) };
+
+ protected override IEnumerable ConvertHitObject(HitObject original, Beatmap beatmap)
+ {
+ IHasCurve curveData = original as IHasCurve;
+ IHasEndTime endTimeData = original as IHasEndTime;
+ IHasPosition positionData = original as IHasPosition;
+ IHasCombo comboData = original as IHasCombo;
+
+ if (curveData != null)
+ {
+ yield return new Slider
+ {
+ StartTime = original.StartTime,
+ Samples = original.Samples,
+ CurveObject = curveData,
+ Position = positionData?.Position ?? Vector2.Zero,
+ NewCombo = comboData?.NewCombo ?? false
+ };
+ }
+ else if (endTimeData != null)
+ {
+ yield return new Spinner
+ {
+ StartTime = original.StartTime,
+ Samples = original.Samples,
+ EndTime = endTimeData.EndTime,
+
+ Position = positionData?.Position ?? OsuPlayfield.BASE_SIZE / 2,
+ };
+ }
+ else
+ {
+ yield return new HitCircle
+ {
+ StartTime = original.StartTime,
+ Samples = original.Samples,
+ Position = positionData?.Position ?? Vector2.Zero,
+ NewCombo = comboData?.NewCombo ?? false
+ };
+ }
+ }
+ }
+}
diff --git a/osu.Game.Modes.Osu/Beatmaps/OsuBeatmapConverter.cs b/osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapProcessor.cs
similarity index 64%
rename from osu.Game.Modes.Osu/Beatmaps/OsuBeatmapConverter.cs
rename to osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapProcessor.cs
index bae12a98e3..fce0188cda 100644
--- a/osu.Game.Modes.Osu/Beatmaps/OsuBeatmapConverter.cs
+++ b/osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapProcessor.cs
@@ -3,96 +3,58 @@
using OpenTK;
using osu.Game.Beatmaps;
-using osu.Game.Modes.Objects;
-using osu.Game.Modes.Osu.Objects;
-using osu.Game.Modes.Osu.Objects.Drawables;
-using System.Collections.Generic;
-using osu.Game.Modes.Objects.Types;
-using System.Linq;
+using osu.Game.Rulesets.Beatmaps;
+using osu.Game.Rulesets.Objects.Types;
+using osu.Game.Rulesets.Osu.Objects;
+using osu.Game.Rulesets.Osu.Objects.Drawables;
-namespace osu.Game.Modes.Osu.Beatmaps
+namespace osu.Game.Rulesets.Osu.Beatmaps
{
- internal class OsuBeatmapConverter : IBeatmapConverter
+ internal class OsuBeatmapProcessor : BeatmapProcessor
{
- public Beatmap Convert(Beatmap original)
+ public override void PostProcess(Beatmap beatmap)
{
- return new Beatmap(original)
+ applyStacking(beatmap);
+
+ if (beatmap.ComboColors.Count == 0)
+ return;
+
+ int comboIndex = 0;
+ int colourIndex = 0;
+
+ foreach (var obj in beatmap.HitObjects)
{
- HitObjects = convertHitObjects(original.HitObjects, original.BeatmapInfo?.StackLeniency ?? 0.7f)
- };
- }
-
- private List convertHitObjects(List hitObjects, float stackLeniency)
- {
- List converted = hitObjects.Select(convertHitObject).ToList();
-
- updateStacking(converted, stackLeniency);
-
- return converted;
- }
-
- private OsuHitObject convertHitObject(HitObject original)
- {
- IHasCurve curveData = original as IHasCurve;
- IHasEndTime endTimeData = original as IHasEndTime;
- IHasPosition positionData = original as IHasPosition;
- IHasCombo comboData = original as IHasCombo;
-
- if (curveData != null)
- {
- return new Slider
+ if (obj.NewCombo)
{
- StartTime = original.StartTime,
- Samples = original.Samples,
- CurveObject = curveData,
- Position = positionData?.Position ?? Vector2.Zero,
- NewCombo = comboData?.NewCombo ?? false
- };
- }
+ comboIndex = 0;
+ colourIndex = (colourIndex + 1) % beatmap.ComboColors.Count;
+ }
- if (endTimeData != null)
- {
- return new Spinner
- {
- StartTime = original.StartTime,
- Samples = original.Samples,
- Position = new Vector2(512, 384) / 2,
- EndTime = endTimeData.EndTime
- };
+ obj.ComboIndex = comboIndex++;
+ obj.ComboColour = beatmap.ComboColors[colourIndex];
}
-
- return new HitCircle
- {
- StartTime = original.StartTime,
- Samples = original.Samples,
- Position = positionData?.Position ?? Vector2.Zero,
- NewCombo = comboData?.NewCombo ?? false
- };
}
- private void updateStacking(List hitObjects, float stackLeniency, int startIndex = 0, int endIndex = -1)
+ private void applyStacking(Beatmap beatmap)
{
- if (endIndex == -1)
- endIndex = hitObjects.Count - 1;
-
const int stack_distance = 3;
- float stackThreshold = DrawableOsuHitObject.TIME_PREEMPT * stackLeniency;
+ float stackThreshold = DrawableOsuHitObject.TIME_PREEMPT * beatmap.BeatmapInfo?.StackLeniency ?? 0.7f;
- // Reset stacking inside the update range
- for (int i = startIndex; i <= endIndex; i++)
- hitObjects[i].StackHeight = 0;
+ // Reset stacking
+ for (int i = 0; i <= beatmap.HitObjects.Count - 1; i++)
+ beatmap.HitObjects[i].StackHeight = 0;
// Extend the end index to include objects they are stacked on
- int extendedEndIndex = endIndex;
- for (int i = endIndex; i >= startIndex; i--)
+ int extendedEndIndex = beatmap.HitObjects.Count - 1;
+ for (int i = beatmap.HitObjects.Count - 1; i >= 0; i--)
{
int stackBaseIndex = i;
- for (int n = stackBaseIndex + 1; n < hitObjects.Count; n++)
+ for (int n = stackBaseIndex + 1; n < beatmap.HitObjects.Count; n++)
{
- OsuHitObject stackBaseObject = hitObjects[stackBaseIndex];
+ OsuHitObject stackBaseObject = beatmap.HitObjects[stackBaseIndex];
if (stackBaseObject is Spinner) break;
- OsuHitObject objectN = hitObjects[n];
+ OsuHitObject objectN = beatmap.HitObjects[n];
if (objectN is Spinner)
continue;
@@ -115,14 +77,14 @@ namespace osu.Game.Modes.Osu.Beatmaps
if (stackBaseIndex > extendedEndIndex)
{
extendedEndIndex = stackBaseIndex;
- if (extendedEndIndex == hitObjects.Count - 1)
+ if (extendedEndIndex == beatmap.HitObjects.Count - 1)
break;
}
}
//Reverse pass for stack calculation.
- int extendedStartIndex = startIndex;
- for (int i = extendedEndIndex; i > startIndex; i--)
+ int extendedStartIndex = 0;
+ for (int i = extendedEndIndex; i > 0; i--)
{
int n = i;
/* We should check every note which has not yet got a stack.
@@ -136,7 +98,7 @@ namespace osu.Game.Modes.Osu.Beatmaps
* 2 and 1 will be ignored in the i loop because they already have a stack value.
*/
- OsuHitObject objectI = hitObjects[i];
+ OsuHitObject objectI = beatmap.HitObjects[i];
if (objectI.StackHeight != 0 || objectI is Spinner) continue;
/* If this object is a hitcircle, then we enter this "special" case.
@@ -147,7 +109,7 @@ namespace osu.Game.Modes.Osu.Beatmaps
{
while (--n >= 0)
{
- OsuHitObject objectN = hitObjects[n];
+ OsuHitObject objectN = beatmap.HitObjects[n];
if (objectN is Spinner) continue;
double endTime = (objectN as IHasEndTime)?.EndTime ?? objectN.StartTime;
@@ -174,7 +136,7 @@ namespace osu.Game.Modes.Osu.Beatmaps
for (int j = n + 1; j <= i; j++)
{
//For each object which was declared under this slider, we will offset it to appear *below* the slider end (rather than above).
- OsuHitObject objectJ = hitObjects[j];
+ OsuHitObject objectJ = beatmap.HitObjects[j];
if (Vector2.Distance(objectN.EndPosition, objectJ.Position) < stack_distance)
objectJ.StackHeight -= offset;
}
@@ -199,9 +161,9 @@ namespace osu.Game.Modes.Osu.Beatmaps
/* We have hit the first slider in a possible stack.
* From this point on, we ALWAYS stack positive regardless.
*/
- while (--n >= startIndex)
+ while (--n >= 0)
{
- OsuHitObject objectN = hitObjects[n];
+ OsuHitObject objectN = beatmap.HitObjects[n];
if (objectN is Spinner) continue;
if (objectI.StartTime - objectN.StartTime > stackThreshold)
diff --git a/osu.Game.Modes.Osu/Judgements/OsuJudgement.cs b/osu.Game.Rulesets.Osu/Judgements/OsuJudgement.cs
similarity index 89%
rename from osu.Game.Modes.Osu/Judgements/OsuJudgement.cs
rename to osu.Game.Rulesets.Osu/Judgements/OsuJudgement.cs
index e65d3dde3a..d61e179002 100644
--- a/osu.Game.Modes.Osu/Judgements/OsuJudgement.cs
+++ b/osu.Game.Rulesets.Osu/Judgements/OsuJudgement.cs
@@ -2,11 +2,11 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using OpenTK;
-using osu.Game.Modes.Judgements;
-using osu.Game.Modes.Osu.Objects.Drawables;
+using osu.Game.Rulesets.Judgements;
+using osu.Game.Rulesets.Osu.Objects.Drawables;
using osu.Framework.Extensions;
-namespace osu.Game.Modes.Osu.Judgements
+namespace osu.Game.Rulesets.Osu.Judgements
{
public class OsuJudgement : Judgement
{
diff --git a/osu.Game.Modes.Osu/Mods/OsuMod.cs b/osu.Game.Rulesets.Osu/Mods/OsuMod.cs
similarity index 93%
rename from osu.Game.Modes.Osu/Mods/OsuMod.cs
rename to osu.Game.Rulesets.Osu/Mods/OsuMod.cs
index db2ee26b7a..bdb5f386d0 100644
--- a/osu.Game.Modes.Osu/Mods/OsuMod.cs
+++ b/osu.Game.Rulesets.Osu/Mods/OsuMod.cs
@@ -3,13 +3,13 @@
using osu.Game.Beatmaps;
using osu.Game.Graphics;
-using osu.Game.Modes.Mods;
-using osu.Game.Modes.Osu.Objects;
+using osu.Game.Rulesets.Mods;
+using osu.Game.Rulesets.Osu.Objects;
using System;
using System.Linq;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Scoring;
-namespace osu.Game.Modes.Osu.Mods
+namespace osu.Game.Rulesets.Osu.Mods
{
public class OsuModNoFail : ModNoFail
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Connections/ConnectionRenderer.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Connections/ConnectionRenderer.cs
similarity index 83%
rename from osu.Game.Modes.Osu/Objects/Drawables/Connections/ConnectionRenderer.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Connections/ConnectionRenderer.cs
index a680c847ac..192ab0536e 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Connections/ConnectionRenderer.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Connections/ConnectionRenderer.cs
@@ -2,10 +2,10 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Framework.Graphics.Containers;
-using osu.Game.Modes.Objects;
+using osu.Game.Rulesets.Objects;
using System.Collections.Generic;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Connections
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
{
///
/// Connects hit objects visually, for example with follow points.
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Connections/FollowPoint.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPoint.cs
similarity index 93%
rename from osu.Game.Modes.Osu/Objects/Drawables/Connections/FollowPoint.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPoint.cs
index 7815e3ba41..e1276f30c4 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Connections/FollowPoint.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPoint.cs
@@ -8,7 +8,7 @@ using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Connections
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
{
public class FollowPoint : Container
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Connections/FollowPointRenderer.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPointRenderer.cs
similarity index 94%
rename from osu.Game.Modes.Osu/Objects/Drawables/Connections/FollowPointRenderer.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPointRenderer.cs
index f45e4226dd..a4e032050e 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Connections/FollowPointRenderer.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPointRenderer.cs
@@ -4,9 +4,9 @@
using System;
using System.Collections.Generic;
using OpenTK;
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Objects.Types;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Connections
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
{
public class FollowPointRenderer : ConnectionRenderer
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/DrawableHitCircle.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs
similarity index 93%
rename from osu.Game.Modes.Osu/Objects/Drawables/DrawableHitCircle.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs
index 68c5ec0a45..4c1a74c675 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/DrawableHitCircle.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableHitCircle.cs
@@ -3,12 +3,12 @@
using System;
using osu.Framework.Graphics;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Osu.Objects.Drawables.Pieces;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Osu.Objects.Drawables.Pieces;
using OpenTK;
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Objects.Types;
-namespace osu.Game.Modes.Osu.Objects.Drawables
+namespace osu.Game.Rulesets.Osu.Objects.Drawables
{
public class DrawableHitCircle : DrawableOsuHitObject, IDrawableHitObjectWithProxiedApproach
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/DrawableOsuHitObject.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs
similarity index 89%
rename from osu.Game.Modes.Osu/Objects/Drawables/DrawableOsuHitObject.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs
index 816faa0d98..2baf651cc0 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/DrawableOsuHitObject.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs
@@ -2,10 +2,10 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using System.ComponentModel;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Osu.Judgements;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Osu.Judgements;
-namespace osu.Game.Modes.Osu.Objects.Drawables
+namespace osu.Game.Rulesets.Osu.Objects.Drawables
{
public class DrawableOsuHitObject : DrawableHitObject
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/DrawableOsuJudgement.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuJudgement.cs
similarity index 76%
rename from osu.Game.Modes.Osu/Objects/Drawables/DrawableOsuJudgement.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuJudgement.cs
index 647c8faef8..eaa0bb7d27 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/DrawableOsuJudgement.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuJudgement.cs
@@ -2,12 +2,12 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Framework.Graphics;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Osu.Judgements;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Osu.Judgements;
using OpenTK;
-using osu.Game.Modes.Judgements;
+using osu.Game.Rulesets.Judgements;
-namespace osu.Game.Modes.Osu.Objects.Drawables
+namespace osu.Game.Rulesets.Osu.Objects.Drawables
{
public class DrawableOsuJudgement : DrawableJudgement
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/DrawableSlider.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs
similarity index 95%
rename from osu.Game.Modes.Osu/Objects/Drawables/DrawableSlider.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs
index be326751ba..ed698f5ad3 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/DrawableSlider.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSlider.cs
@@ -3,13 +3,13 @@
using OpenTK;
using osu.Framework.Graphics;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Osu.Objects.Drawables.Pieces;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Osu.Objects.Drawables.Pieces;
using System.Collections.Generic;
using System.Linq;
using osu.Framework.Graphics.Containers;
-namespace osu.Game.Modes.Osu.Objects.Drawables
+namespace osu.Game.Rulesets.Osu.Objects.Drawables
{
public class DrawableSlider : DrawableOsuHitObject, IDrawableHitObjectWithProxiedApproach
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/DrawableSliderTick.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTick.cs
similarity index 92%
rename from osu.Game.Modes.Osu/Objects/Drawables/DrawableSliderTick.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTick.cs
index 188306c857..86baf9f235 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/DrawableSliderTick.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTick.cs
@@ -4,12 +4,12 @@
using System;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Sprites;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Osu.Judgements;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Osu.Judgements;
using OpenTK;
using OpenTK.Graphics;
-namespace osu.Game.Modes.Osu.Objects.Drawables
+namespace osu.Game.Rulesets.Osu.Objects.Drawables
{
public class DrawableSliderTick : DrawableOsuHitObject
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/DrawableSpinner.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs
similarity index 92%
rename from osu.Game.Modes.Osu/Objects/Drawables/DrawableSpinner.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs
index d0136f717c..9ff77a5f3c 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/DrawableSpinner.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs
@@ -5,12 +5,13 @@ using System;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.MathUtils;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Osu.Objects.Drawables.Pieces;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Osu.Objects.Drawables.Pieces;
using OpenTK;
using OpenTK.Graphics;
+using osu.Game.Rulesets.Osu.UI;
-namespace osu.Game.Modes.Osu.Objects.Drawables
+namespace osu.Game.Rulesets.Osu.Objects.Drawables
{
public class DrawableSpinner : DrawableOsuHitObject
{
@@ -29,7 +30,7 @@ namespace osu.Game.Modes.Osu.Objects.Drawables
Position = s.Position;
//take up full playfield.
- Size = new Vector2(512);
+ Size = OsuPlayfield.BASE_SIZE;
spinner = s;
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/ApproachCircle.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ApproachCircle.cs
similarity index 90%
rename from osu.Game.Modes.Osu/Objects/Drawables/Pieces/ApproachCircle.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ApproachCircle.cs
index fd4ef64350..323f5fb297 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/ApproachCircle.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ApproachCircle.cs
@@ -7,7 +7,7 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.Textures;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
{
public class ApproachCircle : Container
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/CirclePiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/CirclePiece.cs
similarity index 93%
rename from osu.Game.Modes.Osu/Objects/Drawables/Pieces/CirclePiece.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/CirclePiece.cs
index 704a6b7490..9a90c07517 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/CirclePiece.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/CirclePiece.cs
@@ -10,7 +10,7 @@ using osu.Framework.Graphics.Textures;
using osu.Framework.Input;
using OpenTK;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
{
public class CirclePiece : Container
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/ExplodePiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ExplodePiece.cs
similarity index 90%
rename from osu.Game.Modes.Osu/Objects/Drawables/Pieces/ExplodePiece.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ExplodePiece.cs
index 97228f610f..e5cf10b88a 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/ExplodePiece.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/ExplodePiece.cs
@@ -5,7 +5,7 @@ using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using OpenTK;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
{
public class ExplodePiece : Container
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/FlashPiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/FlashPiece.cs
similarity index 89%
rename from osu.Game.Modes.Osu/Objects/Drawables/Pieces/FlashPiece.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/FlashPiece.cs
index cb60977dab..68ffb756d4 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/FlashPiece.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/FlashPiece.cs
@@ -6,7 +6,7 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using OpenTK;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
{
public class FlashPiece : Container
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/GlowPiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/GlowPiece.cs
similarity index 91%
rename from osu.Game.Modes.Osu/Objects/Drawables/Pieces/GlowPiece.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/GlowPiece.cs
index 6cffa370cf..8a7b353da1 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/GlowPiece.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/GlowPiece.cs
@@ -7,7 +7,7 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.Textures;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
{
public class GlowPiece : Container
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/NumberPiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/NumberPiece.cs
similarity index 93%
rename from osu.Game.Modes.Osu/Objects/Drawables/Pieces/NumberPiece.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/NumberPiece.cs
index 0ebd274246..07b21657a5 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/NumberPiece.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/NumberPiece.cs
@@ -8,7 +8,7 @@ using osu.Framework.Graphics.Sprites;
using osu.Game.Graphics.Sprites;
using OpenTK.Graphics;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
{
public class NumberPiece : Container
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/RingPiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/RingPiece.cs
similarity index 90%
rename from osu.Game.Modes.Osu/Objects/Drawables/Pieces/RingPiece.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/RingPiece.cs
index 3e172cdc09..a04d3e7a0a 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/RingPiece.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/RingPiece.cs
@@ -7,7 +7,7 @@ using osu.Framework.Graphics.Sprites;
using OpenTK;
using OpenTK.Graphics;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
{
public class RingPiece : Container
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/SliderBall.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs
similarity index 95%
rename from osu.Game.Modes.Osu/Objects/Drawables/Pieces/SliderBall.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs
index becbebf0c7..4cffc1def3 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/SliderBall.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBall.cs
@@ -7,7 +7,7 @@ using osu.Framework.Graphics.Sprites;
using osu.Framework.Input;
using OpenTK.Graphics;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
{
public class SliderBall : CircularContainer, ISliderProgress
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/SliderBody.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBody.cs
similarity index 96%
rename from osu.Game.Modes.Osu/Objects/Drawables/Pieces/SliderBody.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBody.cs
index e7837471ee..b23fdde4e8 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/SliderBody.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBody.cs
@@ -15,7 +15,7 @@ using OpenTK;
using OpenTK.Graphics.ES30;
using OpenTK.Graphics;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
{
public class SliderBody : Container, ISliderProgress
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/SliderBouncer.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBouncer.cs
similarity index 93%
rename from osu.Game.Modes.Osu/Objects/Drawables/Pieces/SliderBouncer.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBouncer.cs
index 196b9fb521..65679dd7d3 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/SliderBouncer.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SliderBouncer.cs
@@ -5,7 +5,7 @@ using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Graphics;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
{
public class SliderBouncer : Container, ISliderProgress
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/SpinnerBackground.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerBackground.cs
similarity index 80%
rename from osu.Game.Modes.Osu/Objects/Drawables/Pieces/SpinnerBackground.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerBackground.cs
index 50dab933b0..72024bbe99 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/SpinnerBackground.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerBackground.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
{
public class SpinnerBackground : SpinnerDisc
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs
similarity index 95%
rename from osu.Game.Modes.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs
index a4fce3deb5..71adba74c7 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/SpinnerDisc.cs
@@ -15,7 +15,7 @@ using osu.Game.Graphics;
using OpenTK;
using OpenTK.Graphics;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
{
public class SpinnerDisc : CircularContainer
{
diff --git a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/TrianglesPiece.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/TrianglesPiece.cs
similarity index 89%
rename from osu.Game.Modes.Osu/Objects/Drawables/Pieces/TrianglesPiece.cs
rename to osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/TrianglesPiece.cs
index 26d44f3865..ea3ddb5051 100644
--- a/osu.Game.Modes.Osu/Objects/Drawables/Pieces/TrianglesPiece.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/Pieces/TrianglesPiece.cs
@@ -3,7 +3,7 @@
using osu.Game.Graphics.Backgrounds;
-namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
{
public class TrianglesPiece : Triangles
{
diff --git a/osu.Game.Modes.Osu/Objects/HitCircle.cs b/osu.Game.Rulesets.Osu/Objects/HitCircle.cs
similarity index 81%
rename from osu.Game.Modes.Osu/Objects/HitCircle.cs
rename to osu.Game.Rulesets.Osu/Objects/HitCircle.cs
index aa45ac7fb9..be969f1e18 100644
--- a/osu.Game.Modes.Osu/Objects/HitCircle.cs
+++ b/osu.Game.Rulesets.Osu/Objects/HitCircle.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Osu.Objects
+namespace osu.Game.Rulesets.Osu.Objects
{
public class HitCircle : OsuHitObject
{
diff --git a/osu.Game.Modes.Osu/Objects/OsuHitObject.cs b/osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs
similarity index 88%
rename from osu.Game.Modes.Osu/Objects/OsuHitObject.cs
rename to osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs
index fa422834db..723a37ed7b 100644
--- a/osu.Game.Modes.Osu/Objects/OsuHitObject.cs
+++ b/osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs
@@ -1,15 +1,15 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Objects;
+using osu.Game.Rulesets.Objects;
using OpenTK;
-using osu.Game.Modes.Osu.Objects.Drawables;
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Osu.Objects.Drawables;
+using osu.Game.Rulesets.Objects.Types;
using OpenTK.Graphics;
using osu.Game.Beatmaps.Timing;
using osu.Game.Database;
-namespace osu.Game.Modes.Osu.Objects
+namespace osu.Game.Rulesets.Osu.Objects
{
public abstract class OsuHitObject : HitObject, IHasCombo, IHasPosition
{
@@ -21,6 +21,8 @@ namespace osu.Game.Modes.Osu.Objects
private const double hit_window_300 = 30;
public Vector2 Position { get; set; }
+ public float X => Position.X;
+ public float Y => Position.Y;
public Vector2 StackedPosition => Position + StackOffset;
diff --git a/osu.Game.Modes.Osu/Objects/OsuHitObjectDifficulty.cs b/osu.Game.Rulesets.Osu/Objects/OsuHitObjectDifficulty.cs
similarity index 97%
rename from osu.Game.Modes.Osu/Objects/OsuHitObjectDifficulty.cs
rename to osu.Game.Rulesets.Osu/Objects/OsuHitObjectDifficulty.cs
index 322f6b077a..1786771dca 100644
--- a/osu.Game.Modes.Osu/Objects/OsuHitObjectDifficulty.cs
+++ b/osu.Game.Rulesets.Osu/Objects/OsuHitObjectDifficulty.cs
@@ -6,7 +6,7 @@ using System;
using System.Diagnostics;
using System.Linq;
-namespace osu.Game.Modes.Osu.Objects
+namespace osu.Game.Rulesets.Osu.Objects
{
internal class OsuHitObjectDifficulty
{
diff --git a/osu.Game.Modes.Osu/Objects/Slider.cs b/osu.Game.Rulesets.Osu/Objects/Slider.cs
similarity index 94%
rename from osu.Game.Modes.Osu/Objects/Slider.cs
rename to osu.Game.Rulesets.Osu/Objects/Slider.cs
index a01c517cb2..167bf21670 100644
--- a/osu.Game.Modes.Osu/Objects/Slider.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Slider.cs
@@ -3,15 +3,15 @@
using OpenTK;
using osu.Game.Beatmaps.Timing;
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Objects.Types;
using System;
using System.Collections.Generic;
-using osu.Game.Modes.Objects;
+using osu.Game.Rulesets.Objects;
using osu.Game.Database;
using System.Linq;
using osu.Game.Audio;
-namespace osu.Game.Modes.Osu.Objects
+namespace osu.Game.Rulesets.Osu.Objects
{
public class Slider : OsuHitObject, IHasCurve
{
diff --git a/osu.Game.Modes.Osu/Objects/SliderTick.cs b/osu.Game.Rulesets.Osu/Objects/SliderTick.cs
similarity index 83%
rename from osu.Game.Modes.Osu/Objects/SliderTick.cs
rename to osu.Game.Rulesets.Osu/Objects/SliderTick.cs
index 67f393b126..7112a39f97 100644
--- a/osu.Game.Modes.Osu/Objects/SliderTick.cs
+++ b/osu.Game.Rulesets.Osu/Objects/SliderTick.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Osu.Objects
+namespace osu.Game.Rulesets.Osu.Objects
{
public class SliderTick : OsuHitObject
{
diff --git a/osu.Game.Modes.Osu/Objects/Spinner.cs b/osu.Game.Rulesets.Osu/Objects/Spinner.cs
similarity index 79%
rename from osu.Game.Modes.Osu/Objects/Spinner.cs
rename to osu.Game.Rulesets.Osu/Objects/Spinner.cs
index dd9a6c386a..0a2c05833a 100644
--- a/osu.Game.Modes.Osu/Objects/Spinner.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Spinner.cs
@@ -1,9 +1,9 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Objects.Types;
-namespace osu.Game.Modes.Osu.Objects
+namespace osu.Game.Rulesets.Osu.Objects
{
public class Spinner : OsuHitObject, IHasEndTime
{
diff --git a/osu.Game.Modes.Osu/OpenTK.dll.config b/osu.Game.Rulesets.Osu/OpenTK.dll.config
similarity index 100%
rename from osu.Game.Modes.Osu/OpenTK.dll.config
rename to osu.Game.Rulesets.Osu/OpenTK.dll.config
diff --git a/osu.Game.Modes.Osu/OsuAutoReplay.cs b/osu.Game.Rulesets.Osu/OsuAutoReplay.cs
similarity index 96%
rename from osu.Game.Modes.Osu/OsuAutoReplay.cs
rename to osu.Game.Rulesets.Osu/OsuAutoReplay.cs
index ae85bd72d8..6fc005fb6a 100644
--- a/osu.Game.Modes.Osu/OsuAutoReplay.cs
+++ b/osu.Game.Rulesets.Osu/OsuAutoReplay.cs
@@ -4,16 +4,16 @@
using OpenTK;
using osu.Framework.MathUtils;
using osu.Game.Beatmaps;
-using osu.Game.Modes.Osu.Objects;
-using osu.Game.Modes.Osu.Objects.Drawables;
+using osu.Game.Rulesets.Osu.Objects;
+using osu.Game.Rulesets.Osu.Objects.Drawables;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using osu.Framework.Graphics;
-using osu.Game.Modes.Objects.Types;
-using osu.Game.Modes.Replays;
+using osu.Game.Rulesets.Objects.Types;
+using osu.Game.Rulesets.Replays;
-namespace osu.Game.Modes.Osu
+namespace osu.Game.Rulesets.Osu
{
public class OsuAutoReplay : Replay
{
diff --git a/osu.Game.Modes.Osu/OsuDifficultyCalculator.cs b/osu.Game.Rulesets.Osu/OsuDifficultyCalculator.cs
similarity index 94%
rename from osu.Game.Modes.Osu/OsuDifficultyCalculator.cs
rename to osu.Game.Rulesets.Osu/OsuDifficultyCalculator.cs
index 7696638082..14b890a055 100644
--- a/osu.Game.Modes.Osu/OsuDifficultyCalculator.cs
+++ b/osu.Game.Rulesets.Osu/OsuDifficultyCalculator.cs
@@ -2,13 +2,14 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Game.Beatmaps;
-using osu.Game.Modes.Objects.Types;
-using osu.Game.Modes.Osu.Beatmaps;
-using osu.Game.Modes.Osu.Objects;
+using osu.Game.Rulesets.Beatmaps;
+using osu.Game.Rulesets.Objects.Types;
+using osu.Game.Rulesets.Osu.Beatmaps;
+using osu.Game.Rulesets.Osu.Objects;
using System;
using System.Collections.Generic;
-namespace osu.Game.Modes.Osu
+namespace osu.Game.Rulesets.Osu
{
public class OsuDifficultyCalculator : DifficultyCalculator
{
@@ -180,7 +181,7 @@ namespace osu.Game.Modes.Osu
return difficulty;
}
- protected override IBeatmapConverter CreateBeatmapConverter() => new OsuBeatmapConverter();
+ protected override BeatmapConverter CreateBeatmapConverter() => new OsuBeatmapConverter();
// Those values are used as array indices. Be careful when changing them!
public enum DifficultyType
diff --git a/osu.Game.Modes.Osu/OsuKeyConversionInputManager.cs b/osu.Game.Rulesets.Osu/OsuKeyConversionInputManager.cs
similarity index 95%
rename from osu.Game.Modes.Osu/OsuKeyConversionInputManager.cs
rename to osu.Game.Rulesets.Osu/OsuKeyConversionInputManager.cs
index 567c7a35b1..e71f15cd65 100644
--- a/osu.Game.Modes.Osu/OsuKeyConversionInputManager.cs
+++ b/osu.Game.Rulesets.Osu/OsuKeyConversionInputManager.cs
@@ -11,7 +11,7 @@ using OpenTK.Input;
using KeyboardState = osu.Framework.Input.KeyboardState;
using MouseState = osu.Framework.Input.MouseState;
-namespace osu.Game.Modes.Osu
+namespace osu.Game.Rulesets.Osu
{
public class OsuKeyConversionInputManager : KeyConversionInputManager
{
diff --git a/osu.Game.Modes.Osu/OsuRuleset.cs b/osu.Game.Rulesets.Osu/OsuRuleset.cs
similarity index 90%
rename from osu.Game.Modes.Osu/OsuRuleset.cs
rename to osu.Game.Rulesets.Osu/OsuRuleset.cs
index 4de890ac5f..39e911651a 100644
--- a/osu.Game.Modes.Osu/OsuRuleset.cs
+++ b/osu.Game.Rulesets.Osu/OsuRuleset.cs
@@ -4,18 +4,18 @@
using OpenTK.Input;
using osu.Game.Beatmaps;
using osu.Game.Graphics;
-using osu.Game.Modes.Mods;
-using osu.Game.Modes.Osu.Mods;
-using osu.Game.Modes.Osu.Objects;
-using osu.Game.Modes.Osu.UI;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Mods;
+using osu.Game.Rulesets.Osu.Mods;
+using osu.Game.Rulesets.Osu.Objects;
+using osu.Game.Rulesets.Osu.UI;
+using osu.Game.Rulesets.UI;
using osu.Game.Screens.Play;
using System.Collections.Generic;
using System.Linq;
-using osu.Game.Modes.Osu.Scoring;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Osu.Scoring;
+using osu.Game.Rulesets.Scoring;
-namespace osu.Game.Modes.Osu
+namespace osu.Game.Rulesets.Osu
{
public class OsuRuleset : Ruleset
{
diff --git a/osu.Game.Modes.Osu/Properties/AssemblyInfo.cs b/osu.Game.Rulesets.Osu/Properties/AssemblyInfo.cs
similarity index 100%
rename from osu.Game.Modes.Osu/Properties/AssemblyInfo.cs
rename to osu.Game.Rulesets.Osu/Properties/AssemblyInfo.cs
diff --git a/osu.Game.Modes.Osu/Scoring/OsuScore.cs b/osu.Game.Rulesets.Osu/Scoring/OsuScore.cs
similarity index 71%
rename from osu.Game.Modes.Osu/Scoring/OsuScore.cs
rename to osu.Game.Rulesets.Osu/Scoring/OsuScore.cs
index a0a639a59e..c73cfe3338 100644
--- a/osu.Game.Modes.Osu/Scoring/OsuScore.cs
+++ b/osu.Game.Rulesets.Osu/Scoring/OsuScore.cs
@@ -1,9 +1,9 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Scoring;
-namespace osu.Game.Modes.Osu.Scoring
+namespace osu.Game.Rulesets.Osu.Scoring
{
internal class OsuScore : Score
{
diff --git a/osu.Game.Modes.Osu/Scoring/OsuScoreProcessor.cs b/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs
similarity index 83%
rename from osu.Game.Modes.Osu/Scoring/OsuScoreProcessor.cs
rename to osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs
index 3b798a2fad..0c38f66abe 100644
--- a/osu.Game.Modes.Osu/Scoring/OsuScoreProcessor.cs
+++ b/osu.Game.Rulesets.Osu/Scoring/OsuScoreProcessor.cs
@@ -1,13 +1,13 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Osu.Judgements;
-using osu.Game.Modes.Osu.Objects;
-using osu.Game.Modes.Scoring;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Osu.Judgements;
+using osu.Game.Rulesets.Osu.Objects;
+using osu.Game.Rulesets.Scoring;
+using osu.Game.Rulesets.UI;
-namespace osu.Game.Modes.Osu.Scoring
+namespace osu.Game.Rulesets.Osu.Scoring
{
internal class OsuScoreProcessor : ScoreProcessor
{
diff --git a/osu.Game.Modes.Osu/UI/OsuHitRenderer.cs b/osu.Game.Rulesets.Osu/UI/OsuHitRenderer.cs
similarity index 67%
rename from osu.Game.Modes.Osu/UI/OsuHitRenderer.cs
rename to osu.Game.Rulesets.Osu/UI/OsuHitRenderer.cs
index 7e314c5ba1..687518e6d5 100644
--- a/osu.Game.Modes.Osu/UI/OsuHitRenderer.cs
+++ b/osu.Game.Rulesets.Osu/UI/OsuHitRenderer.cs
@@ -3,17 +3,18 @@
using OpenTK;
using osu.Game.Beatmaps;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Osu.Beatmaps;
-using osu.Game.Modes.Osu.Judgements;
-using osu.Game.Modes.Osu.Objects;
-using osu.Game.Modes.Osu.Objects.Drawables;
-using osu.Game.Modes.Osu.Scoring;
-using osu.Game.Modes.Scoring;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Beatmaps;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Osu.Beatmaps;
+using osu.Game.Rulesets.Osu.Judgements;
+using osu.Game.Rulesets.Osu.Objects;
+using osu.Game.Rulesets.Osu.Objects.Drawables;
+using osu.Game.Rulesets.Osu.Scoring;
+using osu.Game.Rulesets.Scoring;
+using osu.Game.Rulesets.UI;
using osu.Game.Screens.Play;
-namespace osu.Game.Modes.Osu.UI
+namespace osu.Game.Rulesets.Osu.UI
{
public class OsuHitRenderer : HitRenderer
{
@@ -24,9 +25,9 @@ namespace osu.Game.Modes.Osu.UI
public override ScoreProcessor CreateScoreProcessor() => new OsuScoreProcessor(this);
- protected override IBeatmapConverter CreateBeatmapConverter() => new OsuBeatmapConverter();
+ protected override BeatmapConverter CreateBeatmapConverter() => new OsuBeatmapConverter();
- protected override IBeatmapProcessor CreateBeatmapProcessor() => new OsuBeatmapProcessor();
+ protected override BeatmapProcessor CreateBeatmapProcessor() => new OsuBeatmapProcessor();
protected override Playfield CreatePlayfield() => new OsuPlayfield();
diff --git a/osu.Game.Modes.Osu/UI/OsuPlayfield.cs b/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs
similarity index 84%
rename from osu.Game.Modes.Osu/UI/OsuPlayfield.cs
rename to osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs
index 4164607b4d..53eedea073 100644
--- a/osu.Game.Modes.Osu/UI/OsuPlayfield.cs
+++ b/osu.Game.Rulesets.Osu/UI/OsuPlayfield.cs
@@ -4,16 +4,16 @@
using OpenTK;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Osu.Objects;
-using osu.Game.Modes.Osu.Objects.Drawables;
-using osu.Game.Modes.Osu.Objects.Drawables.Connections;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Osu.Objects;
+using osu.Game.Rulesets.Osu.Objects.Drawables;
+using osu.Game.Rulesets.Osu.Objects.Drawables.Connections;
+using osu.Game.Rulesets.UI;
using System.Linq;
using osu.Game.Graphics.Cursor;
-using osu.Game.Modes.Osu.Judgements;
+using osu.Game.Rulesets.Osu.Judgements;
-namespace osu.Game.Modes.Osu.UI
+namespace osu.Game.Rulesets.Osu.UI
{
public class OsuPlayfield : Playfield
{
@@ -23,6 +23,8 @@ namespace osu.Game.Modes.Osu.UI
public override bool ProvidingUserCursor => true;
+ public static readonly Vector2 BASE_SIZE = new Vector2(512, 384);
+
public override Vector2 Size
{
get
@@ -34,7 +36,7 @@ namespace osu.Game.Modes.Osu.UI
}
}
- public OsuPlayfield() : base(512)
+ public OsuPlayfield() : base(BASE_SIZE.X)
{
Anchor = Anchor.Centre;
Origin = Anchor.Centre;
@@ -94,4 +96,4 @@ namespace osu.Game.Modes.Osu.UI
judgementLayer.Add(explosion);
}
}
-}
\ No newline at end of file
+}
diff --git a/osu.Game.Modes.Osu/osu.Game.Modes.Osu.csproj b/osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj
similarity index 95%
rename from osu.Game.Modes.Osu/osu.Game.Modes.Osu.csproj
rename to osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj
index c98f554ba5..272a35c286 100644
--- a/osu.Game.Modes.Osu/osu.Game.Modes.Osu.csproj
+++ b/osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj
@@ -7,8 +7,8 @@
{C92A607B-1FDD-4954-9F92-03FF547D9080}
Library
Properties
- osu.Game.Modes.Osu
- osu.Game.Modes.Osu
+ osu.Game.Rulesets.Osu
+ osu.Game.Rulesets.Osu
v4.5
512
diff --git a/osu.Game.Modes.Osu/packages.config b/osu.Game.Rulesets.Osu/packages.config
similarity index 100%
rename from osu.Game.Modes.Osu/packages.config
rename to osu.Game.Rulesets.Osu/packages.config
diff --git a/osu.Game.Modes.Taiko/Beatmaps/TaikoBeatmapConverter.cs b/osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs
similarity index 82%
rename from osu.Game.Modes.Taiko/Beatmaps/TaikoBeatmapConverter.cs
rename to osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs
index aee06ad796..0b487bfc19 100644
--- a/osu.Game.Modes.Taiko/Beatmaps/TaikoBeatmapConverter.cs
+++ b/osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs
@@ -2,19 +2,20 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Game.Beatmaps;
-using osu.Game.Modes.Objects;
-using osu.Game.Modes.Objects.Types;
-using osu.Game.Modes.Taiko.Objects;
+using osu.Game.Rulesets.Objects;
+using osu.Game.Rulesets.Objects.Types;
+using osu.Game.Rulesets.Taiko.Objects;
using System;
using System.Collections.Generic;
using System.Linq;
using osu.Game.Database;
using osu.Game.IO.Serialization;
using osu.Game.Audio;
+using osu.Game.Rulesets.Beatmaps;
-namespace osu.Game.Modes.Taiko.Beatmaps
+namespace osu.Game.Rulesets.Taiko.Beatmaps
{
- internal class TaikoBeatmapConverter : IBeatmapConverter
+ internal class TaikoBeatmapConverter : BeatmapConverter
{
///
/// osu! is generally slower than taiko, so a factor is added to increase
@@ -38,25 +39,30 @@ namespace osu.Game.Modes.Taiko.Beatmaps
///
private const float taiko_base_distance = 100;
- public Beatmap Convert(Beatmap original)
+ protected override IEnumerable ValidConversionTypes { get; } = new[] { typeof(HitObject) };
+
+ protected override Beatmap ConvertBeatmap(Beatmap original)
{
+ // Rewrite the beatmap info to add the slider velocity multiplier
BeatmapInfo info = original.BeatmapInfo.DeepClone();
info.Difficulty.SliderMultiplier *= legacy_velocity_multiplier;
- return new Beatmap(original)
+ Beatmap converted = base.ConvertBeatmap(original);
+
+ // Post processing step to transform hit objects with the same start time into strong hits
+ converted.HitObjects = converted.HitObjects.GroupBy(t => t.StartTime).Select(x =>
{
- BeatmapInfo = info,
- HitObjects = original.HitObjects.SelectMany(h => convertHitObject(h, original)).ToList()
- };
+ TaikoHitObject first = x.First();
+ if (x.Skip(1).Any())
+ first.IsStrong = true;
+ return first;
+ }).ToList();
+
+ return converted;
}
- private IEnumerable convertHitObject(HitObject obj, Beatmap beatmap)
+ protected override IEnumerable ConvertHitObject(HitObject obj, Beatmap beatmap)
{
- // Check if this HitObject is already a TaikoHitObject, and return it if so
- var originalTaiko = obj as TaikoHitObject;
- if (originalTaiko != null)
- yield return originalTaiko;
-
var distanceData = obj as IHasDistance;
var repeatsData = obj as IHasRepeats;
var endTimeData = obj as IHasEndTime;
diff --git a/osu.Game.Modes.Taiko/Judgements/TaikoDrumRollTickJudgement.cs b/osu.Game.Rulesets.Taiko/Judgements/TaikoDrumRollTickJudgement.cs
similarity index 92%
rename from osu.Game.Modes.Taiko/Judgements/TaikoDrumRollTickJudgement.cs
rename to osu.Game.Rulesets.Taiko/Judgements/TaikoDrumRollTickJudgement.cs
index 6ae476b265..78a5b29d36 100644
--- a/osu.Game.Modes.Taiko/Judgements/TaikoDrumRollTickJudgement.cs
+++ b/osu.Game.Rulesets.Taiko/Judgements/TaikoDrumRollTickJudgement.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Taiko.Judgements
+namespace osu.Game.Rulesets.Taiko.Judgements
{
public class TaikoDrumRollTickJudgement : TaikoJudgement
{
diff --git a/osu.Game.Modes.Taiko/Judgements/TaikoHitResult.cs b/osu.Game.Rulesets.Taiko/Judgements/TaikoHitResult.cs
similarity index 84%
rename from osu.Game.Modes.Taiko/Judgements/TaikoHitResult.cs
rename to osu.Game.Rulesets.Taiko/Judgements/TaikoHitResult.cs
index cbc3919c4f..5fd850d6b0 100644
--- a/osu.Game.Modes.Taiko/Judgements/TaikoHitResult.cs
+++ b/osu.Game.Rulesets.Taiko/Judgements/TaikoHitResult.cs
@@ -3,7 +3,7 @@
using System.ComponentModel;
-namespace osu.Game.Modes.Taiko.Judgements
+namespace osu.Game.Rulesets.Taiko.Judgements
{
public enum TaikoHitResult
{
diff --git a/osu.Game.Modes.Taiko/Judgements/TaikoJudgement.cs b/osu.Game.Rulesets.Taiko/Judgements/TaikoJudgement.cs
similarity index 93%
rename from osu.Game.Modes.Taiko/Judgements/TaikoJudgement.cs
rename to osu.Game.Rulesets.Taiko/Judgements/TaikoJudgement.cs
index 7676ef8c29..7bca59bf11 100644
--- a/osu.Game.Modes.Taiko/Judgements/TaikoJudgement.cs
+++ b/osu.Game.Rulesets.Taiko/Judgements/TaikoJudgement.cs
@@ -1,11 +1,11 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Judgements;
+using osu.Game.Rulesets.Judgements;
using osu.Framework.Extensions;
-using osu.Game.Modes.Objects.Drawables;
+using osu.Game.Rulesets.Objects.Drawables;
-namespace osu.Game.Modes.Taiko.Judgements
+namespace osu.Game.Rulesets.Taiko.Judgements
{
public class TaikoJudgement : Judgement
{
diff --git a/osu.Game.Modes.Taiko/Judgements/TaikoStrongHitJudgement.cs b/osu.Game.Rulesets.Taiko/Judgements/TaikoStrongHitJudgement.cs
similarity index 84%
rename from osu.Game.Modes.Taiko/Judgements/TaikoStrongHitJudgement.cs
rename to osu.Game.Rulesets.Taiko/Judgements/TaikoStrongHitJudgement.cs
index ee978d0026..4996cac39e 100644
--- a/osu.Game.Modes.Taiko/Judgements/TaikoStrongHitJudgement.cs
+++ b/osu.Game.Rulesets.Taiko/Judgements/TaikoStrongHitJudgement.cs
@@ -1,9 +1,9 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Judgements;
+using osu.Game.Rulesets.Judgements;
-namespace osu.Game.Modes.Taiko.Judgements
+namespace osu.Game.Rulesets.Taiko.Judgements
{
public class TaikoStrongHitJudgement : TaikoJudgement, IPartialJudgement
{
diff --git a/osu.Game.Modes.Taiko/Mods/TaikoMod.cs b/osu.Game.Rulesets.Taiko/Mods/TaikoMod.cs
similarity index 87%
rename from osu.Game.Modes.Taiko/Mods/TaikoMod.cs
rename to osu.Game.Rulesets.Taiko/Mods/TaikoMod.cs
index 422f0ec250..0b8492ef8c 100644
--- a/osu.Game.Modes.Taiko/Mods/TaikoMod.cs
+++ b/osu.Game.Rulesets.Taiko/Mods/TaikoMod.cs
@@ -2,13 +2,13 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Game.Beatmaps;
-using osu.Game.Modes.Mods;
-using osu.Game.Modes.Scoring;
-using osu.Game.Modes.Taiko.Objects;
-using osu.Game.Modes.Taiko.Replays;
+using osu.Game.Rulesets.Mods;
+using osu.Game.Rulesets.Scoring;
+using osu.Game.Rulesets.Taiko.Objects;
+using osu.Game.Rulesets.Taiko.Replays;
using osu.Game.Users;
-namespace osu.Game.Modes.Taiko.Mods
+namespace osu.Game.Rulesets.Taiko.Mods
{
public class TaikoModNoFail : ModNoFail
{
diff --git a/osu.Game.Modes.Taiko/Objects/BarLine.cs b/osu.Game.Rulesets.Taiko/Objects/BarLine.cs
similarity index 80%
rename from osu.Game.Modes.Taiko/Objects/BarLine.cs
rename to osu.Game.Rulesets.Taiko/Objects/BarLine.cs
index ae3c03de5e..0e6ff9f758 100644
--- a/osu.Game.Modes.Taiko/Objects/BarLine.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/BarLine.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Taiko.Objects
+namespace osu.Game.Rulesets.Taiko.Objects
{
public class BarLine : TaikoHitObject
{
diff --git a/osu.Game.Modes.Taiko/Objects/CentreHit.cs b/osu.Game.Rulesets.Taiko/Objects/CentreHit.cs
similarity index 79%
rename from osu.Game.Modes.Taiko/Objects/CentreHit.cs
rename to osu.Game.Rulesets.Taiko/Objects/CentreHit.cs
index 258112f045..f82058fe01 100644
--- a/osu.Game.Modes.Taiko/Objects/CentreHit.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/CentreHit.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Taiko.Objects
+namespace osu.Game.Rulesets.Taiko.Objects
{
public class CentreHit : Hit
{
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableBarLine.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableBarLine.cs
similarity index 94%
rename from osu.Game.Modes.Taiko/Objects/Drawables/DrawableBarLine.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableBarLine.cs
index 59f8aca867..4c83e08bab 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableBarLine.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableBarLine.cs
@@ -6,7 +6,7 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using OpenTK;
-namespace osu.Game.Modes.Taiko.Objects.Drawables
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables
{
///
/// A line that scrolls alongside hit objects in the playfield and visualises control points.
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableBarLineMajor.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableBarLineMajor.cs
similarity index 94%
rename from osu.Game.Modes.Taiko/Objects/Drawables/DrawableBarLineMajor.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableBarLineMajor.cs
index 73565e6948..e64682a1e4 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableBarLineMajor.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableBarLineMajor.cs
@@ -6,7 +6,7 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using OpenTK;
-namespace osu.Game.Modes.Taiko.Objects.Drawables
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables
{
public class DrawableBarLineMajor : DrawableBarLine
{
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableCentreHit.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableCentreHit.cs
similarity index 83%
rename from osu.Game.Modes.Taiko/Objects/Drawables/DrawableCentreHit.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableCentreHit.cs
index ff5ac859b4..8bb78669ca 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableCentreHit.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableCentreHit.cs
@@ -3,10 +3,10 @@
using osu.Framework.Allocation;
using osu.Game.Graphics;
-using osu.Game.Modes.Taiko.Objects.Drawables.Pieces;
+using osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces;
using OpenTK.Input;
-namespace osu.Game.Modes.Taiko.Objects.Drawables
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables
{
public class DrawableCentreHit : DrawableHit
{
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableCentreHitStrong.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableCentreHitStrong.cs
similarity index 83%
rename from osu.Game.Modes.Taiko/Objects/Drawables/DrawableCentreHitStrong.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableCentreHitStrong.cs
index bc24e2aa65..434fb9377f 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableCentreHitStrong.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableCentreHitStrong.cs
@@ -3,10 +3,10 @@
using osu.Framework.Allocation;
using osu.Game.Graphics;
-using osu.Game.Modes.Taiko.Objects.Drawables.Pieces;
+using osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces;
using OpenTK.Input;
-namespace osu.Game.Modes.Taiko.Objects.Drawables
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables
{
public class DrawableCentreHitStrong : DrawableHitStrong
{
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableDrumRoll.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRoll.cs
similarity index 92%
rename from osu.Game.Modes.Taiko/Objects/Drawables/DrawableDrumRoll.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRoll.cs
index 0a0098dd34..4562501ed1 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableDrumRoll.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRoll.cs
@@ -5,13 +5,13 @@ using System.Linq;
using osu.Framework.Allocation;
using osu.Framework.MathUtils;
using osu.Game.Graphics;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Taiko.Judgements;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Taiko.Judgements;
using OpenTK;
using OpenTK.Graphics;
-using osu.Game.Modes.Taiko.Objects.Drawables.Pieces;
+using osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces;
-namespace osu.Game.Modes.Taiko.Objects.Drawables
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables
{
public class DrawableDrumRoll : DrawableTaikoHitObject
{
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableDrumRollTick.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRollTick.cs
similarity index 87%
rename from osu.Game.Modes.Taiko/Objects/Drawables/DrawableDrumRollTick.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRollTick.cs
index 296affedaf..ad4fd30a53 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableDrumRollTick.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRollTick.cs
@@ -3,12 +3,12 @@
using System;
using osu.Framework.Graphics;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Taiko.Judgements;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Taiko.Judgements;
using OpenTK.Input;
-using osu.Game.Modes.Taiko.Objects.Drawables.Pieces;
+using osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces;
-namespace osu.Game.Modes.Taiko.Objects.Drawables
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables
{
public class DrawableDrumRollTick : DrawableTaikoHitObject
{
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableHit.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs
similarity index 91%
rename from osu.Game.Modes.Taiko/Objects/Drawables/DrawableHit.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs
index 167fbebd7b..a4a46e3b48 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableHit.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHit.cs
@@ -4,12 +4,12 @@
using System;
using System.Linq;
using osu.Framework.Graphics;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Taiko.Judgements;
-using osu.Game.Modes.Taiko.Objects.Drawables.Pieces;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Taiko.Judgements;
+using osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces;
using OpenTK.Input;
-namespace osu.Game.Modes.Taiko.Objects.Drawables
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables
{
public abstract class DrawableHit : DrawableTaikoHitObject
{
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableHitStrong.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHitStrong.cs
similarity index 90%
rename from osu.Game.Modes.Taiko/Objects/Drawables/DrawableHitStrong.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHitStrong.cs
index 4ab029acb3..1c6b12ea43 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableHitStrong.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableHitStrong.cs
@@ -4,12 +4,12 @@
using System;
using System.Linq;
using osu.Framework.Input;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Taiko.Judgements;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Taiko.Judgements;
using OpenTK.Input;
-using osu.Game.Modes.Taiko.Objects.Drawables.Pieces;
+using osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces;
-namespace osu.Game.Modes.Taiko.Objects.Drawables
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables
{
public abstract class DrawableHitStrong : DrawableHit
{
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableRimHit.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableRimHit.cs
similarity index 83%
rename from osu.Game.Modes.Taiko/Objects/Drawables/DrawableRimHit.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableRimHit.cs
index 5a311d51ef..20e8d36105 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableRimHit.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableRimHit.cs
@@ -3,10 +3,10 @@
using osu.Framework.Allocation;
using osu.Game.Graphics;
-using osu.Game.Modes.Taiko.Objects.Drawables.Pieces;
+using osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces;
using OpenTK.Input;
-namespace osu.Game.Modes.Taiko.Objects.Drawables
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables
{
public class DrawableRimHit : DrawableHit
{
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableRimHitStrong.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableRimHitStrong.cs
similarity index 83%
rename from osu.Game.Modes.Taiko/Objects/Drawables/DrawableRimHitStrong.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableRimHitStrong.cs
index 5789dfb140..4b1bb62bab 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableRimHitStrong.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableRimHitStrong.cs
@@ -3,10 +3,10 @@
using osu.Framework.Allocation;
using osu.Game.Graphics;
-using osu.Game.Modes.Taiko.Objects.Drawables.Pieces;
+using osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces;
using OpenTK.Input;
-namespace osu.Game.Modes.Taiko.Objects.Drawables
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables
{
public class DrawableRimHitStrong : DrawableHitStrong
{
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableSwell.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableSwell.cs
similarity index 95%
rename from osu.Game.Modes.Taiko/Objects/Drawables/DrawableSwell.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableSwell.cs
index 1e440df69a..57b2576a8b 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableSwell.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableSwell.cs
@@ -9,14 +9,14 @@ using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Game.Graphics;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Taiko.Judgements;
-using osu.Game.Modes.Taiko.Objects.Drawables.Pieces;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Taiko.Judgements;
+using osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces;
using OpenTK;
using OpenTK.Graphics;
using OpenTK.Input;
-namespace osu.Game.Modes.Taiko.Objects.Drawables
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables
{
public class DrawableSwell : DrawableTaikoHitObject
{
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs
similarity index 91%
rename from osu.Game.Modes.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs
index f15f2bd152..24aa366944 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs
@@ -5,13 +5,13 @@ using System.Collections.Generic;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Input;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Taiko.Judgements;
-using osu.Game.Modes.Taiko.Objects.Drawables.Pieces;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Taiko.Judgements;
+using osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces;
using OpenTK;
using OpenTK.Input;
-namespace osu.Game.Modes.Taiko.Objects.Drawables
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables
{
public abstract class DrawableTaikoHitObject : DrawableHitObject
where TaikoHitType : TaikoHitObject
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/Pieces/CentreHitSymbolPiece.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/CentreHitSymbolPiece.cs
similarity index 90%
rename from osu.Game.Modes.Taiko/Objects/Drawables/Pieces/CentreHitSymbolPiece.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/CentreHitSymbolPiece.cs
index 0cf4e97b41..ddf1492ecc 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/Pieces/CentreHitSymbolPiece.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/CentreHitSymbolPiece.cs
@@ -6,7 +6,7 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using OpenTK;
-namespace osu.Game.Modes.Taiko.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces
{
///
/// The symbol used for centre hit pieces.
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/Pieces/CirclePiece.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/CirclePiece.cs
similarity index 95%
rename from osu.Game.Modes.Taiko/Objects/Drawables/Pieces/CirclePiece.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/CirclePiece.cs
index 216e05ebc4..9f91488fe3 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/Pieces/CirclePiece.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/CirclePiece.cs
@@ -8,7 +8,7 @@ using osu.Framework.Graphics.Sprites;
using osu.Game.Graphics.Backgrounds;
using OpenTK.Graphics;
-namespace osu.Game.Modes.Taiko.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces
{
///
/// A circle piece which is used uniformly through osu!taiko to visualise hitobjects.
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/Pieces/ElongatedCirclePiece.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/ElongatedCirclePiece.cs
similarity index 89%
rename from osu.Game.Modes.Taiko/Objects/Drawables/Pieces/ElongatedCirclePiece.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/ElongatedCirclePiece.cs
index 5431507614..1af3705694 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/Pieces/ElongatedCirclePiece.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/ElongatedCirclePiece.cs
@@ -3,9 +3,9 @@
using System;
using osu.Framework.Graphics.Primitives;
-using osu.Game.Modes.Taiko.UI;
+using osu.Game.Rulesets.Taiko.UI;
-namespace osu.Game.Modes.Taiko.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces
{
public class ElongatedCirclePiece : CirclePiece
{
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/Pieces/RimHitSymbolPiece.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/RimHitSymbolPiece.cs
similarity index 91%
rename from osu.Game.Modes.Taiko/Objects/Drawables/Pieces/RimHitSymbolPiece.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/RimHitSymbolPiece.cs
index 6e19497978..4146edbdf7 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/Pieces/RimHitSymbolPiece.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/RimHitSymbolPiece.cs
@@ -7,7 +7,7 @@ using osu.Framework.Graphics.Sprites;
using OpenTK;
using OpenTK.Graphics;
-namespace osu.Game.Modes.Taiko.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces
{
///
/// The symbol used for rim hit pieces.
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/Pieces/SwellSymbolPiece.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/SwellSymbolPiece.cs
similarity index 88%
rename from osu.Game.Modes.Taiko/Objects/Drawables/Pieces/SwellSymbolPiece.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/SwellSymbolPiece.cs
index e491793902..0f703837a9 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/Pieces/SwellSymbolPiece.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/SwellSymbolPiece.cs
@@ -4,7 +4,7 @@
using osu.Framework.Graphics;
using osu.Game.Graphics;
-namespace osu.Game.Modes.Taiko.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces
{
///
/// The symbol used for swell pieces.
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/Pieces/TaikoPiece.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/TaikoPiece.cs
similarity index 91%
rename from osu.Game.Modes.Taiko/Objects/Drawables/Pieces/TaikoPiece.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/TaikoPiece.cs
index 2220438a4a..83b2e59e44 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/Pieces/TaikoPiece.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/TaikoPiece.cs
@@ -6,7 +6,7 @@ using osu.Game.Graphics;
using OpenTK;
using OpenTK.Graphics;
-namespace osu.Game.Modes.Taiko.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces
{
public class TaikoPiece : Container, IHasAccentColour
{
diff --git a/osu.Game.Modes.Taiko/Objects/Drawables/Pieces/TickPiece.cs b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/TickPiece.cs
similarity index 93%
rename from osu.Game.Modes.Taiko/Objects/Drawables/Pieces/TickPiece.cs
rename to osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/TickPiece.cs
index 53e795e2e2..c3bc52796c 100644
--- a/osu.Game.Modes.Taiko/Objects/Drawables/Pieces/TickPiece.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Drawables/Pieces/TickPiece.cs
@@ -7,7 +7,7 @@ using osu.Framework.Graphics.Sprites;
using OpenTK;
using OpenTK.Graphics;
-namespace osu.Game.Modes.Taiko.Objects.Drawables.Pieces
+namespace osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces
{
public class TickPiece : TaikoPiece
{
diff --git a/osu.Game.Modes.Taiko/Objects/DrumRoll.cs b/osu.Game.Rulesets.Taiko/Objects/DrumRoll.cs
similarity index 94%
rename from osu.Game.Modes.Taiko/Objects/DrumRoll.cs
rename to osu.Game.Rulesets.Taiko/Objects/DrumRoll.cs
index 4f26ffd3a1..4f89fb8248 100644
--- a/osu.Game.Modes.Taiko/Objects/DrumRoll.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/DrumRoll.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Objects.Types;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -9,7 +9,7 @@ using osu.Game.Beatmaps.Timing;
using osu.Game.Database;
using osu.Game.Audio;
-namespace osu.Game.Modes.Taiko.Objects
+namespace osu.Game.Rulesets.Taiko.Objects
{
public class DrumRoll : TaikoHitObject, IHasEndTime
{
diff --git a/osu.Game.Modes.Taiko/Objects/DrumRollTick.cs b/osu.Game.Rulesets.Taiko/Objects/DrumRollTick.cs
similarity index 91%
rename from osu.Game.Modes.Taiko/Objects/DrumRollTick.cs
rename to osu.Game.Rulesets.Taiko/Objects/DrumRollTick.cs
index 32e8851b66..01f9caf215 100644
--- a/osu.Game.Modes.Taiko/Objects/DrumRollTick.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/DrumRollTick.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Taiko.Objects
+namespace osu.Game.Rulesets.Taiko.Objects
{
public class DrumRollTick : TaikoHitObject
{
diff --git a/osu.Game.Modes.Taiko/Objects/Hit.cs b/osu.Game.Rulesets.Taiko/Objects/Hit.cs
similarity index 93%
rename from osu.Game.Modes.Taiko/Objects/Hit.cs
rename to osu.Game.Rulesets.Taiko/Objects/Hit.cs
index ad8d07d901..136e89124c 100644
--- a/osu.Game.Modes.Taiko/Objects/Hit.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Hit.cs
@@ -4,7 +4,7 @@
using osu.Game.Beatmaps.Timing;
using osu.Game.Database;
-namespace osu.Game.Modes.Taiko.Objects
+namespace osu.Game.Rulesets.Taiko.Objects
{
public class Hit : TaikoHitObject
{
diff --git a/osu.Game.Modes.Taiko/Objects/RimHit.cs b/osu.Game.Rulesets.Taiko/Objects/RimHit.cs
similarity index 79%
rename from osu.Game.Modes.Taiko/Objects/RimHit.cs
rename to osu.Game.Rulesets.Taiko/Objects/RimHit.cs
index aae93ec10d..8e09842294 100644
--- a/osu.Game.Modes.Taiko/Objects/RimHit.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/RimHit.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Taiko.Objects
+namespace osu.Game.Rulesets.Taiko.Objects
{
public class RimHit : Hit
{
diff --git a/osu.Game.Modes.Taiko/Objects/Swell.cs b/osu.Game.Rulesets.Taiko/Objects/Swell.cs
similarity index 82%
rename from osu.Game.Modes.Taiko/Objects/Swell.cs
rename to osu.Game.Rulesets.Taiko/Objects/Swell.cs
index 97101ea797..f74a543ca9 100644
--- a/osu.Game.Modes.Taiko/Objects/Swell.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Swell.cs
@@ -1,9 +1,9 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Objects.Types;
-namespace osu.Game.Modes.Taiko.Objects
+namespace osu.Game.Rulesets.Taiko.Objects
{
public class Swell : TaikoHitObject, IHasEndTime
{
diff --git a/osu.Game.Modes.Taiko/Objects/TaikoHitObject.cs b/osu.Game.Rulesets.Taiko/Objects/TaikoHitObject.cs
similarity index 93%
rename from osu.Game.Modes.Taiko/Objects/TaikoHitObject.cs
rename to osu.Game.Rulesets.Taiko/Objects/TaikoHitObject.cs
index ebc9b19d3a..6a6353fde2 100644
--- a/osu.Game.Modes.Taiko/Objects/TaikoHitObject.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/TaikoHitObject.cs
@@ -3,10 +3,10 @@
using osu.Game.Beatmaps.Timing;
using osu.Game.Database;
-using osu.Game.Modes.Objects;
-using osu.Game.Modes.Taiko.UI;
+using osu.Game.Rulesets.Objects;
+using osu.Game.Rulesets.Taiko.UI;
-namespace osu.Game.Modes.Taiko.Objects
+namespace osu.Game.Rulesets.Taiko.Objects
{
public abstract class TaikoHitObject : HitObject
{
diff --git a/osu.Game.Modes.Taiko/OpenTK.dll.config b/osu.Game.Rulesets.Taiko/OpenTK.dll.config
similarity index 100%
rename from osu.Game.Modes.Taiko/OpenTK.dll.config
rename to osu.Game.Rulesets.Taiko/OpenTK.dll.config
diff --git a/osu.Game.Modes.Taiko/Properties/AssemblyInfo.cs b/osu.Game.Rulesets.Taiko/Properties/AssemblyInfo.cs
similarity index 90%
rename from osu.Game.Modes.Taiko/Properties/AssemblyInfo.cs
rename to osu.Game.Rulesets.Taiko/Properties/AssemblyInfo.cs
index 94ec895707..89c07517ca 100644
--- a/osu.Game.Modes.Taiko/Properties/AssemblyInfo.cs
+++ b/osu.Game.Rulesets.Taiko/Properties/AssemblyInfo.cs
@@ -7,11 +7,11 @@ using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
-[assembly: AssemblyTitle("osu.Game.Modes.Taiko")]
+[assembly: AssemblyTitle("osu.Game.Rulesets.Taiko")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("osu.Game.Modes.Taiko")]
+[assembly: AssemblyProduct("osu.Game.Rulesets.Taiko")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
diff --git a/osu.Game.Modes.Taiko/Replays/TaikoAutoReplay.cs b/osu.Game.Rulesets.Taiko/Replays/TaikoAutoReplay.cs
similarity index 93%
rename from osu.Game.Modes.Taiko/Replays/TaikoAutoReplay.cs
rename to osu.Game.Rulesets.Taiko/Replays/TaikoAutoReplay.cs
index 89d974baf9..b44c789be5 100644
--- a/osu.Game.Modes.Taiko/Replays/TaikoAutoReplay.cs
+++ b/osu.Game.Rulesets.Taiko/Replays/TaikoAutoReplay.cs
@@ -3,11 +3,11 @@
using System;
using osu.Game.Beatmaps;
-using osu.Game.Modes.Objects.Types;
-using osu.Game.Modes.Taiko.Objects;
-using osu.Game.Modes.Replays;
+using osu.Game.Rulesets.Objects.Types;
+using osu.Game.Rulesets.Taiko.Objects;
+using osu.Game.Rulesets.Replays;
-namespace osu.Game.Modes.Taiko.Replays
+namespace osu.Game.Rulesets.Taiko.Replays
{
public class TaikoAutoReplay : Replay
{
diff --git a/osu.Game.Modes.Taiko/Replays/TaikoFramedReplayInputHandler.cs b/osu.Game.Rulesets.Taiko/Replays/TaikoFramedReplayInputHandler.cs
similarity index 90%
rename from osu.Game.Modes.Taiko/Replays/TaikoFramedReplayInputHandler.cs
rename to osu.Game.Rulesets.Taiko/Replays/TaikoFramedReplayInputHandler.cs
index 44fca4abe7..f6425dd66f 100644
--- a/osu.Game.Modes.Taiko/Replays/TaikoFramedReplayInputHandler.cs
+++ b/osu.Game.Rulesets.Taiko/Replays/TaikoFramedReplayInputHandler.cs
@@ -1,12 +1,12 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Replays;
+using osu.Game.Rulesets.Replays;
using System.Collections.Generic;
using osu.Framework.Input;
using OpenTK.Input;
-namespace osu.Game.Modes.Taiko.Replays
+namespace osu.Game.Rulesets.Taiko.Replays
{
internal class TaikoFramedReplayInputHandler : FramedReplayInputHandler
{
diff --git a/osu.Game.Modes.Taiko/Scoring/TaikoScoreProcessor.cs b/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs
similarity index 95%
rename from osu.Game.Modes.Taiko/Scoring/TaikoScoreProcessor.cs
rename to osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs
index 987c3181a4..f5e2094cbf 100644
--- a/osu.Game.Modes.Taiko/Scoring/TaikoScoreProcessor.cs
+++ b/osu.Game.Rulesets.Taiko/Scoring/TaikoScoreProcessor.cs
@@ -4,14 +4,14 @@
using System;
using osu.Game.Beatmaps;
using osu.Game.Database;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Scoring;
-using osu.Game.Modes.Taiko.Judgements;
-using osu.Game.Modes.Taiko.Objects;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Scoring;
+using osu.Game.Rulesets.Taiko.Judgements;
+using osu.Game.Rulesets.Taiko.Objects;
+using osu.Game.Rulesets.UI;
using OpenTK;
-namespace osu.Game.Modes.Taiko.Scoring
+namespace osu.Game.Rulesets.Taiko.Scoring
{
internal class TaikoScoreProcessor : ScoreProcessor
{
diff --git a/osu.Game.Modes.Taiko/TaikoDifficultyCalculator.cs b/osu.Game.Rulesets.Taiko/TaikoDifficultyCalculator.cs
similarity index 65%
rename from osu.Game.Modes.Taiko/TaikoDifficultyCalculator.cs
rename to osu.Game.Rulesets.Taiko/TaikoDifficultyCalculator.cs
index 93dfc3d651..cd61709db8 100644
--- a/osu.Game.Modes.Taiko/TaikoDifficultyCalculator.cs
+++ b/osu.Game.Rulesets.Taiko/TaikoDifficultyCalculator.cs
@@ -2,11 +2,12 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Game.Beatmaps;
-using osu.Game.Modes.Taiko.Beatmaps;
-using osu.Game.Modes.Taiko.Objects;
+using osu.Game.Rulesets.Beatmaps;
+using osu.Game.Rulesets.Taiko.Beatmaps;
+using osu.Game.Rulesets.Taiko.Objects;
using System.Collections.Generic;
-namespace osu.Game.Modes.Taiko
+namespace osu.Game.Rulesets.Taiko
{
public class TaikoDifficultyCalculator : DifficultyCalculator
{
@@ -19,6 +20,6 @@ namespace osu.Game.Modes.Taiko
return 0;
}
- protected override IBeatmapConverter CreateBeatmapConverter() => new TaikoBeatmapConverter();
+ protected override BeatmapConverter CreateBeatmapConverter() => new TaikoBeatmapConverter();
}
}
\ No newline at end of file
diff --git a/osu.Game.Modes.Taiko/TaikoRuleset.cs b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs
similarity index 90%
rename from osu.Game.Modes.Taiko/TaikoRuleset.cs
rename to osu.Game.Rulesets.Taiko/TaikoRuleset.cs
index b93c25c55d..3fb2cf6c28 100644
--- a/osu.Game.Modes.Taiko/TaikoRuleset.cs
+++ b/osu.Game.Rulesets.Taiko/TaikoRuleset.cs
@@ -4,16 +4,16 @@
using OpenTK.Input;
using osu.Game.Beatmaps;
using osu.Game.Graphics;
-using osu.Game.Modes.Mods;
-using osu.Game.Modes.Taiko.Mods;
-using osu.Game.Modes.Taiko.UI;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Mods;
+using osu.Game.Rulesets.Taiko.Mods;
+using osu.Game.Rulesets.Taiko.UI;
+using osu.Game.Rulesets.UI;
using osu.Game.Screens.Play;
using System.Collections.Generic;
-using osu.Game.Modes.Scoring;
-using osu.Game.Modes.Taiko.Scoring;
+using osu.Game.Rulesets.Scoring;
+using osu.Game.Rulesets.Taiko.Scoring;
-namespace osu.Game.Modes.Taiko
+namespace osu.Game.Rulesets.Taiko
{
public class TaikoRuleset : Ruleset
{
diff --git a/osu.Game.Modes.Taiko/UI/DrawableTaikoJudgement.cs b/osu.Game.Rulesets.Taiko/UI/DrawableTaikoJudgement.cs
similarity index 87%
rename from osu.Game.Modes.Taiko/UI/DrawableTaikoJudgement.cs
rename to osu.Game.Rulesets.Taiko/UI/DrawableTaikoJudgement.cs
index 78c9657b40..08fd8dbecc 100644
--- a/osu.Game.Modes.Taiko/UI/DrawableTaikoJudgement.cs
+++ b/osu.Game.Rulesets.Taiko/UI/DrawableTaikoJudgement.cs
@@ -1,13 +1,13 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Taiko.Judgements;
-using osu.Game.Modes.Objects.Drawables;
+using osu.Game.Rulesets.Taiko.Judgements;
+using osu.Game.Rulesets.Objects.Drawables;
using osu.Framework.Allocation;
using osu.Game.Graphics;
-using osu.Game.Modes.Judgements;
+using osu.Game.Rulesets.Judgements;
-namespace osu.Game.Modes.Taiko.UI
+namespace osu.Game.Rulesets.Taiko.UI
{
///
/// Text that is shown as judgement when a hit object is hit or missed.
diff --git a/osu.Game.Modes.Taiko/UI/HitExplosion.cs b/osu.Game.Rulesets.Taiko/UI/HitExplosion.cs
similarity index 91%
rename from osu.Game.Modes.Taiko/UI/HitExplosion.cs
rename to osu.Game.Rulesets.Taiko/UI/HitExplosion.cs
index e4e329523f..2ebdeaa5b0 100644
--- a/osu.Game.Modes.Taiko/UI/HitExplosion.cs
+++ b/osu.Game.Rulesets.Taiko/UI/HitExplosion.cs
@@ -8,10 +8,10 @@ using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Game.Graphics;
-using osu.Game.Modes.Taiko.Judgements;
-using osu.Game.Modes.Taiko.Objects;
+using osu.Game.Rulesets.Taiko.Judgements;
+using osu.Game.Rulesets.Taiko.Objects;
-namespace osu.Game.Modes.Taiko.UI
+namespace osu.Game.Rulesets.Taiko.UI
{
///
/// A circle explodes from the hit target to indicate a hitobject has been hit.
diff --git a/osu.Game.Modes.Taiko/UI/HitTarget.cs b/osu.Game.Rulesets.Taiko/UI/HitTarget.cs
similarity index 95%
rename from osu.Game.Modes.Taiko/UI/HitTarget.cs
rename to osu.Game.Rulesets.Taiko/UI/HitTarget.cs
index b22dc1d647..fde2623246 100644
--- a/osu.Game.Modes.Taiko/UI/HitTarget.cs
+++ b/osu.Game.Rulesets.Taiko/UI/HitTarget.cs
@@ -6,9 +6,9 @@ using OpenTK.Graphics;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
-using osu.Game.Modes.Taiko.Objects;
+using osu.Game.Rulesets.Taiko.Objects;
-namespace osu.Game.Modes.Taiko.UI
+namespace osu.Game.Rulesets.Taiko.UI
{
///
/// A component that is displayed at the hit position in the taiko playfield.
diff --git a/osu.Game.Modes.Taiko/UI/InputDrum.cs b/osu.Game.Rulesets.Taiko/UI/InputDrum.cs
similarity index 96%
rename from osu.Game.Modes.Taiko/UI/InputDrum.cs
rename to osu.Game.Rulesets.Taiko/UI/InputDrum.cs
index d238c38e74..999d76ab0b 100644
--- a/osu.Game.Modes.Taiko/UI/InputDrum.cs
+++ b/osu.Game.Rulesets.Taiko/UI/InputDrum.cs
@@ -12,7 +12,7 @@ using osu.Framework.Graphics.Textures;
using osu.Framework.Input;
using osu.Game.Graphics;
-namespace osu.Game.Modes.Taiko.UI
+namespace osu.Game.Rulesets.Taiko.UI
{
///
/// A component of the playfield that captures input and displays input as a drum.
diff --git a/osu.Game.Modes.Taiko/UI/TaikoHitRenderer.cs b/osu.Game.Rulesets.Taiko/UI/TaikoHitRenderer.cs
similarity index 85%
rename from osu.Game.Modes.Taiko/UI/TaikoHitRenderer.cs
rename to osu.Game.Rulesets.Taiko/UI/TaikoHitRenderer.cs
index 32476dff7f..e42a8432fd 100644
--- a/osu.Game.Modes.Taiko/UI/TaikoHitRenderer.cs
+++ b/osu.Game.Rulesets.Taiko/UI/TaikoHitRenderer.cs
@@ -6,20 +6,21 @@ using osu.Framework.MathUtils;
using osu.Framework.Graphics;
using osu.Game.Beatmaps;
using osu.Game.Beatmaps.Timing;
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Objects.Types;
-using osu.Game.Modes.Replays;
-using osu.Game.Modes.Scoring;
-using osu.Game.Modes.Taiko.Beatmaps;
-using osu.Game.Modes.Taiko.Judgements;
-using osu.Game.Modes.Taiko.Objects;
-using osu.Game.Modes.Taiko.Objects.Drawables;
-using osu.Game.Modes.Taiko.Scoring;
-using osu.Game.Modes.UI;
-using osu.Game.Modes.Taiko.Replays;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Objects.Types;
+using osu.Game.Rulesets.Replays;
+using osu.Game.Rulesets.Scoring;
+using osu.Game.Rulesets.Taiko.Beatmaps;
+using osu.Game.Rulesets.Taiko.Judgements;
+using osu.Game.Rulesets.Taiko.Objects;
+using osu.Game.Rulesets.Taiko.Objects.Drawables;
+using osu.Game.Rulesets.Taiko.Scoring;
+using osu.Game.Rulesets.UI;
+using osu.Game.Rulesets.Taiko.Replays;
using OpenTK;
+using osu.Game.Rulesets.Beatmaps;
-namespace osu.Game.Modes.Taiko.UI
+namespace osu.Game.Rulesets.Taiko.UI
{
public class TaikoHitRenderer : HitRenderer
{
@@ -114,9 +115,7 @@ namespace osu.Game.Modes.Taiko.UI
public override ScoreProcessor CreateScoreProcessor() => new TaikoScoreProcessor(this);
- protected override IBeatmapConverter CreateBeatmapConverter() => new TaikoBeatmapConverter();
-
- protected override IBeatmapProcessor CreateBeatmapProcessor() => new TaikoBeatmapProcessor();
+ protected override BeatmapConverter CreateBeatmapConverter() => new TaikoBeatmapConverter();
protected override Playfield CreatePlayfield() => new TaikoPlayfield
{
diff --git a/osu.Game.Modes.Taiko/UI/TaikoPlayfield.cs b/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs
similarity index 95%
rename from osu.Game.Modes.Taiko/UI/TaikoPlayfield.cs
rename to osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs
index db3a1bc84e..8e6f1c8556 100644
--- a/osu.Game.Modes.Taiko/UI/TaikoPlayfield.cs
+++ b/osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs
@@ -4,21 +4,21 @@
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Sprites;
-using osu.Game.Modes.Taiko.Objects;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Taiko.Objects;
+using osu.Game.Rulesets.UI;
using OpenTK;
using OpenTK.Graphics;
-using osu.Game.Modes.Taiko.Judgements;
-using osu.Game.Modes.Objects.Drawables;
+using osu.Game.Rulesets.Taiko.Judgements;
+using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Extensions.Color4Extensions;
using osu.Framework.Graphics.Primitives;
using System.Linq;
-using osu.Game.Modes.Taiko.Objects.Drawables;
+using osu.Game.Rulesets.Taiko.Objects.Drawables;
using System;
-namespace osu.Game.Modes.Taiko.UI
+namespace osu.Game.Rulesets.Taiko.UI
{
public class TaikoPlayfield : Playfield
{
diff --git a/osu.Game.Modes.Taiko/osu.Game.Modes.Taiko.csproj b/osu.Game.Rulesets.Taiko/osu.Game.Rulesets.Taiko.csproj
similarity index 95%
rename from osu.Game.Modes.Taiko/osu.Game.Modes.Taiko.csproj
rename to osu.Game.Rulesets.Taiko/osu.Game.Rulesets.Taiko.csproj
index 03137802d4..c668b90ec4 100644
--- a/osu.Game.Modes.Taiko/osu.Game.Modes.Taiko.csproj
+++ b/osu.Game.Rulesets.Taiko/osu.Game.Rulesets.Taiko.csproj
@@ -7,8 +7,8 @@
{F167E17A-7DE6-4AF5-B920-A5112296C695}
Library
Properties
- osu.Game.Modes.Taiko
- osu.Game.Modes.Taiko
+ osu.Game.Rulesets.Taiko
+ osu.Game.Rulesets.Taiko
v4.5
512
@@ -48,7 +48,6 @@
-
diff --git a/osu.Game.Modes.Taiko/packages.config b/osu.Game.Rulesets.Taiko/packages.config
similarity index 100%
rename from osu.Game.Modes.Taiko/packages.config
rename to osu.Game.Rulesets.Taiko/packages.config
diff --git a/osu.Game.Tests/Beatmaps/Formats/OsuLegacyDecoderTest.cs b/osu.Game.Tests/Beatmaps/Formats/OsuLegacyDecoderTest.cs
index 5e94a4dd77..4814af984e 100644
--- a/osu.Game.Tests/Beatmaps/Formats/OsuLegacyDecoderTest.cs
+++ b/osu.Game.Tests/Beatmaps/Formats/OsuLegacyDecoderTest.cs
@@ -7,9 +7,9 @@ using OpenTK;
using OpenTK.Graphics;
using osu.Game.Beatmaps.Formats;
using osu.Game.Tests.Resources;
-using osu.Game.Modes.Objects.Legacy;
using System.Linq;
using osu.Game.Audio;
+using osu.Game.Rulesets.Objects.Types;
namespace osu.Game.Tests.Beatmaps.Formats
{
@@ -130,16 +130,22 @@ namespace osu.Game.Tests.Beatmaps.Formats
using (var stream = Resource.OpenResource("Soleily - Renatus (Gamu) [Insane].osu"))
{
var beatmap = decoder.Decode(new StreamReader(stream));
- var slider = beatmap.HitObjects[0] as LegacySlider;
- Assert.IsNotNull(slider);
- Assert.AreEqual(new Vector2(192, 168), slider.Position);
- Assert.AreEqual(956, slider.StartTime);
- Assert.IsTrue(slider.Samples.Any(s => s.Name == SampleInfo.HIT_NORMAL));
- var hit = beatmap.HitObjects[1] as LegacyHit;
- Assert.IsNotNull(hit);
- Assert.AreEqual(new Vector2(304, 56), hit.Position);
- Assert.AreEqual(1285, hit.StartTime);
- Assert.IsTrue(hit.Samples.Any(s => s.Name == SampleInfo.HIT_CLAP));
+
+ var curveData = beatmap.HitObjects[0] as IHasCurve;
+ var positionData = beatmap.HitObjects[0] as IHasPosition;
+
+ Assert.IsNotNull(positionData);
+ Assert.IsNotNull(curveData);
+ Assert.AreEqual(new Vector2(192, 168), positionData.Position);
+ Assert.AreEqual(956, beatmap.HitObjects[0].StartTime);
+ Assert.IsTrue(beatmap.HitObjects[0].Samples.Any(s => s.Name == SampleInfo.HIT_NORMAL));
+
+ positionData = beatmap.HitObjects[1] as IHasPosition;
+
+ Assert.IsNotNull(positionData);
+ Assert.AreEqual(new Vector2(304, 56), positionData.Position);
+ Assert.AreEqual(1285, beatmap.HitObjects[1].StartTime);
+ Assert.IsTrue(beatmap.HitObjects[1].Samples.Any(s => s.Name == SampleInfo.HIT_CLAP));
}
}
}
diff --git a/osu.Game.Tests/osu.Game.Tests.csproj b/osu.Game.Tests/osu.Game.Tests.csproj
index ddaf33c0fc..b8fcb80aaf 100644
--- a/osu.Game.Tests/osu.Game.Tests.csproj
+++ b/osu.Game.Tests/osu.Game.Tests.csproj
@@ -63,21 +63,21 @@
{c76bf5b3-985e-4d39-95fe-97c9c879b83a}
osu.Framework
-
+
{c92a607b-1fdd-4954-9f92-03ff547d9080}
- osu.Game.Modes.Osu
+ osu.Game.Rulesets.Osu
-
+
{58f6c80c-1253-4a0e-a465-b8c85ebeadf3}
- osu.Game.Modes.Catch
+ osu.Game.Rulesets.Catch
-
+
{48f4582b-7687-4621-9cbe-5c24197cb536}
- osu.Game.Modes.Mania
+ osu.Game.Rulesets.Mania
-
+
{f167e17a-7de6-4af5-b920-a5112296c695}
- osu.Game.Modes.Taiko
+ osu.Game.Rulesets.Taiko
{0D3FBF8A-7464-4CF7-8C90-3E7886DF2D4D}
diff --git a/osu.Game/Beatmaps/Beatmap.cs b/osu.Game/Beatmaps/Beatmap.cs
index e3a7a81d0d..3964fd25a7 100644
--- a/osu.Game/Beatmaps/Beatmap.cs
+++ b/osu.Game/Beatmaps/Beatmap.cs
@@ -4,7 +4,7 @@
using OpenTK.Graphics;
using osu.Game.Beatmaps.Timing;
using osu.Game.Database;
-using osu.Game.Modes.Objects;
+using osu.Game.Rulesets.Objects;
using System.Collections.Generic;
namespace osu.Game.Beatmaps
@@ -56,6 +56,7 @@ namespace osu.Game.Beatmaps
public Beatmap(Beatmap original = null)
: base(original)
{
+ HitObjects = original?.HitObjects;
}
}
}
diff --git a/osu.Game/Beatmaps/DifficultyCalculator.cs b/osu.Game/Beatmaps/DifficultyCalculator.cs
index a9da5c589c..727c89049f 100644
--- a/osu.Game/Beatmaps/DifficultyCalculator.cs
+++ b/osu.Game/Beatmaps/DifficultyCalculator.cs
@@ -1,7 +1,8 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Objects;
+using osu.Game.Rulesets.Beatmaps;
+using osu.Game.Rulesets.Objects;
using System.Collections.Generic;
namespace osu.Game.Beatmaps
@@ -41,6 +42,6 @@ namespace osu.Game.Beatmaps
{
}
- protected abstract IBeatmapConverter CreateBeatmapConverter();
+ protected abstract BeatmapConverter CreateBeatmapConverter();
}
}
diff --git a/osu.Game/Beatmaps/Formats/BeatmapDecoder.cs b/osu.Game/Beatmaps/Formats/BeatmapDecoder.cs
index 452bd595c7..cc9d367a59 100644
--- a/osu.Game/Beatmaps/Formats/BeatmapDecoder.cs
+++ b/osu.Game/Beatmaps/Formats/BeatmapDecoder.cs
@@ -4,7 +4,7 @@
using System;
using System.Collections.Generic;
using System.IO;
-using osu.Game.Modes.Objects;
+using osu.Game.Rulesets.Objects;
using osu.Game.Database;
namespace osu.Game.Beatmaps.Formats
diff --git a/osu.Game/Beatmaps/Formats/OsuLegacyDecoder.cs b/osu.Game/Beatmaps/Formats/OsuLegacyDecoder.cs
index 8ad5f8e7c0..74a5be698e 100644
--- a/osu.Game/Beatmaps/Formats/OsuLegacyDecoder.cs
+++ b/osu.Game/Beatmaps/Formats/OsuLegacyDecoder.cs
@@ -7,8 +7,8 @@ using System.IO;
using OpenTK.Graphics;
using osu.Game.Beatmaps.Events;
using osu.Game.Beatmaps.Timing;
-using osu.Game.Modes.Objects;
using osu.Game.Beatmaps.Legacy;
+using osu.Game.Rulesets.Objects.Legacy;
namespace osu.Game.Beatmaps.Formats
{
@@ -29,6 +29,8 @@ namespace osu.Game.Beatmaps.Formats
// TODO: Not sure how far back to go, or differences between versions
}
+ private HitObjectParser parser;
+
private LegacySampleBank defaultSampleBank;
private int defaultSampleVolume = 100;
@@ -84,6 +86,22 @@ namespace osu.Game.Beatmaps.Formats
break;
case @"Mode":
beatmap.BeatmapInfo.RulesetID = int.Parse(val);
+
+ switch (beatmap.BeatmapInfo.RulesetID)
+ {
+ case 0:
+ parser = new Rulesets.Objects.Legacy.Osu.HitObjectParser();
+ break;
+ case 1:
+ parser = new Rulesets.Objects.Legacy.Taiko.HitObjectParser();
+ break;
+ case 2:
+ parser = new Rulesets.Objects.Legacy.Catch.HitObjectParser();
+ break;
+ case 3:
+ parser = new Rulesets.Objects.Legacy.Mania.HitObjectParser();
+ break;
+ }
break;
case @"LetterboxInBreaks":
beatmap.BeatmapInfo.LetterboxInBreaks = int.Parse(val) == 1;
@@ -303,8 +321,6 @@ namespace osu.Game.Beatmaps.Formats
{
beatmap.BeatmapInfo.BeatmapVersion = beatmapVersion;
- HitObjectParser parser = new LegacyHitObjectParser();
-
Section section = Section.None;
bool hasCustomColours = false;
diff --git a/osu.Game/Beatmaps/IBeatmapConverter.cs b/osu.Game/Beatmaps/IBeatmapConverter.cs
deleted file mode 100644
index 72b248cfba..0000000000
--- a/osu.Game/Beatmaps/IBeatmapConverter.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2007-2017 ppy Pty Ltd .
-// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-
-using osu.Game.Modes.Objects;
-
-namespace osu.Game.Beatmaps
-{
- ///
- /// Converts a Beatmap for another mode.
- ///
- /// The type of HitObject stored in the Beatmap.
- public interface IBeatmapConverter where T : HitObject
- {
- ///
- /// Converts a Beatmap to another mode.
- ///
- /// The original Beatmap.
- /// The converted Beatmap.
- Beatmap Convert(Beatmap original);
- }
-}
diff --git a/osu.Game/Beatmaps/WorkingBeatmap.cs b/osu.Game/Beatmaps/WorkingBeatmap.cs
index 8ffec25882..894719ac6e 100644
--- a/osu.Game/Beatmaps/WorkingBeatmap.cs
+++ b/osu.Game/Beatmaps/WorkingBeatmap.cs
@@ -5,7 +5,7 @@ using osu.Framework.Audio.Track;
using osu.Framework.Configuration;
using osu.Framework.Graphics.Textures;
using osu.Game.Database;
-using osu.Game.Modes.Mods;
+using osu.Game.Rulesets.Mods;
using System;
using System.Collections.Generic;
diff --git a/osu.Game/Database/RulesetDatabase.cs b/osu.Game/Database/RulesetDatabase.cs
index d19fe56345..b78ca5ffc6 100644
--- a/osu.Game/Database/RulesetDatabase.cs
+++ b/osu.Game/Database/RulesetDatabase.cs
@@ -7,7 +7,7 @@ using System.IO;
using System.Linq;
using System.Reflection;
using osu.Framework.Platform;
-using osu.Game.Modes;
+using osu.Game.Rulesets;
using SQLite.Net;
namespace osu.Game.Database
@@ -35,7 +35,7 @@ namespace osu.Game.Database
List instances = new List();
- foreach (string file in Directory.GetFiles(Environment.CurrentDirectory, @"osu.Game.Modes.*.dll"))
+ foreach (string file in Directory.GetFiles(Environment.CurrentDirectory, @"osu.Game.Rulesets.*.dll"))
{
try
{
diff --git a/osu.Game/Database/RulesetInfo.cs b/osu.Game/Database/RulesetInfo.cs
index c3c0d4343d..322cb10c33 100644
--- a/osu.Game/Database/RulesetInfo.cs
+++ b/osu.Game/Database/RulesetInfo.cs
@@ -2,7 +2,7 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using System;
-using osu.Game.Modes;
+using osu.Game.Rulesets;
using SQLite.Net.Attributes;
namespace osu.Game.Database
diff --git a/osu.Game/Database/ScoreDatabase.cs b/osu.Game/Database/ScoreDatabase.cs
index a2fff7f795..359728070f 100644
--- a/osu.Game/Database/ScoreDatabase.cs
+++ b/osu.Game/Database/ScoreDatabase.cs
@@ -7,7 +7,7 @@ using System.Linq;
using osu.Framework.Platform;
using osu.Game.IO.Legacy;
using osu.Game.IPC;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Scoring;
using SharpCompress.Compressors.LZMA;
using SQLite.Net;
diff --git a/osu.Game/Graphics/TextAwesome.cs b/osu.Game/Graphics/TextAwesome.cs
index 1bae165e45..69b0217444 100644
--- a/osu.Game/Graphics/TextAwesome.cs
+++ b/osu.Game/Graphics/TextAwesome.cs
@@ -817,13 +817,13 @@ namespace osu.Game.Graphics
fa_youtube_play = 0xf16a,
fa_youtube_square = 0xf166,
- // gamemode icons in circles
+ // ruleset icons in circles
fa_osu_osu_o = 0xe000,
fa_osu_mania_o = 0xe001,
fa_osu_fruits_o = 0xe002,
fa_osu_taiko_o = 0xe003,
- // gamemode icons without circles
+ // ruleset icons without circles
fa_osu_filled_circle = 0xe004,
fa_osu_cross_o = 0xe005,
fa_osu_logo = 0xe006,
diff --git a/osu.Game/Modes/Objects/Legacy/LegacyHit.cs b/osu.Game/Modes/Objects/Legacy/LegacyHit.cs
deleted file mode 100644
index 239c8982da..0000000000
--- a/osu.Game/Modes/Objects/Legacy/LegacyHit.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2007-2017 ppy Pty Ltd .
-// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-
-using osu.Game.Modes.Objects.Types;
-using OpenTK;
-
-namespace osu.Game.Modes.Objects.Legacy
-{
- ///
- /// Legacy Hit-type, used for parsing Beatmaps.
- ///
- public sealed class LegacyHit : HitObject, IHasPosition, IHasCombo
- {
- public Vector2 Position { get; set; }
-
- public bool NewCombo { get; set; }
- }
-}
diff --git a/osu.Game/Online/API/Requests/GetScoresRequest.cs b/osu.Game/Online/API/Requests/GetScoresRequest.cs
index 66c5e6c72d..3685d0b9e3 100644
--- a/osu.Game/Online/API/Requests/GetScoresRequest.cs
+++ b/osu.Game/Online/API/Requests/GetScoresRequest.cs
@@ -5,7 +5,7 @@ using System.Collections.Generic;
using Newtonsoft.Json;
using osu.Framework.IO.Network;
using osu.Game.Database;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Scoring;
namespace osu.Game.Online.API.Requests
{
diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs
index 1006008afc..cd89f4bdc7 100644
--- a/osu.Game/OsuGame.cs
+++ b/osu.Game/OsuGame.cs
@@ -25,7 +25,7 @@ using System.Threading.Tasks;
using osu.Framework.Threading;
using osu.Game.Database;
using osu.Game.Graphics;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Scoring;
using osu.Game.Overlays.Notifications;
using osu.Game.Screens.Play;
@@ -205,7 +205,7 @@ namespace osu.Game
OnRulesetChange = r => Ruleset.Value = r,
}, t =>
{
- Ruleset.ValueChanged += delegate { Toolbar.SetGameMode(Ruleset.Value); };
+ Ruleset.ValueChanged += delegate { Toolbar.SetRuleset(Ruleset.Value); };
Ruleset.TriggerChange();
overlayContent.Add(Toolbar);
});
@@ -279,7 +279,7 @@ namespace osu.Game
return;
}
- //central game mode change logic.
+ //central game screen change logic.
if (!currentScreen.ShowOverlays)
{
options.State = Visibility.Hidden;
diff --git a/osu.Game/Overlays/Mods/AssistedSection.cs b/osu.Game/Overlays/Mods/AssistedSection.cs
index a1ec7a3fdc..b4263fa309 100644
--- a/osu.Game/Overlays/Mods/AssistedSection.cs
+++ b/osu.Game/Overlays/Mods/AssistedSection.cs
@@ -4,7 +4,7 @@
using OpenTK.Input;
using osu.Framework.Allocation;
using osu.Game.Graphics;
-using osu.Game.Modes.Mods;
+using osu.Game.Rulesets.Mods;
namespace osu.Game.Overlays.Mods
{
diff --git a/osu.Game/Overlays/Mods/DifficultyIncreaseSection.cs b/osu.Game/Overlays/Mods/DifficultyIncreaseSection.cs
index 13df5aabfb..0a293416dc 100644
--- a/osu.Game/Overlays/Mods/DifficultyIncreaseSection.cs
+++ b/osu.Game/Overlays/Mods/DifficultyIncreaseSection.cs
@@ -4,7 +4,7 @@
using OpenTK.Input;
using osu.Framework.Allocation;
using osu.Game.Graphics;
-using osu.Game.Modes.Mods;
+using osu.Game.Rulesets.Mods;
namespace osu.Game.Overlays.Mods
{
diff --git a/osu.Game/Overlays/Mods/DifficultyReductionSection.cs b/osu.Game/Overlays/Mods/DifficultyReductionSection.cs
index f8ac4551ef..3a373e6f09 100644
--- a/osu.Game/Overlays/Mods/DifficultyReductionSection.cs
+++ b/osu.Game/Overlays/Mods/DifficultyReductionSection.cs
@@ -4,7 +4,7 @@
using OpenTK.Input;
using osu.Framework.Allocation;
using osu.Game.Graphics;
-using osu.Game.Modes.Mods;
+using osu.Game.Rulesets.Mods;
namespace osu.Game.Overlays.Mods
{
diff --git a/osu.Game/Overlays/Mods/ModButton.cs b/osu.Game/Overlays/Mods/ModButton.cs
index b787935d57..f380c19d8a 100644
--- a/osu.Game/Overlays/Mods/ModButton.cs
+++ b/osu.Game/Overlays/Mods/ModButton.cs
@@ -12,8 +12,8 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Input;
using osu.Game.Graphics.Sprites;
-using osu.Game.Modes.Mods;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Mods;
+using osu.Game.Rulesets.UI;
using System;
using System.Linq;
diff --git a/osu.Game/Overlays/Mods/ModSection.cs b/osu.Game/Overlays/Mods/ModSection.cs
index 0e93a5520d..c2af12f49e 100644
--- a/osu.Game/Overlays/Mods/ModSection.cs
+++ b/osu.Game/Overlays/Mods/ModSection.cs
@@ -9,7 +9,7 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Primitives;
using osu.Framework.Input;
using osu.Game.Graphics.Sprites;
-using osu.Game.Modes.Mods;
+using osu.Game.Rulesets.Mods;
using System;
namespace osu.Game.Overlays.Mods
diff --git a/osu.Game/Overlays/Mods/ModSelectOverlay.cs b/osu.Game/Overlays/Mods/ModSelectOverlay.cs
index bf7117edf1..dadfb808f7 100644
--- a/osu.Game/Overlays/Mods/ModSelectOverlay.cs
+++ b/osu.Game/Overlays/Mods/ModSelectOverlay.cs
@@ -13,7 +13,7 @@ using osu.Framework.Graphics.Sprites;
using osu.Game.Graphics;
using osu.Game.Graphics.Backgrounds;
using osu.Game.Graphics.Sprites;
-using osu.Game.Modes.Mods;
+using osu.Game.Rulesets.Mods;
using System;
using System.Collections.Generic;
using System.Linq;
diff --git a/osu.Game/Overlays/Toolbar/Toolbar.cs b/osu.Game/Overlays/Toolbar/Toolbar.cs
index e1495827f9..1fd19af557 100644
--- a/osu.Game/Overlays/Toolbar/Toolbar.cs
+++ b/osu.Game/Overlays/Toolbar/Toolbar.cs
@@ -129,7 +129,7 @@ namespace osu.Game.Overlays.Toolbar
}
}
- public void SetGameMode(RulesetInfo ruleset) => modeSelector.SetGameMode(ruleset);
+ public void SetRuleset(RulesetInfo ruleset) => modeSelector.SetRuleset(ruleset);
protected override void PopIn()
{
diff --git a/osu.Game/Overlays/Toolbar/ToolbarModeSelector.cs b/osu.Game/Overlays/Toolbar/ToolbarModeSelector.cs
index e4c9db7c5d..1d3260bb23 100644
--- a/osu.Game/Overlays/Toolbar/ToolbarModeSelector.cs
+++ b/osu.Game/Overlays/Toolbar/ToolbarModeSelector.cs
@@ -75,7 +75,7 @@ namespace osu.Game.Overlays.Toolbar
Ruleset = ruleset,
Action = delegate
{
- SetGameMode(ruleset);
+ SetRuleset(ruleset);
OnRulesetChange?.Invoke(ruleset);
}
});
@@ -89,7 +89,7 @@ namespace osu.Game.Overlays.Toolbar
Size = new Vector2(modeButtons.DrawSize.X, 1);
}
- public void SetGameMode(RulesetInfo ruleset)
+ public void SetRuleset(RulesetInfo ruleset)
{
foreach (ToolbarModeButton m in modeButtons.Children.Cast())
{
diff --git a/osu.Game/Modes/BeatmapStatistic.cs b/osu.Game/Rulesets/BeatmapStatistic.cs
similarity index 88%
rename from osu.Game/Modes/BeatmapStatistic.cs
rename to osu.Game/Rulesets/BeatmapStatistic.cs
index d598b81ff4..11ac698851 100644
--- a/osu.Game/Modes/BeatmapStatistic.cs
+++ b/osu.Game/Rulesets/BeatmapStatistic.cs
@@ -3,7 +3,7 @@
using osu.Game.Graphics;
-namespace osu.Game.Modes
+namespace osu.Game.Rulesets
{
public class BeatmapStatistic
{
diff --git a/osu.Game/Rulesets/Beatmaps/BeatmapConverter.cs b/osu.Game/Rulesets/Beatmaps/BeatmapConverter.cs
new file mode 100644
index 0000000000..07aae6a26e
--- /dev/null
+++ b/osu.Game/Rulesets/Beatmaps/BeatmapConverter.cs
@@ -0,0 +1,90 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using osu.Game.Rulesets.Objects;
+using osu.Game.Beatmaps;
+
+namespace osu.Game.Rulesets.Beatmaps
+{
+ ///
+ /// Converts a Beatmap for another mode.
+ ///
+ /// The type of HitObject stored in the Beatmap.
+ public abstract class BeatmapConverter where T : HitObject
+ {
+ ///
+ /// Checks if a Beatmap can be converted using this Beatmap Converter.
+ ///
+ /// The Beatmap to check.
+ /// Whether the Beatmap can be converted using this Beatmap Converter.
+ public bool CanConvert(Beatmap beatmap) => ValidConversionTypes.All(t => beatmap.HitObjects.Any(t.IsInstanceOfType));
+
+ ///
+ /// Converts a Beatmap using this Beatmap Converter.
+ ///
+ /// The un-converted Beatmap.
+ /// The converted Beatmap.
+ public Beatmap Convert(Beatmap original)
+ {
+ // We always operate on a clone of the original beatmap, to not modify it game-wide
+ return ConvertBeatmap(new Beatmap(original));
+ }
+
+ ///
+ /// Performs the conversion of a Beatmap using this Beatmap Converter.
+ ///
+ /// The un-converted Beatmap.
+ /// The converted Beatmap.
+ protected virtual Beatmap ConvertBeatmap(Beatmap original)
+ {
+ return new Beatmap
+ {
+ BeatmapInfo = original.BeatmapInfo,
+ TimingInfo = original.TimingInfo,
+ HitObjects = original.HitObjects.SelectMany(h => convert(h, original)).ToList()
+ };
+ }
+
+ ///
+ /// Converts a hit object.
+ ///
+ /// The hit object to convert.
+ /// The un-converted Beatmap.
+ /// The converted hit object.
+ private IEnumerable convert(HitObject original, Beatmap beatmap)
+ {
+ // Check if the hitobject is already the converted type
+ T tObject = original as T;
+ if (tObject != null)
+ {
+ yield return tObject;
+ yield break;
+ }
+
+ // Convert the hit object
+ foreach (var obj in ConvertHitObject(original, beatmap))
+ {
+ if (obj == null)
+ continue;
+
+ yield return obj;
+ }
+ }
+
+ ///
+ /// The types of HitObjects that can be converted to be used for this Beatmap.
+ ///
+ protected abstract IEnumerable ValidConversionTypes { get; }
+
+ ///
+ /// Performs the conversion of a hit object.
+ ///
+ /// The hit object to convert.
+ /// The un-converted Beatmap.
+ /// The converted hit object.
+ protected abstract IEnumerable ConvertHitObject(HitObject original, Beatmap beatmap);
+ }
+}
diff --git a/osu.Game/Beatmaps/IBeatmapProcessor.cs b/osu.Game/Rulesets/Beatmaps/BeatmapProcessor.cs
similarity index 74%
rename from osu.Game/Beatmaps/IBeatmapProcessor.cs
rename to osu.Game/Rulesets/Beatmaps/BeatmapProcessor.cs
index 9157a760b1..ee9fc30f7b 100644
--- a/osu.Game/Beatmaps/IBeatmapProcessor.cs
+++ b/osu.Game/Rulesets/Beatmaps/BeatmapProcessor.cs
@@ -1,15 +1,16 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Objects;
+using osu.Game.Beatmaps;
+using osu.Game.Rulesets.Objects;
-namespace osu.Game.Beatmaps
+namespace osu.Game.Rulesets.Beatmaps
{
///
/// Processes a post-converted Beatmap.
///
/// The type of HitObject contained in the Beatmap.
- public interface IBeatmapProcessor
+ public class BeatmapProcessor
where TObject : HitObject
{
///
@@ -19,6 +20,6 @@ namespace osu.Game.Beatmaps
///
///
/// The Beatmap to process.
- void PostProcess(Beatmap beatmap);
+ public virtual void PostProcess(Beatmap beatmap) { }
}
}
diff --git a/osu.Game/Modes/Judgements/DrawableJudgement.cs b/osu.Game/Rulesets/Judgements/DrawableJudgement.cs
similarity index 94%
rename from osu.Game/Modes/Judgements/DrawableJudgement.cs
rename to osu.Game/Rulesets/Judgements/DrawableJudgement.cs
index eabcb5c161..3a82827497 100644
--- a/osu.Game/Modes/Judgements/DrawableJudgement.cs
+++ b/osu.Game/Rulesets/Judgements/DrawableJudgement.cs
@@ -9,9 +9,9 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
-using osu.Game.Modes.Objects.Drawables;
+using osu.Game.Rulesets.Objects.Drawables;
-namespace osu.Game.Modes.Judgements
+namespace osu.Game.Rulesets.Judgements
{
///
/// A drawable object which visualises the hit result of a .
diff --git a/osu.Game/Modes/Judgements/IPartialJudgement.cs b/osu.Game/Rulesets/Judgements/IPartialJudgement.cs
similarity index 87%
rename from osu.Game/Modes/Judgements/IPartialJudgement.cs
rename to osu.Game/Rulesets/Judgements/IPartialJudgement.cs
index 2ca1ffce4d..e11270a8c0 100644
--- a/osu.Game/Modes/Judgements/IPartialJudgement.cs
+++ b/osu.Game/Rulesets/Judgements/IPartialJudgement.cs
@@ -1,10 +1,10 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Objects.Drawables;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Objects.Drawables;
+using osu.Game.Rulesets.Scoring;
-namespace osu.Game.Modes.Judgements
+namespace osu.Game.Rulesets.Judgements
{
///
/// Inidicates that the judgement this is attached to is a partial judgement and the scoring value may change.
diff --git a/osu.Game/Modes/Judgements/Judgement.cs b/osu.Game/Rulesets/Judgements/Judgement.cs
similarity index 88%
rename from osu.Game/Modes/Judgements/Judgement.cs
rename to osu.Game/Rulesets/Judgements/Judgement.cs
index 1bf898d25c..ed33cee5d4 100644
--- a/osu.Game/Modes/Judgements/Judgement.cs
+++ b/osu.Game/Rulesets/Judgements/Judgement.cs
@@ -1,9 +1,9 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Objects.Drawables;
+using osu.Game.Rulesets.Objects.Drawables;
-namespace osu.Game.Modes.Judgements
+namespace osu.Game.Rulesets.Judgements
{
public abstract class Judgement
{
diff --git a/osu.Game/Modes/Mods/IApplicableMod.cs b/osu.Game/Rulesets/Mods/IApplicableMod.cs
similarity index 85%
rename from osu.Game/Modes/Mods/IApplicableMod.cs
rename to osu.Game/Rulesets/Mods/IApplicableMod.cs
index 90547f4402..66f3fc5da6 100644
--- a/osu.Game/Modes/Mods/IApplicableMod.cs
+++ b/osu.Game/Rulesets/Mods/IApplicableMod.cs
@@ -1,10 +1,10 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Objects;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Objects;
+using osu.Game.Rulesets.UI;
-namespace osu.Game.Modes.Mods
+namespace osu.Game.Rulesets.Mods
{
///
/// An interface for mods that are applied to a HitRenderer.
diff --git a/osu.Game/Modes/Mods/Mod.cs b/osu.Game/Rulesets/Mods/Mod.cs
similarity index 95%
rename from osu.Game/Modes/Mods/Mod.cs
rename to osu.Game/Rulesets/Mods/Mod.cs
index b6f09b8506..cfb4d8b8ab 100644
--- a/osu.Game/Modes/Mods/Mod.cs
+++ b/osu.Game/Rulesets/Mods/Mod.cs
@@ -3,12 +3,12 @@
using osu.Game.Beatmaps;
using osu.Game.Graphics;
-using osu.Game.Modes.Objects;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Objects;
+using osu.Game.Rulesets.UI;
using System;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Scoring;
-namespace osu.Game.Modes.Mods
+namespace osu.Game.Rulesets.Mods
{
///
/// The base class for gameplay modifiers.
diff --git a/osu.Game/Modes/Mods/ModType.cs b/osu.Game/Rulesets/Mods/ModType.cs
similarity index 85%
rename from osu.Game/Modes/Mods/ModType.cs
rename to osu.Game/Rulesets/Mods/ModType.cs
index b1d0e781e1..15ffc4ad63 100644
--- a/osu.Game/Modes/Mods/ModType.cs
+++ b/osu.Game/Rulesets/Mods/ModType.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Mods
+namespace osu.Game.Rulesets.Mods
{
public enum ModType
{
diff --git a/osu.Game/Modes/Objects/BezierApproximator.cs b/osu.Game/Rulesets/Objects/BezierApproximator.cs
similarity index 97%
rename from osu.Game/Modes/Objects/BezierApproximator.cs
rename to osu.Game/Rulesets/Objects/BezierApproximator.cs
index 6688e6b2ce..12be591aab 100644
--- a/osu.Game/Modes/Objects/BezierApproximator.cs
+++ b/osu.Game/Rulesets/Objects/BezierApproximator.cs
@@ -4,7 +4,7 @@
using System.Collections.Generic;
using OpenTK;
-namespace osu.Game.Modes.Objects
+namespace osu.Game.Rulesets.Objects
{
public class BezierApproximator
{
diff --git a/osu.Game/Modes/Objects/CircularArcApproximator.cs b/osu.Game/Rulesets/Objects/CircularArcApproximator.cs
similarity index 96%
rename from osu.Game/Modes/Objects/CircularArcApproximator.cs
rename to osu.Game/Rulesets/Objects/CircularArcApproximator.cs
index 73db5fab29..642793fa3f 100644
--- a/osu.Game/Modes/Objects/CircularArcApproximator.cs
+++ b/osu.Game/Rulesets/Objects/CircularArcApproximator.cs
@@ -6,7 +6,7 @@ using System.Collections.Generic;
using osu.Framework.MathUtils;
using OpenTK;
-namespace osu.Game.Modes.Objects
+namespace osu.Game.Rulesets.Objects
{
public class CircularArcApproximator
{
diff --git a/osu.Game/Modes/Objects/CurvedHitObject.cs b/osu.Game/Rulesets/Objects/CurvedHitObject.cs
similarity index 91%
rename from osu.Game/Modes/Objects/CurvedHitObject.cs
rename to osu.Game/Rulesets/Objects/CurvedHitObject.cs
index ccb3d2497d..517c276242 100644
--- a/osu.Game/Modes/Objects/CurvedHitObject.cs
+++ b/osu.Game/Rulesets/Objects/CurvedHitObject.cs
@@ -2,10 +2,10 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using OpenTK;
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Objects.Types;
using System.Collections.Generic;
-namespace osu.Game.Modes.Objects
+namespace osu.Game.Rulesets.Objects
{
public class CurvedHitObject : HitObject, IHasCurve
{
diff --git a/osu.Game/Modes/Objects/Drawables/ArmedState.cs b/osu.Game/Rulesets/Objects/Drawables/ArmedState.cs
similarity index 80%
rename from osu.Game/Modes/Objects/Drawables/ArmedState.cs
rename to osu.Game/Rulesets/Objects/Drawables/ArmedState.cs
index 2f8d3ad07a..5e57c57f4d 100644
--- a/osu.Game/Modes/Objects/Drawables/ArmedState.cs
+++ b/osu.Game/Rulesets/Objects/Drawables/ArmedState.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Objects.Drawables
+namespace osu.Game.Rulesets.Objects.Drawables
{
public enum ArmedState
{
diff --git a/osu.Game/Modes/Objects/Drawables/DrawableHitObject.cs b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs
similarity index 94%
rename from osu.Game/Modes/Objects/Drawables/DrawableHitObject.cs
rename to osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs
index e346a22813..a300eeab31 100644
--- a/osu.Game/Modes/Objects/Drawables/DrawableHitObject.cs
+++ b/osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs
@@ -7,13 +7,13 @@ using osu.Framework;
using osu.Framework.Allocation;
using osu.Framework.Audio;
using osu.Framework.Audio.Sample;
-using osu.Game.Modes.Judgements;
+using osu.Game.Rulesets.Judgements;
using Container = osu.Framework.Graphics.Containers.Container;
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Objects.Types;
using OpenTK.Graphics;
using osu.Game.Audio;
-namespace osu.Game.Modes.Objects.Drawables
+namespace osu.Game.Rulesets.Objects.Drawables
{
public abstract class DrawableHitObject : Container, IStateful
where TJudgement : Judgement
diff --git a/osu.Game/Modes/Objects/Drawables/HitResult.cs b/osu.Game/Rulesets/Objects/Drawables/HitResult.cs
similarity index 90%
rename from osu.Game/Modes/Objects/Drawables/HitResult.cs
rename to osu.Game/Rulesets/Objects/Drawables/HitResult.cs
index e036610ae2..7492c0ab96 100644
--- a/osu.Game/Modes/Objects/Drawables/HitResult.cs
+++ b/osu.Game/Rulesets/Objects/Drawables/HitResult.cs
@@ -3,7 +3,7 @@
using System.ComponentModel;
-namespace osu.Game.Modes.Objects.Drawables
+namespace osu.Game.Rulesets.Objects.Drawables
{
public enum HitResult
{
diff --git a/osu.Game/Modes/Objects/Drawables/IDrawableHitObjectWithProxiedApproach.cs b/osu.Game/Rulesets/Objects/Drawables/IDrawableHitObjectWithProxiedApproach.cs
similarity index 83%
rename from osu.Game/Modes/Objects/Drawables/IDrawableHitObjectWithProxiedApproach.cs
rename to osu.Game/Rulesets/Objects/Drawables/IDrawableHitObjectWithProxiedApproach.cs
index 33a1f51414..0314ef3037 100644
--- a/osu.Game/Modes/Objects/Drawables/IDrawableHitObjectWithProxiedApproach.cs
+++ b/osu.Game/Rulesets/Objects/Drawables/IDrawableHitObjectWithProxiedApproach.cs
@@ -3,7 +3,7 @@
using osu.Framework.Graphics;
-namespace osu.Game.Modes.Objects.Drawables
+namespace osu.Game.Rulesets.Objects.Drawables
{
public interface IDrawableHitObjectWithProxiedApproach
{
diff --git a/osu.Game/Modes/Objects/HitObject.cs b/osu.Game/Rulesets/Objects/HitObject.cs
similarity index 95%
rename from osu.Game/Modes/Objects/HitObject.cs
rename to osu.Game/Rulesets/Objects/HitObject.cs
index f362d6de63..240d110976 100644
--- a/osu.Game/Modes/Objects/HitObject.cs
+++ b/osu.Game/Rulesets/Objects/HitObject.cs
@@ -6,7 +6,7 @@ using osu.Game.Beatmaps.Timing;
using osu.Game.Database;
using System.Collections.Generic;
-namespace osu.Game.Modes.Objects
+namespace osu.Game.Rulesets.Objects
{
///
/// A HitObject describes an object in a Beatmap.
diff --git a/osu.Game/Modes/Objects/HitObjectParser.cs b/osu.Game/Rulesets/Objects/HitObjectParser.cs
similarity index 85%
rename from osu.Game/Modes/Objects/HitObjectParser.cs
rename to osu.Game/Rulesets/Objects/HitObjectParser.cs
index 5aa9f08589..ea0b5e0d2e 100644
--- a/osu.Game/Modes/Objects/HitObjectParser.cs
+++ b/osu.Game/Rulesets/Objects/HitObjectParser.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Objects
+namespace osu.Game.Rulesets.Objects
{
public abstract class HitObjectParser
{
diff --git a/osu.Game/Rulesets/Objects/Legacy/Catch/Hit.cs b/osu.Game/Rulesets/Objects/Legacy/Catch/Hit.cs
new file mode 100644
index 0000000000..41dacd1265
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Legacy/Catch/Hit.cs
@@ -0,0 +1,17 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using osu.Game.Rulesets.Objects.Types;
+
+namespace osu.Game.Rulesets.Objects.Legacy.Catch
+{
+ ///
+ /// Legacy osu!catch Hit-type, used for parsing Beatmaps.
+ ///
+ internal sealed class Hit : HitObject, IHasCombo, IHasXPosition
+ {
+ public float X { get; set; }
+
+ public bool NewCombo { get; set; }
+ }
+}
diff --git a/osu.Game/Rulesets/Objects/Legacy/Catch/HitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/Catch/HitObjectParser.cs
new file mode 100644
index 0000000000..a27244e5bd
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Legacy/Catch/HitObjectParser.cs
@@ -0,0 +1,45 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using OpenTK;
+using osu.Game.Rulesets.Objects.Types;
+using System.Collections.Generic;
+
+namespace osu.Game.Rulesets.Objects.Legacy.Catch
+{
+ ///
+ /// A HitObjectParser to parse legacy osu!catch Beatmaps.
+ ///
+ internal class HitObjectParser : Legacy.HitObjectParser
+ {
+ protected override HitObject CreateHit(Vector2 position, bool newCombo)
+ {
+ return new Hit
+ {
+ X = position.X,
+ NewCombo = newCombo,
+ };
+ }
+
+ protected override HitObject CreateSlider(Vector2 position, bool newCombo, List controlPoints, double length, CurveType curveType, int repeatCount)
+ {
+ return new Slider
+ {
+ X = position.X,
+ NewCombo = newCombo,
+ ControlPoints = controlPoints,
+ Distance = length,
+ CurveType = curveType,
+ RepeatCount = repeatCount
+ };
+ }
+
+ protected override HitObject CreateSpinner(Vector2 position, double endTime)
+ {
+ return new Spinner
+ {
+ EndTime = endTime
+ };
+ }
+ }
+}
diff --git a/osu.Game/Rulesets/Objects/Legacy/Catch/Slider.cs b/osu.Game/Rulesets/Objects/Legacy/Catch/Slider.cs
new file mode 100644
index 0000000000..865e56c847
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Legacy/Catch/Slider.cs
@@ -0,0 +1,17 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using osu.Game.Rulesets.Objects.Types;
+
+namespace osu.Game.Rulesets.Objects.Legacy.Catch
+{
+ ///
+ /// Legacy osu!catch Slider-type, used for parsing Beatmaps.
+ ///
+ internal sealed class Slider : CurvedHitObject, IHasXPosition, IHasCombo
+ {
+ public float X { get; set; }
+
+ public bool NewCombo { get; set; }
+ }
+}
diff --git a/osu.Game/Modes/Objects/Legacy/LegacySpinner.cs b/osu.Game/Rulesets/Objects/Legacy/Catch/Spinner.cs
similarity index 57%
rename from osu.Game/Modes/Objects/Legacy/LegacySpinner.cs
rename to osu.Game/Rulesets/Objects/Legacy/Catch/Spinner.cs
index 8f65d5e8a1..7690f42e76 100644
--- a/osu.Game/Modes/Objects/Legacy/LegacySpinner.cs
+++ b/osu.Game/Rulesets/Objects/Legacy/Catch/Spinner.cs
@@ -1,14 +1,14 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Objects.Types;
-namespace osu.Game.Modes.Objects.Legacy
+namespace osu.Game.Rulesets.Objects.Legacy.Catch
{
///
- /// Legacy Spinner-type, used for parsing Beatmaps.
+ /// Legacy osu!catch Spinner-type, used for parsing Beatmaps.
///
- internal class LegacySpinner : HitObject, IHasEndTime
+ internal sealed class Spinner : HitObject, IHasEndTime
{
public double EndTime { get; set; }
diff --git a/osu.Game/Modes/Objects/LegacyHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/HitObjectParser.cs
similarity index 64%
rename from osu.Game/Modes/Objects/LegacyHitObjectParser.cs
rename to osu.Game/Rulesets/Objects/Legacy/HitObjectParser.cs
index 2316e5dc5d..c915e67ead 100644
--- a/osu.Game/Modes/Objects/LegacyHitObjectParser.cs
+++ b/osu.Game/Rulesets/Objects/Legacy/HitObjectParser.cs
@@ -2,24 +2,26 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using OpenTK;
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Objects.Types;
using System;
using System.Collections.Generic;
using System.Globalization;
-using osu.Game.Modes.Objects.Legacy;
using osu.Game.Beatmaps.Formats;
using osu.Game.Audio;
-namespace osu.Game.Modes.Objects
+namespace osu.Game.Rulesets.Objects.Legacy
{
- internal class LegacyHitObjectParser : HitObjectParser
+ ///
+ /// A HitObjectParser to parse legacy Beatmaps.
+ ///
+ internal abstract class HitObjectParser : Objects.HitObjectParser
{
public override HitObject Parse(string text)
{
string[] split = text.Split(',');
- var type = (LegacyHitObjectType)int.Parse(split[3]) & ~LegacyHitObjectType.ColourHax;
- bool combo = type.HasFlag(LegacyHitObjectType.NewCombo);
- type &= ~LegacyHitObjectType.NewCombo;
+ var type = (HitObjectType)int.Parse(split[3]) & ~HitObjectType.ColourHax;
+ bool combo = type.HasFlag(HitObjectType.NewCombo);
+ type &= ~HitObjectType.NewCombo;
int sampleVolume = 0;
string normalSampleBank = null;
@@ -27,22 +29,18 @@ namespace osu.Game.Modes.Objects
HitObject result;
- if ((type & LegacyHitObjectType.Circle) > 0)
+ if ((type & HitObjectType.Circle) > 0)
{
- result = new LegacyHit
- {
- Position = new Vector2(int.Parse(split[0]), int.Parse(split[1])),
- NewCombo = combo
- };
+ result = CreateHit(new Vector2(int.Parse(split[0]), int.Parse(split[1])), combo);
if (split.Length > 5)
readCustomSampleBanks(split[5], ref normalSampleBank, ref addSampleBank, ref sampleVolume);
}
- else if ((type & LegacyHitObjectType.Slider) > 0)
+ else if ((type & HitObjectType.Slider) > 0)
{
CurveType curveType = CurveType.Catmull;
double length = 0;
- List points = new List { new Vector2(int.Parse(split[0]), int.Parse(split[1])) };
+ var points = new List { new Vector2(int.Parse(split[0]), int.Parse(split[1])) };
string[] pointsplit = split[5].Split('|');
foreach (string t in pointsplit)
@@ -68,11 +66,7 @@ namespace osu.Game.Modes.Objects
}
string[] temp = t.Split(':');
- Vector2 v = new Vector2(
- (int)Convert.ToDouble(temp[0], CultureInfo.InvariantCulture),
- (int)Convert.ToDouble(temp[1], CultureInfo.InvariantCulture)
- );
- points.Add(v);
+ points.Add(new Vector2((int)Convert.ToDouble(temp[0], CultureInfo.InvariantCulture), (int)Convert.ToDouble(temp[1], CultureInfo.InvariantCulture)));
}
int repeatCount = Convert.ToInt32(split[6], CultureInfo.InvariantCulture);
@@ -83,37 +77,26 @@ namespace osu.Game.Modes.Objects
if (split.Length > 7)
length = Convert.ToDouble(split[7], CultureInfo.InvariantCulture);
- result = new LegacySlider
- {
- ControlPoints = points,
- Distance = length,
- CurveType = curveType,
- RepeatCount = repeatCount,
- Position = new Vector2(int.Parse(split[0]), int.Parse(split[1])),
- NewCombo = combo
- };
+ result = CreateSlider(new Vector2(int.Parse(split[0]), int.Parse(split[1])), combo, points, length, curveType, repeatCount);
if (split.Length > 10)
readCustomSampleBanks(split[10], ref normalSampleBank, ref addSampleBank, ref sampleVolume);
}
- else if ((type & LegacyHitObjectType.Spinner) > 0)
+ else if ((type & HitObjectType.Spinner) > 0)
{
- result = new LegacySpinner
- {
- EndTime = Convert.ToDouble(split[5], CultureInfo.InvariantCulture)
- };
+ result = CreateSpinner(new Vector2(512, 384) / 2, Convert.ToDouble(split[5], CultureInfo.InvariantCulture));
if (split.Length > 6)
readCustomSampleBanks(split[6], ref normalSampleBank, ref addSampleBank, ref sampleVolume);
}
- else if ((type & LegacyHitObjectType.Hold) > 0)
+ else if ((type & HitObjectType.Hold) > 0)
{
// Note: Hold is generated by BMS converts
// Todo: Apparently end time is determined by samples??
// Shouldn't need implementation until mania
- result = new LegacyHold
+ result = new Hold
{
Position = new Vector2(int.Parse(split[0]), int.Parse(split[1])),
NewCombo = combo
@@ -191,6 +174,34 @@ namespace osu.Game.Modes.Objects
sampleVolume = split.Length > 3 ? int.Parse(split[3]) : 0;
}
+ ///
+ /// Creates a legacy Hit-type hit object.
+ ///
+ /// The position of the hit object.
+ /// Whether the hit object creates a new combo.
+ /// The hit object.
+ protected abstract HitObject CreateHit(Vector2 position, bool newCombo);
+
+ ///
+ /// Creats a legacy Slider-type hit object.
+ ///
+ /// The position of the hit object.
+ /// Whether the hit object creates a new combo.
+ /// The slider control points.
+ /// The slider length.
+ /// The slider curve type.
+ /// The slider repeat count.
+ /// The hit object.
+ protected abstract HitObject CreateSlider(Vector2 position, bool newCombo, List controlPoints, double length, CurveType curveType, int repeatCount);
+
+ ///
+ /// Creates a legacy Spinner-type hit object.
+ ///
+ /// The position of the hit object.
+ /// The spinner end time.
+ /// The hit object.
+ protected abstract HitObject CreateSpinner(Vector2 position, double endTime);
+
[Flags]
private enum LegacySoundType
{
diff --git a/osu.Game/Modes/Objects/Legacy/LegacyHitObjectType.cs b/osu.Game/Rulesets/Objects/Legacy/HitObjectType.cs
similarity index 78%
rename from osu.Game/Modes/Objects/Legacy/LegacyHitObjectType.cs
rename to osu.Game/Rulesets/Objects/Legacy/HitObjectType.cs
index 416e1abe76..9111e6bd12 100644
--- a/osu.Game/Modes/Objects/Legacy/LegacyHitObjectType.cs
+++ b/osu.Game/Rulesets/Objects/Legacy/HitObjectType.cs
@@ -3,10 +3,10 @@
using System;
-namespace osu.Game.Modes.Objects.Legacy
+namespace osu.Game.Rulesets.Objects.Legacy
{
[Flags]
- public enum LegacyHitObjectType
+ public enum HitObjectType
{
Circle = 1 << 0,
Slider = 1 << 1,
diff --git a/osu.Game/Modes/Objects/Legacy/LegacyHold.cs b/osu.Game/Rulesets/Objects/Legacy/Hold.cs
similarity index 59%
rename from osu.Game/Modes/Objects/Legacy/LegacyHold.cs
rename to osu.Game/Rulesets/Objects/Legacy/Hold.cs
index 4f858c16f1..a0a741e8e7 100644
--- a/osu.Game/Modes/Objects/Legacy/LegacyHold.cs
+++ b/osu.Game/Rulesets/Objects/Legacy/Hold.cs
@@ -2,17 +2,21 @@
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using OpenTK;
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Objects.Types;
-namespace osu.Game.Modes.Objects.Legacy
+namespace osu.Game.Rulesets.Objects.Legacy
{
///
/// Legacy Hold-type, used for parsing "specials" in beatmaps.
///
- public sealed class LegacyHold : HitObject, IHasPosition, IHasCombo, IHasHold
+ internal sealed class Hold : HitObject, IHasPosition, IHasCombo, IHasHold
{
public Vector2 Position { get; set; }
+ public float X => Position.X;
+
+ public float Y => Position.Y;
+
public bool NewCombo { get; set; }
}
}
diff --git a/osu.Game/Rulesets/Objects/Legacy/Mania/Hit.cs b/osu.Game/Rulesets/Objects/Legacy/Mania/Hit.cs
new file mode 100644
index 0000000000..8e407fcf92
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Legacy/Mania/Hit.cs
@@ -0,0 +1,17 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using osu.Game.Rulesets.Objects.Types;
+
+namespace osu.Game.Rulesets.Objects.Legacy.Mania
+{
+ ///
+ /// Legacy osu!mania Hit-type, used for parsing Beatmaps.
+ ///
+ internal sealed class Hit : HitObject, IHasXPosition, IHasCombo
+ {
+ public float X { get; set; }
+
+ public bool NewCombo { get; set; }
+ }
+}
diff --git a/osu.Game/Rulesets/Objects/Legacy/Mania/HitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/Mania/HitObjectParser.cs
new file mode 100644
index 0000000000..98f0459e0a
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Legacy/Mania/HitObjectParser.cs
@@ -0,0 +1,46 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using OpenTK;
+using osu.Game.Rulesets.Objects.Types;
+using System.Collections.Generic;
+
+namespace osu.Game.Rulesets.Objects.Legacy.Mania
+{
+ ///
+ /// A HitObjectParser to parse legacy osu!mania Beatmaps.
+ ///
+ internal class HitObjectParser : Legacy.HitObjectParser
+ {
+ protected override HitObject CreateHit(Vector2 position, bool newCombo)
+ {
+ return new Hit
+ {
+ X = position.X,
+ NewCombo = newCombo,
+ };
+ }
+
+ protected override HitObject CreateSlider(Vector2 position, bool newCombo, List controlPoints, double length, CurveType curveType, int repeatCount)
+ {
+ return new Slider
+ {
+ X = position.X,
+ NewCombo = newCombo,
+ ControlPoints = controlPoints,
+ Distance = length,
+ CurveType = curveType,
+ RepeatCount = repeatCount
+ };
+ }
+
+ protected override HitObject CreateSpinner(Vector2 position, double endTime)
+ {
+ return new Spinner
+ {
+ X = position.X,
+ EndTime = endTime
+ };
+ }
+ }
+}
diff --git a/osu.Game/Rulesets/Objects/Legacy/Mania/Slider.cs b/osu.Game/Rulesets/Objects/Legacy/Mania/Slider.cs
new file mode 100644
index 0000000000..c884ed324b
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Legacy/Mania/Slider.cs
@@ -0,0 +1,17 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using osu.Game.Rulesets.Objects.Types;
+
+namespace osu.Game.Rulesets.Objects.Legacy.Mania
+{
+ ///
+ /// Legacy osu!mania Slider-type, used for parsing Beatmaps.
+ ///
+ internal sealed class Slider : CurvedHitObject, IHasXPosition, IHasCombo
+ {
+ public float X { get; set; }
+
+ public bool NewCombo { get; set; }
+ }
+}
diff --git a/osu.Game/Rulesets/Objects/Legacy/Mania/Spinner.cs b/osu.Game/Rulesets/Objects/Legacy/Mania/Spinner.cs
new file mode 100644
index 0000000000..3937eb003e
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Legacy/Mania/Spinner.cs
@@ -0,0 +1,19 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using osu.Game.Rulesets.Objects.Types;
+
+namespace osu.Game.Rulesets.Objects.Legacy.Mania
+{
+ ///
+ /// Legacy osu!mania Spinner-type, used for parsing Beatmaps.
+ ///
+ internal sealed class Spinner : HitObject, IHasEndTime, IHasXPosition
+ {
+ public double EndTime { get; set; }
+
+ public double Duration => EndTime - StartTime;
+
+ public float X { get; set; }
+ }
+}
diff --git a/osu.Game/Modes/Objects/Legacy/LegacySlider.cs b/osu.Game/Rulesets/Objects/Legacy/Osu/Hit.cs
similarity index 50%
rename from osu.Game/Modes/Objects/Legacy/LegacySlider.cs
rename to osu.Game/Rulesets/Objects/Legacy/Osu/Hit.cs
index bdfebb1983..a30ba9b265 100644
--- a/osu.Game/Modes/Objects/Legacy/LegacySlider.cs
+++ b/osu.Game/Rulesets/Objects/Legacy/Osu/Hit.cs
@@ -1,18 +1,22 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Objects.Types;
using OpenTK;
-namespace osu.Game.Modes.Objects.Legacy
+namespace osu.Game.Rulesets.Objects.Legacy.Osu
{
///
- /// Legacy Slider-type, used for parsing Beatmaps.
+ /// Legacy osu! Hit-type, used for parsing Beatmaps.
///
- public sealed class LegacySlider : CurvedHitObject, IHasPosition, IHasCombo
+ internal sealed class Hit : HitObject, IHasPosition, IHasCombo
{
public Vector2 Position { get; set; }
+ public float X => Position.X;
+
+ public float Y => Position.Y;
+
public bool NewCombo { get; set; }
}
}
diff --git a/osu.Game/Rulesets/Objects/Legacy/Osu/HitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/Osu/HitObjectParser.cs
new file mode 100644
index 0000000000..227a4412c4
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Legacy/Osu/HitObjectParser.cs
@@ -0,0 +1,46 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using OpenTK;
+using osu.Game.Rulesets.Objects.Types;
+using System.Collections.Generic;
+
+namespace osu.Game.Rulesets.Objects.Legacy.Osu
+{
+ ///
+ /// A HitObjectParser to parse legacy osu! Beatmaps.
+ ///
+ internal class HitObjectParser : Legacy.HitObjectParser
+ {
+ protected override HitObject CreateHit(Vector2 position, bool newCombo)
+ {
+ return new Hit
+ {
+ Position = position,
+ NewCombo = newCombo,
+ };
+ }
+
+ protected override HitObject CreateSlider(Vector2 position, bool newCombo, List controlPoints, double length, CurveType curveType, int repeatCount)
+ {
+ return new Slider
+ {
+ Position = position,
+ NewCombo = newCombo,
+ ControlPoints = controlPoints,
+ Distance = length,
+ CurveType = curveType,
+ RepeatCount = repeatCount
+ };
+ }
+
+ protected override HitObject CreateSpinner(Vector2 position, double endTime)
+ {
+ return new Spinner
+ {
+ Position = position,
+ EndTime = endTime
+ };
+ }
+ }
+}
diff --git a/osu.Game/Rulesets/Objects/Legacy/Osu/Slider.cs b/osu.Game/Rulesets/Objects/Legacy/Osu/Slider.cs
new file mode 100644
index 0000000000..7d90c6d41e
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Legacy/Osu/Slider.cs
@@ -0,0 +1,22 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using osu.Game.Rulesets.Objects.Types;
+using OpenTK;
+
+namespace osu.Game.Rulesets.Objects.Legacy.Osu
+{
+ ///
+ /// Legacy osu! Slider-type, used for parsing Beatmaps.
+ ///
+ internal sealed class Slider : CurvedHitObject, IHasPosition, IHasCombo
+ {
+ public Vector2 Position { get; set; }
+
+ public float X => Position.X;
+
+ public float Y => Position.Y;
+
+ public bool NewCombo { get; set; }
+ }
+}
diff --git a/osu.Game/Rulesets/Objects/Legacy/Osu/Spinner.cs b/osu.Game/Rulesets/Objects/Legacy/Osu/Spinner.cs
new file mode 100644
index 0000000000..ad3f9637a7
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Legacy/Osu/Spinner.cs
@@ -0,0 +1,24 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using osu.Game.Rulesets.Objects.Types;
+using OpenTK;
+
+namespace osu.Game.Rulesets.Objects.Legacy.Osu
+{
+ ///
+ /// Legacy osu! Spinner-type, used for parsing Beatmaps.
+ ///
+ internal sealed class Spinner : HitObject, IHasEndTime, IHasPosition
+ {
+ public double EndTime { get; set; }
+
+ public double Duration => EndTime - StartTime;
+
+ public Vector2 Position { get; set; }
+
+ public float X => Position.X;
+
+ public float Y => Position.Y;
+ }
+}
diff --git a/osu.Game/Rulesets/Objects/Legacy/Taiko/Hit.cs b/osu.Game/Rulesets/Objects/Legacy/Taiko/Hit.cs
new file mode 100644
index 0000000000..0a9a8ac64c
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Legacy/Taiko/Hit.cs
@@ -0,0 +1,15 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using osu.Game.Rulesets.Objects.Types;
+
+namespace osu.Game.Rulesets.Objects.Legacy.Taiko
+{
+ ///
+ /// Legacy osu!taiko Hit-type, used for parsing Beatmaps.
+ ///
+ internal sealed class Hit : HitObject, IHasCombo
+ {
+ public bool NewCombo { get; set; }
+ }
+}
diff --git a/osu.Game/Rulesets/Objects/Legacy/Taiko/HitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/Taiko/HitObjectParser.cs
new file mode 100644
index 0000000000..669ee34910
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Legacy/Taiko/HitObjectParser.cs
@@ -0,0 +1,43 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using OpenTK;
+using osu.Game.Rulesets.Objects.Types;
+using System.Collections.Generic;
+
+namespace osu.Game.Rulesets.Objects.Legacy.Taiko
+{
+ ///
+ /// A HitObjectParser to parse legacy osu!taiko Beatmaps.
+ ///
+ internal class HitObjectParser : Legacy.HitObjectParser
+ {
+ protected override HitObject CreateHit(Vector2 position, bool newCombo)
+ {
+ return new Hit
+ {
+ NewCombo = newCombo,
+ };
+ }
+
+ protected override HitObject CreateSlider(Vector2 position, bool newCombo, List controlPoints, double length, CurveType curveType, int repeatCount)
+ {
+ return new Slider
+ {
+ NewCombo = newCombo,
+ ControlPoints = controlPoints,
+ Distance = length,
+ CurveType = curveType,
+ RepeatCount = repeatCount
+ };
+ }
+
+ protected override HitObject CreateSpinner(Vector2 position, double endTime)
+ {
+ return new Spinner
+ {
+ EndTime = endTime
+ };
+ }
+ }
+}
diff --git a/osu.Game/Rulesets/Objects/Legacy/Taiko/Slider.cs b/osu.Game/Rulesets/Objects/Legacy/Taiko/Slider.cs
new file mode 100644
index 0000000000..18d2d4039d
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Legacy/Taiko/Slider.cs
@@ -0,0 +1,15 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using osu.Game.Rulesets.Objects.Types;
+
+namespace osu.Game.Rulesets.Objects.Legacy.Taiko
+{
+ ///
+ /// Legacy osu!taiko Slider-type, used for parsing Beatmaps.
+ ///
+ internal sealed class Slider : CurvedHitObject, IHasCombo
+ {
+ public bool NewCombo { get; set; }
+ }
+}
diff --git a/osu.Game/Rulesets/Objects/Legacy/Taiko/Spinner.cs b/osu.Game/Rulesets/Objects/Legacy/Taiko/Spinner.cs
new file mode 100644
index 0000000000..1b296b9533
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Legacy/Taiko/Spinner.cs
@@ -0,0 +1,17 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using osu.Game.Rulesets.Objects.Types;
+
+namespace osu.Game.Rulesets.Objects.Legacy.Taiko
+{
+ ///
+ /// Legacy osu!taiko Spinner-type, used for parsing Beatmaps.
+ ///
+ internal sealed class Spinner : HitObject, IHasEndTime
+ {
+ public double EndTime { get; set; }
+
+ public double Duration => EndTime - StartTime;
+ }
+}
diff --git a/osu.Game/Modes/Objects/SliderCurve.cs b/osu.Game/Rulesets/Objects/SliderCurve.cs
similarity index 96%
rename from osu.Game/Modes/Objects/SliderCurve.cs
rename to osu.Game/Rulesets/Objects/SliderCurve.cs
index 642a65af21..8bf85e498c 100644
--- a/osu.Game/Modes/Objects/SliderCurve.cs
+++ b/osu.Game/Rulesets/Objects/SliderCurve.cs
@@ -4,10 +4,10 @@
using System.Collections.Generic;
using System.Linq;
using osu.Framework.MathUtils;
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Objects.Types;
using OpenTK;
-namespace osu.Game.Modes.Objects
+namespace osu.Game.Rulesets.Objects
{
public class SliderCurve
{
diff --git a/osu.Game/Modes/Objects/Types/CurveType.cs b/osu.Game/Rulesets/Objects/Types/CurveType.cs
similarity index 82%
rename from osu.Game/Modes/Objects/Types/CurveType.cs
rename to osu.Game/Rulesets/Objects/Types/CurveType.cs
index ba5d3f37ac..18db712a65 100644
--- a/osu.Game/Modes/Objects/Types/CurveType.cs
+++ b/osu.Game/Rulesets/Objects/Types/CurveType.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Objects.Types
+namespace osu.Game.Rulesets.Objects.Types
{
public enum CurveType
{
diff --git a/osu.Game/Modes/Objects/Types/IHasCombo.cs b/osu.Game/Rulesets/Objects/Types/IHasCombo.cs
similarity index 87%
rename from osu.Game/Modes/Objects/Types/IHasCombo.cs
rename to osu.Game/Rulesets/Objects/Types/IHasCombo.cs
index 1ca381372d..f053fdcf49 100644
--- a/osu.Game/Modes/Objects/Types/IHasCombo.cs
+++ b/osu.Game/Rulesets/Objects/Types/IHasCombo.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Objects.Types
+namespace osu.Game.Rulesets.Objects.Types
{
///
/// A HitObject that is part of a combo.
diff --git a/osu.Game/Modes/Objects/Types/IHasCurve.cs b/osu.Game/Rulesets/Objects/Types/IHasCurve.cs
similarity index 95%
rename from osu.Game/Modes/Objects/Types/IHasCurve.cs
rename to osu.Game/Rulesets/Objects/Types/IHasCurve.cs
index 0db799a15f..5ff6d03f6d 100644
--- a/osu.Game/Modes/Objects/Types/IHasCurve.cs
+++ b/osu.Game/Rulesets/Objects/Types/IHasCurve.cs
@@ -4,7 +4,7 @@
using System.Collections.Generic;
using OpenTK;
-namespace osu.Game.Modes.Objects.Types
+namespace osu.Game.Rulesets.Objects.Types
{
///
/// A HitObject that has a curve.
diff --git a/osu.Game/Modes/Objects/Types/IHasDistance.cs b/osu.Game/Rulesets/Objects/Types/IHasDistance.cs
similarity index 88%
rename from osu.Game/Modes/Objects/Types/IHasDistance.cs
rename to osu.Game/Rulesets/Objects/Types/IHasDistance.cs
index 87863e64e6..a5e487a0ba 100644
--- a/osu.Game/Modes/Objects/Types/IHasDistance.cs
+++ b/osu.Game/Rulesets/Objects/Types/IHasDistance.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Objects.Types
+namespace osu.Game.Rulesets.Objects.Types
{
///
/// A HitObject that has a positional length.
diff --git a/osu.Game/Modes/Objects/Types/IHasEndTime.cs b/osu.Game/Rulesets/Objects/Types/IHasEndTime.cs
similarity index 89%
rename from osu.Game/Modes/Objects/Types/IHasEndTime.cs
rename to osu.Game/Rulesets/Objects/Types/IHasEndTime.cs
index e96258812c..ac30afe5fb 100644
--- a/osu.Game/Modes/Objects/Types/IHasEndTime.cs
+++ b/osu.Game/Rulesets/Objects/Types/IHasEndTime.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Objects.Types
+namespace osu.Game.Rulesets.Objects.Types
{
///
/// A HitObject that ends at a different time than its start time.
diff --git a/osu.Game/Modes/Objects/Types/IHasHold.cs b/osu.Game/Rulesets/Objects/Types/IHasHold.cs
similarity index 85%
rename from osu.Game/Modes/Objects/Types/IHasHold.cs
rename to osu.Game/Rulesets/Objects/Types/IHasHold.cs
index b9f4939091..82ec790524 100644
--- a/osu.Game/Modes/Objects/Types/IHasHold.cs
+++ b/osu.Game/Rulesets/Objects/Types/IHasHold.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Objects.Types
+namespace osu.Game.Rulesets.Objects.Types
{
///
/// A special type of HitObject, mostly used for legacy conversion of "holds".
diff --git a/osu.Game/Modes/Objects/Types/IHasPosition.cs b/osu.Game/Rulesets/Objects/Types/IHasPosition.cs
similarity index 76%
rename from osu.Game/Modes/Objects/Types/IHasPosition.cs
rename to osu.Game/Rulesets/Objects/Types/IHasPosition.cs
index 8138bf6662..6eca86656d 100644
--- a/osu.Game/Modes/Objects/Types/IHasPosition.cs
+++ b/osu.Game/Rulesets/Objects/Types/IHasPosition.cs
@@ -3,12 +3,12 @@
using OpenTK;
-namespace osu.Game.Modes.Objects.Types
+namespace osu.Game.Rulesets.Objects.Types
{
///
/// A HitObject that has a starting position.
///
- public interface IHasPosition
+ public interface IHasPosition : IHasXPosition, IHasYPosition
{
///
/// The starting position of the HitObject.
diff --git a/osu.Game/Modes/Objects/Types/IHasRepeats.cs b/osu.Game/Rulesets/Objects/Types/IHasRepeats.cs
similarity index 88%
rename from osu.Game/Modes/Objects/Types/IHasRepeats.cs
rename to osu.Game/Rulesets/Objects/Types/IHasRepeats.cs
index a34774d0ef..f7058fd3c9 100644
--- a/osu.Game/Modes/Objects/Types/IHasRepeats.cs
+++ b/osu.Game/Rulesets/Objects/Types/IHasRepeats.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-namespace osu.Game.Modes.Objects.Types
+namespace osu.Game.Rulesets.Objects.Types
{
///
/// A HitObject that spans some length.
diff --git a/osu.Game/Rulesets/Objects/Types/IHasXPosition.cs b/osu.Game/Rulesets/Objects/Types/IHasXPosition.cs
new file mode 100644
index 0000000000..b0ad3af7d2
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Types/IHasXPosition.cs
@@ -0,0 +1,17 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+
+namespace osu.Game.Rulesets.Objects.Types
+{
+ ///
+ /// A HitObject that has a starting X-position.
+ ///
+ public interface IHasXPosition
+ {
+ ///
+ /// The starting X-position of this HitObject.
+ ///
+ float X { get; }
+ }
+}
diff --git a/osu.Game/Rulesets/Objects/Types/IHasYPosition.cs b/osu.Game/Rulesets/Objects/Types/IHasYPosition.cs
new file mode 100644
index 0000000000..222e8f762f
--- /dev/null
+++ b/osu.Game/Rulesets/Objects/Types/IHasYPosition.cs
@@ -0,0 +1,17 @@
+// Copyright (c) 2007-2017 ppy Pty Ltd .
+// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+
+namespace osu.Game.Rulesets.Objects.Types
+{
+ ///
+ /// A HitObject that has a starting Y-position.
+ ///
+ public interface IHasYPosition
+ {
+ ///
+ /// The starting Y-position of this HitObject.
+ ///
+ float Y { get; }
+ }
+}
diff --git a/osu.Game/Modes/Replays/FramedReplayInputHandler.cs b/osu.Game/Rulesets/Replays/FramedReplayInputHandler.cs
similarity index 96%
rename from osu.Game/Modes/Replays/FramedReplayInputHandler.cs
rename to osu.Game/Rulesets/Replays/FramedReplayInputHandler.cs
index 0c1e140ce4..60da35fd91 100644
--- a/osu.Game/Modes/Replays/FramedReplayInputHandler.cs
+++ b/osu.Game/Rulesets/Replays/FramedReplayInputHandler.cs
@@ -12,7 +12,7 @@ using OpenTK.Input;
using KeyboardState = osu.Framework.Input.KeyboardState;
using MouseState = osu.Framework.Input.MouseState;
-namespace osu.Game.Modes.Replays
+namespace osu.Game.Rulesets.Replays
{
///
/// The ReplayHandler will take a replay and handle the propagation of updates to the input stack.
diff --git a/osu.Game/Modes/Replays/Replay.cs b/osu.Game/Rulesets/Replays/Replay.cs
similarity index 85%
rename from osu.Game/Modes/Replays/Replay.cs
rename to osu.Game/Rulesets/Replays/Replay.cs
index 62f60358e0..8e9d7cdaad 100644
--- a/osu.Game/Modes/Replays/Replay.cs
+++ b/osu.Game/Rulesets/Replays/Replay.cs
@@ -3,7 +3,7 @@
using System.Collections.Generic;
-namespace osu.Game.Modes.Replays
+namespace osu.Game.Rulesets.Replays
{
public class Replay
{
diff --git a/osu.Game/Modes/Replays/ReplayButtonState.cs b/osu.Game/Rulesets/Replays/ReplayButtonState.cs
similarity index 86%
rename from osu.Game/Modes/Replays/ReplayButtonState.cs
rename to osu.Game/Rulesets/Replays/ReplayButtonState.cs
index d49139226c..be55a153cb 100644
--- a/osu.Game/Modes/Replays/ReplayButtonState.cs
+++ b/osu.Game/Rulesets/Replays/ReplayButtonState.cs
@@ -3,7 +3,7 @@
using System;
-namespace osu.Game.Modes.Replays
+namespace osu.Game.Rulesets.Replays
{
[Flags]
public enum ReplayButtonState
diff --git a/osu.Game/Modes/Replays/ReplayFrame.cs b/osu.Game/Rulesets/Replays/ReplayFrame.cs
similarity index 95%
rename from osu.Game/Modes/Replays/ReplayFrame.cs
rename to osu.Game/Rulesets/Replays/ReplayFrame.cs
index 4cd681beaf..31f952abdf 100644
--- a/osu.Game/Modes/Replays/ReplayFrame.cs
+++ b/osu.Game/Rulesets/Replays/ReplayFrame.cs
@@ -3,7 +3,7 @@
using OpenTK;
-namespace osu.Game.Modes.Replays
+namespace osu.Game.Rulesets.Replays
{
public class ReplayFrame
{
diff --git a/osu.Game/Modes/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs
similarity index 87%
rename from osu.Game/Modes/Ruleset.cs
rename to osu.Game/Rulesets/Ruleset.cs
index cf0fbe5b6a..5e92d25297 100644
--- a/osu.Game/Modes/Ruleset.cs
+++ b/osu.Game/Rulesets/Ruleset.cs
@@ -3,13 +3,13 @@
using osu.Game.Beatmaps;
using osu.Game.Graphics;
-using osu.Game.Modes.Mods;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets.Mods;
+using osu.Game.Rulesets.UI;
using osu.Game.Screens.Play;
using System.Collections.Generic;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Scoring;
-namespace osu.Game.Modes
+namespace osu.Game.Rulesets
{
public abstract class Ruleset
{
diff --git a/osu.Game/Modes/Scoring/Score.cs b/osu.Game/Rulesets/Scoring/Score.cs
similarity index 93%
rename from osu.Game/Modes/Scoring/Score.cs
rename to osu.Game/Rulesets/Scoring/Score.cs
index b0c123f438..cb7831b04a 100644
--- a/osu.Game/Modes/Scoring/Score.cs
+++ b/osu.Game/Rulesets/Scoring/Score.cs
@@ -5,12 +5,12 @@ using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using osu.Game.Database;
-using osu.Game.Modes.Mods;
+using osu.Game.Rulesets.Mods;
using osu.Game.Users;
using System.IO;
-using osu.Game.Modes.Replays;
+using osu.Game.Rulesets.Replays;
-namespace osu.Game.Modes.Scoring
+namespace osu.Game.Rulesets.Scoring
{
public class Score
{
diff --git a/osu.Game/Modes/Scoring/ScoreProcessor.cs b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs
similarity index 92%
rename from osu.Game/Modes/Scoring/ScoreProcessor.cs
rename to osu.Game/Rulesets/Scoring/ScoreProcessor.cs
index ba845b84dc..b2c5d8319e 100644
--- a/osu.Game/Modes/Scoring/ScoreProcessor.cs
+++ b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs
@@ -5,12 +5,12 @@ using System;
using System.Collections.Generic;
using osu.Framework.Configuration;
using osu.Game.Beatmaps;
-using osu.Game.Modes.Judgements;
-using osu.Game.Modes.Objects;
-using osu.Game.Modes.UI;
-using osu.Game.Modes.Objects.Drawables;
+using osu.Game.Rulesets.Judgements;
+using osu.Game.Rulesets.Objects;
+using osu.Game.Rulesets.UI;
+using osu.Game.Rulesets.Objects.Drawables;
-namespace osu.Game.Modes.Scoring
+namespace osu.Game.Rulesets.Scoring
{
public abstract class ScoreProcessor
{
@@ -62,7 +62,7 @@ namespace osu.Game.Modes.Scoring
}
///
- /// Creates a Score applicable to the game mode in which this ScoreProcessor resides.
+ /// Creates a Score applicable to the ruleset in which this ScoreProcessor resides.
///
/// The Score.
public virtual Score CreateScore() => new Score
@@ -193,4 +193,4 @@ namespace osu.Game.Modes.Scoring
/// The judgement that triggered this calculation.
protected virtual void OnJudgementChanged(TJudgement judgement) { }
}
-}
\ No newline at end of file
+}
diff --git a/osu.Game/Modes/Scoring/ScoreRank.cs b/osu.Game/Rulesets/Scoring/ScoreRank.cs
similarity index 90%
rename from osu.Game/Modes/Scoring/ScoreRank.cs
rename to osu.Game/Rulesets/Scoring/ScoreRank.cs
index 743f24ecd6..f4a6a1e03c 100644
--- a/osu.Game/Modes/Scoring/ScoreRank.cs
+++ b/osu.Game/Rulesets/Scoring/ScoreRank.cs
@@ -3,7 +3,7 @@
using System.ComponentModel;
-namespace osu.Game.Modes.Scoring
+namespace osu.Game.Rulesets.Scoring
{
public enum ScoreRank
{
diff --git a/osu.Game/Modes/UI/ComboCounter.cs b/osu.Game/Rulesets/UI/ComboCounter.cs
similarity index 96%
rename from osu.Game/Modes/UI/ComboCounter.cs
rename to osu.Game/Rulesets/UI/ComboCounter.cs
index 8c0327fa04..d21059cbdb 100644
--- a/osu.Game/Modes/UI/ComboCounter.cs
+++ b/osu.Game/Rulesets/UI/ComboCounter.cs
@@ -10,7 +10,7 @@ using osu.Framework.Graphics.Transforms;
using osu.Framework.MathUtils;
using osu.Game.Graphics.Sprites;
-namespace osu.Game.Modes.UI
+namespace osu.Game.Rulesets.UI
{
public abstract class ComboCounter : Container
{
diff --git a/osu.Game/Modes/UI/ComboResultCounter.cs b/osu.Game/Rulesets/UI/ComboResultCounter.cs
similarity index 95%
rename from osu.Game/Modes/UI/ComboResultCounter.cs
rename to osu.Game/Rulesets/UI/ComboResultCounter.cs
index 63009c5351..4b19b2c1ff 100644
--- a/osu.Game/Modes/UI/ComboResultCounter.cs
+++ b/osu.Game/Rulesets/UI/ComboResultCounter.cs
@@ -7,7 +7,7 @@ using osu.Framework.MathUtils;
using osu.Game.Graphics.UserInterface;
using System;
-namespace osu.Game.Modes.UI
+namespace osu.Game.Rulesets.UI
{
///
/// Used to display combo with a roll-up animation in results screen.
diff --git a/osu.Game/Modes/UI/HealthDisplay.cs b/osu.Game/Rulesets/UI/HealthDisplay.cs
similarity index 91%
rename from osu.Game/Modes/UI/HealthDisplay.cs
rename to osu.Game/Rulesets/UI/HealthDisplay.cs
index 4c8d7e4ab8..5c6b9d2fe3 100644
--- a/osu.Game/Modes/UI/HealthDisplay.cs
+++ b/osu.Game/Rulesets/UI/HealthDisplay.cs
@@ -4,7 +4,7 @@
using osu.Framework.Configuration;
using osu.Framework.Graphics.Containers;
-namespace osu.Game.Modes.UI
+namespace osu.Game.Rulesets.UI
{
public abstract class HealthDisplay : Container
{
diff --git a/osu.Game/Modes/UI/HitRenderer.cs b/osu.Game/Rulesets/UI/HitRenderer.cs
similarity index 87%
rename from osu.Game/Modes/UI/HitRenderer.cs
rename to osu.Game/Rulesets/UI/HitRenderer.cs
index 6962c80d87..098a4d5f03 100644
--- a/osu.Game/Modes/UI/HitRenderer.cs
+++ b/osu.Game/Rulesets/UI/HitRenderer.cs
@@ -5,20 +5,21 @@ using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Beatmaps;
-using osu.Game.Modes.Judgements;
-using osu.Game.Modes.Mods;
-using osu.Game.Modes.Objects;
-using osu.Game.Modes.Objects.Drawables;
+using osu.Game.Rulesets.Judgements;
+using osu.Game.Rulesets.Mods;
+using osu.Game.Rulesets.Objects;
+using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Screens.Play;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
-using osu.Game.Modes.Replays;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Replays;
+using osu.Game.Rulesets.Scoring;
using OpenTK;
+using osu.Game.Rulesets.Beatmaps;
-namespace osu.Game.Modes.UI
+namespace osu.Game.Rulesets.UI
{
///
/// Base HitRenderer. Doesn't hold objects.
@@ -119,8 +120,12 @@ namespace osu.Game.Modes.UI
RelativeSizeAxes = Axes.Both;
- IBeatmapConverter converter = CreateBeatmapConverter();
- IBeatmapProcessor processor = CreateBeatmapProcessor();
+ BeatmapConverter converter = CreateBeatmapConverter();
+ BeatmapProcessor processor = CreateBeatmapProcessor();
+
+ // Check if the beatmap can be converted
+ if (!converter.CanConvert(beatmap.Beatmap))
+ throw new BeatmapInvalidForModeException($"{nameof(Beatmap)} can't be converted for the current ruleset.");
// Convert the beatmap
Beatmap = converter.Convert(beatmap.Beatmap);
@@ -136,7 +141,6 @@ namespace osu.Game.Modes.UI
applyMods(beatmap.Mods.Value);
}
-
///
/// Applies the active mods to this HitRenderer.
///
@@ -150,18 +154,18 @@ namespace osu.Game.Modes.UI
mod.Apply(this);
}
- ///
- /// Creates a converter to convert Beatmap to a specific mode.
- ///
- /// The Beatmap converter.
- protected abstract IBeatmapConverter CreateBeatmapConverter();
-
///
/// Creates a processor to perform post-processing operations
/// on HitObjects in converted Beatmaps.
///
/// The Beatmap processor.
- protected abstract IBeatmapProcessor CreateBeatmapProcessor();
+ protected virtual BeatmapProcessor CreateBeatmapProcessor() => new BeatmapProcessor();
+
+ ///
+ /// Creates a converter to convert Beatmap to a specific mode.
+ ///
+ /// The Beatmap converter.
+ protected abstract BeatmapConverter CreateBeatmapConverter();
}
///
@@ -268,4 +272,12 @@ namespace osu.Game.Modes.UI
/// The Playfield.
protected abstract Playfield CreatePlayfield();
}
+
+ public class BeatmapInvalidForModeException : Exception
+ {
+ public BeatmapInvalidForModeException(string text)
+ : base(text)
+ {
+ }
+ }
}
diff --git a/osu.Game/Modes/UI/HudOverlay.cs b/osu.Game/Rulesets/UI/HudOverlay.cs
similarity index 95%
rename from osu.Game/Modes/UI/HudOverlay.cs
rename to osu.Game/Rulesets/UI/HudOverlay.cs
index 4902baf9b9..d2169aa32f 100644
--- a/osu.Game/Modes/UI/HudOverlay.cs
+++ b/osu.Game/Rulesets/UI/HudOverlay.cs
@@ -8,13 +8,13 @@ using osu.Framework.Graphics.Containers;
using osu.Game.Configuration;
using osu.Game.Graphics.UserInterface;
using osu.Game.Screens.Play;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Scoring;
using osu.Framework.Input;
using OpenTK.Input;
using osu.Game.Overlays;
using osu.Game.Overlays.Notifications;
-namespace osu.Game.Modes.UI
+namespace osu.Game.Rulesets.UI
{
public abstract class HudOverlay : Container
{
diff --git a/osu.Game/Modes/UI/ModIcon.cs b/osu.Game/Rulesets/UI/ModIcon.cs
similarity index 94%
rename from osu.Game/Modes/UI/ModIcon.cs
rename to osu.Game/Rulesets/UI/ModIcon.cs
index 1e0aa89a41..8301796c1f 100644
--- a/osu.Game/Modes/UI/ModIcon.cs
+++ b/osu.Game/Rulesets/UI/ModIcon.cs
@@ -6,7 +6,7 @@ using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Graphics;
-namespace osu.Game.Modes.UI
+namespace osu.Game.Rulesets.UI
{
public class ModIcon : Container
{
diff --git a/osu.Game/Modes/UI/Playfield.cs b/osu.Game/Rulesets/UI/Playfield.cs
similarity index 93%
rename from osu.Game/Modes/UI/Playfield.cs
rename to osu.Game/Rulesets/UI/Playfield.cs
index 1e7cf6579c..44d15e42c4 100644
--- a/osu.Game/Modes/UI/Playfield.cs
+++ b/osu.Game/Rulesets/UI/Playfield.cs
@@ -4,13 +4,13 @@
using System;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
-using osu.Game.Modes.Objects;
-using osu.Game.Modes.Objects.Drawables;
+using osu.Game.Rulesets.Objects;
+using osu.Game.Rulesets.Objects.Drawables;
using OpenTK;
-using osu.Game.Modes.Judgements;
+using osu.Game.Rulesets.Judgements;
using osu.Framework.Allocation;
-namespace osu.Game.Modes.UI
+namespace osu.Game.Rulesets.UI
{
public abstract class Playfield : Container
where TObject : HitObject
diff --git a/osu.Game/Modes/UI/StandardComboCounter.cs b/osu.Game/Rulesets/UI/StandardComboCounter.cs
similarity index 96%
rename from osu.Game/Modes/UI/StandardComboCounter.cs
rename to osu.Game/Rulesets/UI/StandardComboCounter.cs
index 08bb3add84..ad05c83839 100644
--- a/osu.Game/Modes/UI/StandardComboCounter.cs
+++ b/osu.Game/Rulesets/UI/StandardComboCounter.cs
@@ -3,7 +3,7 @@
using OpenTK;
-namespace osu.Game.Modes.UI
+namespace osu.Game.Rulesets.UI
{
///
/// Uses the 'x' symbol and has a pop-out effect while rolling over.
diff --git a/osu.Game/Modes/UI/StandardHealthDisplay.cs b/osu.Game/Rulesets/UI/StandardHealthDisplay.cs
similarity index 95%
rename from osu.Game/Modes/UI/StandardHealthDisplay.cs
rename to osu.Game/Rulesets/UI/StandardHealthDisplay.cs
index 12d0f841a2..9294cc3a1a 100644
--- a/osu.Game/Modes/UI/StandardHealthDisplay.cs
+++ b/osu.Game/Rulesets/UI/StandardHealthDisplay.cs
@@ -8,7 +8,7 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Game.Graphics;
-namespace osu.Game.Modes.UI
+namespace osu.Game.Rulesets.UI
{
public class StandardHealthDisplay : HealthDisplay, IHasAccentColour
{
diff --git a/osu.Game/Modes/UI/StandardHudOverlay.cs b/osu.Game/Rulesets/UI/StandardHudOverlay.cs
similarity index 96%
rename from osu.Game/Modes/UI/StandardHudOverlay.cs
rename to osu.Game/Rulesets/UI/StandardHudOverlay.cs
index 161a700bef..2e2cb739f5 100644
--- a/osu.Game/Modes/UI/StandardHudOverlay.cs
+++ b/osu.Game/Rulesets/UI/StandardHudOverlay.cs
@@ -10,7 +10,7 @@ using osu.Game.Graphics;
using osu.Game.Graphics.UserInterface;
using osu.Game.Screens.Play;
-namespace osu.Game.Modes.UI
+namespace osu.Game.Rulesets.UI
{
public class StandardHudOverlay : HudOverlay
{
diff --git a/osu.Game/Screens/BackgroundScreen.cs b/osu.Game/Screens/BackgroundScreen.cs
index fd40141fcb..a9cb93876c 100644
--- a/osu.Game/Screens/BackgroundScreen.cs
+++ b/osu.Game/Screens/BackgroundScreen.cs
@@ -28,7 +28,7 @@ namespace osu.Game.Screens
public override bool Push(Screen screen)
{
- // When trying to push a non-loaded GameMode, load it asynchronously and re-invoke Push
+ // When trying to push a non-loaded screen, load it asynchronously and re-invoke Push
// once it's done.
if (screen.LoadState == LoadState.NotLoaded)
{
@@ -36,7 +36,7 @@ namespace osu.Game.Screens
return true;
}
- // Make sure the in-progress loading is complete before pushing the GameMode.
+ // Make sure the in-progress loading is complete before pushing the screen.
while (screen.LoadState < LoadState.Loaded)
Thread.Sleep(1);
diff --git a/osu.Game/Screens/OsuScreen.cs b/osu.Game/Screens/OsuScreen.cs
index 3e832b36fa..d0856bfe3e 100644
--- a/osu.Game/Screens/OsuScreen.cs
+++ b/osu.Game/Screens/OsuScreen.cs
@@ -14,7 +14,7 @@ namespace osu.Game.Screens
internal BackgroundScreen Background { get; private set; }
///
- /// Override to create a BackgroundMode for the current GameMode.
+ /// Override to create a BackgroundMode for the current screen.
/// Note that the instance created may not be the used instance if it matches the BackgroundMode equality clause.
///
protected virtual BackgroundScreen CreateBackground() => null;
@@ -99,7 +99,7 @@ namespace osu.Game.Screens
if (Background != null && !Background.Equals(nextOsu?.Background))
{
if (nextOsu != null)
- //We need to use MakeCurrent in case we are jumping up multiple game modes.
+ //We need to use MakeCurrent in case we are jumping up multiple game screens.
nextOsu.Background?.MakeCurrent();
else
Background.Exit();
diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs
index b32548c31a..6918cdb3a4 100644
--- a/osu.Game/Screens/Play/Player.cs
+++ b/osu.Game/Screens/Play/Player.cs
@@ -14,14 +14,14 @@ using osu.Framework.Screens;
using osu.Framework.Timing;
using osu.Game.Configuration;
using osu.Game.Database;
-using osu.Game.Modes;
-using osu.Game.Modes.UI;
+using osu.Game.Rulesets;
+using osu.Game.Rulesets.UI;
using osu.Game.Screens.Backgrounds;
using osu.Game.Screens.Ranking;
using System;
using System.Linq;
using osu.Framework.Threading;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Scoring;
namespace osu.Game.Screens.Play
{
@@ -60,8 +60,8 @@ namespace osu.Game.Screens.Play
private PauseOverlay pauseOverlay;
private FailOverlay failOverlay;
- [BackgroundDependencyLoader]
- private void load(AudioManager audio, BeatmapDatabase beatmaps, OsuConfigManager config)
+ [BackgroundDependencyLoader(permitNulls: true)]
+ private void load(AudioManager audio, BeatmapDatabase beatmaps, OsuConfigManager config, OsuGame osu)
{
dimLevel = config.GetBindable(OsuConfig.DimLevel);
mouseWheelDisabled = config.GetBindable(OsuConfig.MouseDisableWheel);
@@ -76,6 +76,19 @@ namespace osu.Game.Screens.Play
if (Beatmap == null)
throw new Exception("Beatmap was not loaded");
+
+ try
+ {
+ // Try using the preferred user ruleset
+ ruleset = osu == null ? Beatmap.BeatmapInfo.Ruleset.CreateInstance() : osu.Ruleset.Value.CreateInstance();
+ HitRenderer = ruleset.CreateHitRendererWith(Beatmap);
+ }
+ catch (BeatmapInvalidForModeException)
+ {
+ // Default to the beatmap ruleset
+ ruleset = Beatmap.BeatmapInfo.Ruleset.CreateInstance();
+ HitRenderer = ruleset.CreateHitRendererWith(Beatmap);
+ }
}
catch (Exception e)
{
@@ -102,12 +115,6 @@ namespace osu.Game.Screens.Play
sourceClock.Reset();
});
- ruleset = Beatmap.BeatmapInfo.Ruleset.CreateInstance();
-
- // Todo: This should be done as early as possible, and should check if the hit renderer
- // can actually convert the hit objects... Somehow...
- HitRenderer = ruleset.CreateHitRendererWith(Beatmap);
-
scoreProcessor = HitRenderer.CreateScoreProcessor();
hudOverlay = new StandardHudOverlay()
diff --git a/osu.Game/Screens/Play/ReplayPlayer.cs b/osu.Game/Screens/Play/ReplayPlayer.cs
index 4593656a2e..860675b62a 100644
--- a/osu.Game/Screens/Play/ReplayPlayer.cs
+++ b/osu.Game/Screens/Play/ReplayPlayer.cs
@@ -1,7 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
-using osu.Game.Modes.Replays;
+using osu.Game.Rulesets.Replays;
namespace osu.Game.Screens.Play
{
diff --git a/osu.Game/Screens/Play/SongProgress.cs b/osu.Game/Screens/Play/SongProgress.cs
index 52f3b9e1ae..19212ec2f4 100644
--- a/osu.Game/Screens/Play/SongProgress.cs
+++ b/osu.Game/Screens/Play/SongProgress.cs
@@ -11,8 +11,8 @@ using osu.Game.Graphics;
using osu.Framework.Allocation;
using System.Linq;
using osu.Framework.Timing;
-using osu.Game.Modes.Objects;
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets.Objects;
+using osu.Game.Rulesets.Objects.Types;
namespace osu.Game.Screens.Play
{
diff --git a/osu.Game/Screens/Ranking/Results.cs b/osu.Game/Screens/Ranking/Results.cs
index 37770bea3e..3db070d33c 100644
--- a/osu.Game/Screens/Ranking/Results.cs
+++ b/osu.Game/Screens/Ranking/Results.cs
@@ -5,7 +5,7 @@ using osu.Framework.Screens;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Graphics.Sprites;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Scoring;
using osu.Game.Screens.Backgrounds;
using OpenTK;
using OpenTK.Graphics;
diff --git a/osu.Game/Screens/ScreenWhiteBox.cs b/osu.Game/Screens/ScreenWhiteBox.cs
index bebdbb8c2a..dca5e17efa 100644
--- a/osu.Game/Screens/ScreenWhiteBox.cs
+++ b/osu.Game/Screens/ScreenWhiteBox.cs
@@ -33,7 +33,7 @@ namespace osu.Game.Screens
{
base.OnEntering(last);
- //only show the pop button if we are entered form another gamemode.
+ //only show the pop button if we are entered form another screen.
if (last != null)
popButton.Alpha = 1;
diff --git a/osu.Game/Screens/Select/BeatmapInfoWedge.cs b/osu.Game/Screens/Select/BeatmapInfoWedge.cs
index cc225659b4..a87d5f58a1 100644
--- a/osu.Game/Screens/Select/BeatmapInfoWedge.cs
+++ b/osu.Game/Screens/Select/BeatmapInfoWedge.cs
@@ -18,9 +18,9 @@ using osu.Game.Beatmaps.Drawables;
using osu.Game.Database;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
-using osu.Game.Modes;
-using osu.Game.Modes.Objects;
-using osu.Game.Modes.Objects.Types;
+using osu.Game.Rulesets;
+using osu.Game.Rulesets.Objects;
+using osu.Game.Rulesets.Objects.Types;
namespace osu.Game.Screens.Select
{
diff --git a/osu.Game/Screens/Select/Leaderboards/DrawableRank.cs b/osu.Game/Screens/Select/Leaderboards/DrawableRank.cs
index 1e9d6dc831..647398db9e 100644
--- a/osu.Game/Screens/Select/Leaderboards/DrawableRank.cs
+++ b/osu.Game/Screens/Select/Leaderboards/DrawableRank.cs
@@ -7,7 +7,7 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.Textures;
using osu.Framework.Extensions;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Scoring;
namespace osu.Game.Screens.Select.Leaderboards
{
diff --git a/osu.Game/Screens/Select/Leaderboards/Leaderboard.cs b/osu.Game/Screens/Select/Leaderboards/Leaderboard.cs
index 315611a60c..2abf3c3175 100644
--- a/osu.Game/Screens/Select/Leaderboards/Leaderboard.cs
+++ b/osu.Game/Screens/Select/Leaderboards/Leaderboard.cs
@@ -12,7 +12,7 @@ using osu.Framework.Graphics.Primitives;
using System;
using osu.Framework.Allocation;
using osu.Game.Database;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Scoring;
using osu.Game.Online.API;
using osu.Game.Online.API.Requests;
diff --git a/osu.Game/Screens/Select/Leaderboards/LeaderboardScore.cs b/osu.Game/Screens/Select/Leaderboards/LeaderboardScore.cs
index 493f351b75..321067d18e 100644
--- a/osu.Game/Screens/Select/Leaderboards/LeaderboardScore.cs
+++ b/osu.Game/Screens/Select/Leaderboards/LeaderboardScore.cs
@@ -10,10 +10,10 @@ using osu.Framework.Graphics.Sprites;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
using osu.Framework.Extensions.Color4Extensions;
-using osu.Game.Modes.Mods;
+using osu.Game.Rulesets.Mods;
using osu.Game.Users;
using osu.Framework;
-using osu.Game.Modes.Scoring;
+using osu.Game.Rulesets.Scoring;
namespace osu.Game.Screens.Select.Leaderboards
{
diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj
index 193c2c1179..5096323540 100644
--- a/osu.Game/osu.Game.csproj
+++ b/osu.Game/osu.Game.csproj
@@ -72,8 +72,8 @@
-
-
+
+
@@ -103,45 +103,60 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
@@ -153,8 +168,8 @@
-
-
+
+
@@ -208,7 +223,7 @@
-
+
@@ -221,16 +236,16 @@
-
+
-
-
+
+
-
-
+
+
@@ -347,9 +362,9 @@
-
+
-
+
@@ -368,7 +383,7 @@
-
+
diff --git a/osu.sln b/osu.sln
index c200d2e586..317cfe7da4 100644
--- a/osu.sln
+++ b/osu.sln
@@ -21,13 +21,13 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Desktop.VisualTests", "
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Game.Tests", "osu.Game.Tests\osu.Game.Tests.csproj", "{54377672-20B1-40AF-8087-5CF73BF3953A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Game.Modes.Osu", "osu.Game.Modes.Osu\osu.Game.Modes.Osu.csproj", "{C92A607B-1FDD-4954-9F92-03FF547D9080}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Game.Rulesets.Osu", "osu.Game.Rulesets.Osu\osu.Game.Rulesets.Osu.csproj", "{C92A607B-1FDD-4954-9F92-03FF547D9080}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Game.Modes.Catch", "osu.Game.Modes.Catch\osu.Game.Modes.Catch.csproj", "{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Game.Rulesets.Catch", "osu.Game.Rulesets.Catch\osu.Game.Rulesets.Catch.csproj", "{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Game.Modes.Taiko", "osu.Game.Modes.Taiko\osu.Game.Modes.Taiko.csproj", "{F167E17A-7DE6-4AF5-B920-A5112296C695}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Game.Rulesets.Taiko", "osu.Game.Rulesets.Taiko\osu.Game.Rulesets.Taiko.csproj", "{F167E17A-7DE6-4AF5-B920-A5112296C695}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Game.Modes.Mania", "osu.Game.Modes.Mania\osu.Game.Modes.Mania.csproj", "{48F4582B-7687-4621-9CBE-5C24197CB536}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Game.Rulesets.Mania", "osu.Game.Rulesets.Mania\osu.Game.Rulesets.Mania.csproj", "{48F4582B-7687-4621-9CBE-5C24197CB536}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu.Desktop.Tests", "osu.Desktop.Tests\osu.Desktop.Tests.csproj", "{230AC4F3-7783-49FB-9AEC-B83CDA3B9F3D}"
EndProject