diff --git a/osu-framework b/osu-framework
index f57175bf20..7f07833fab 160000
--- a/osu-framework
+++ b/osu-framework
@@ -1 +1 @@
-Subproject commit f57175bf2035602b9451562167ddcee978c60620
+Subproject commit 7f07833fabd123c924c8c4fb30ef85f422f481df
diff --git a/osu.Game.Mode.Osu/ComboJudgement.cs b/osu.Game.Mode.Osu/ComboJudgement.cs
deleted file mode 100644
index bda0c52b19..0000000000
--- a/osu.Game.Mode.Osu/ComboJudgement.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System.ComponentModel;
-
-namespace osu.Game.Modes.Osu
-{
- public enum ComboJudgement
- {
- [Description(@"")]
- None,
- [Description(@"Good")]
- Good,
- [Description(@"Amazing")]
- Perfect
- }
-}
\ No newline at end of file
diff --git a/osu.Game.Mode.Osu/Judgement.cs b/osu.Game.Mode.Osu/Judgement.cs
deleted file mode 100644
index 028da7c04a..0000000000
--- a/osu.Game.Mode.Osu/Judgement.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using System.ComponentModel;
-
-namespace osu.Game.Modes.Osu
-{
- public enum Judgement
- {
- [Description(@"Miss")]
- Miss,
- [Description(@"50")]
- Hit50,
- [Description(@"100")]
- Hit100,
- [Description(@"300")]
- Hit300,
- [Description(@"500")]
- Hit500
- }
-}
\ No newline at end of file
diff --git a/osu.Game.Mode.Osu/osu.Game.Modes.Osu.csproj b/osu.Game.Mode.Osu/osu.Game.Modes.Osu.csproj
index d19491647e..9dd65e9b4f 100644
--- a/osu.Game.Mode.Osu/osu.Game.Modes.Osu.csproj
+++ b/osu.Game.Mode.Osu/osu.Game.Modes.Osu.csproj
@@ -43,13 +43,11 @@
-
-
diff --git a/osu.Game/Modes/HitJudgementResolver.cs b/osu.Game/Modes/HitJudgementResolver.cs
new file mode 100644
index 0000000000..0644cf2fd3
--- /dev/null
+++ b/osu.Game/Modes/HitJudgementResolver.cs
@@ -0,0 +1,48 @@
+//Copyright (c) 2007-2016 ppy Pty Ltd .
+//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using osu.Game.Modes.Objects;
+
+namespace osu.Game.Modes
+{
+ public class HitJudgementResolver
+ {
+ public JudgementResult CheckJudgement(HitObject h) => new JudgementResult { Combo = ComboJudgement.None, Judgement = Judgement.Hit300 };
+ }
+
+ public struct JudgementResult
+ {
+ public ComboJudgement Combo;
+ public Judgement Judgement;
+ }
+
+ public enum ComboJudgement
+ {
+ [Description(@"")]
+ None,
+ [Description(@"Good")]
+ Good,
+ [Description(@"Amazing")]
+ Perfect
+ }
+
+ public enum Judgement
+ {
+ [Description(@"Miss")]
+ Miss,
+ [Description(@"50")]
+ Hit50,
+ [Description(@"100")]
+ Hit100,
+ [Description(@"300")]
+ Hit300,
+ [Description(@"500")]
+ Hit500
+ }
+}
diff --git a/osu.Game/Modes/Ruleset.cs b/osu.Game/Modes/Ruleset.cs
index d35aab6568..6576159f62 100644
--- a/osu.Game/Modes/Ruleset.cs
+++ b/osu.Game/Modes/Ruleset.cs
@@ -22,6 +22,8 @@ namespace osu.Game.Modes
public abstract HitObjectParser CreateHitObjectParser();
+ public virtual HitJudgementResolver CreateHitJudgement() => new HitJudgementResolver();
+
public static void Register(Ruleset ruleset) => availableRulesets.TryAdd(ruleset.PlayMode, ruleset.GetType());
protected abstract PlayMode PlayMode { get; }
diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj
index 88f78b57be..bdf3ed139b 100644
--- a/osu.Game/osu.Game.csproj
+++ b/osu.Game/osu.Game.csproj
@@ -63,6 +63,7 @@
+