diff --git a/osu.Game.Mode.Osu/OsuRuleset.cs b/osu.Game.Mode.Osu/OsuRuleset.cs
index ac43e5501c..c7cfd63297 100644
--- a/osu.Game.Mode.Osu/OsuRuleset.cs
+++ b/osu.Game.Mode.Osu/OsuRuleset.cs
@@ -17,6 +17,8 @@ namespace osu.Game.Modes.Osu
public override HitObjectParser CreateHitObjectParser() => new OsuHitObjectParser();
+ public override Score CreateScore() => new OsuScore();
+
protected override PlayMode PlayMode => PlayMode.Osu;
}
}
diff --git a/osu.Game.Mode.Osu/OsuScore.cs b/osu.Game.Mode.Osu/OsuScore.cs
new file mode 100644
index 0000000000..5a70cea434
--- /dev/null
+++ b/osu.Game.Mode.Osu/OsuScore.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace osu.Game.Modes.Osu
+{
+ class OsuScore : Score
+ {
+ }
+}
diff --git a/osu.Game.Mode.Osu/osu.Game.Modes.Osu.csproj b/osu.Game.Mode.Osu/osu.Game.Modes.Osu.csproj
index 97b4ebcb99..c27f75f9c5 100644
--- a/osu.Game.Mode.Osu/osu.Game.Modes.Osu.csproj
+++ b/osu.Game.Mode.Osu/osu.Game.Modes.Osu.csproj
@@ -53,6 +53,7 @@
+
diff --git a/osu.Game.Modes.Catch/CatchRuleset.cs b/osu.Game.Modes.Catch/CatchRuleset.cs
index 0195859cb7..08b472f1e2 100644
--- a/osu.Game.Modes.Catch/CatchRuleset.cs
+++ b/osu.Game.Modes.Catch/CatchRuleset.cs
@@ -18,6 +18,8 @@ namespace osu.Game.Modes.Catch
protected override PlayMode PlayMode => PlayMode.Catch;
+ public override Score CreateScore() => new Score();
+
public override HitObjectParser CreateHitObjectParser() => new OsuHitObjectParser();
}
}
diff --git a/osu.Game.Modes.Mania/ManiaRuleset.cs b/osu.Game.Modes.Mania/ManiaRuleset.cs
index cb122084df..85e50b661e 100644
--- a/osu.Game.Modes.Mania/ManiaRuleset.cs
+++ b/osu.Game.Modes.Mania/ManiaRuleset.cs
@@ -19,6 +19,8 @@ namespace osu.Game.Modes.Mania
protected override PlayMode PlayMode => PlayMode.Mania;
+ public override Score CreateScore() => new Score();
+
public override HitObjectParser CreateHitObjectParser() => new OsuHitObjectParser();
}
}
diff --git a/osu.Game.Modes.Taiko/TaikoRuleset.cs b/osu.Game.Modes.Taiko/TaikoRuleset.cs
index fa9d0862c7..51be717e04 100644
--- a/osu.Game.Modes.Taiko/TaikoRuleset.cs
+++ b/osu.Game.Modes.Taiko/TaikoRuleset.cs
@@ -1,6 +1,7 @@
//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 osu.Game.Modes.Objects;
using osu.Game.Modes.Osu.Objects;
@@ -18,6 +19,8 @@ namespace osu.Game.Modes.Taiko
protected override PlayMode PlayMode => PlayMode.Taiko;
+ public override Score CreateScore() => new Score();
+
public override HitObjectParser CreateHitObjectParser() => new OsuHitObjectParser();
}
}
diff --git a/osu.Game/Modes/Ruleset.cs b/osu.Game/Modes/Ruleset.cs
index d35aab6568..2b52bbc1b1 100644
--- a/osu.Game/Modes/Ruleset.cs
+++ b/osu.Game/Modes/Ruleset.cs
@@ -18,6 +18,8 @@ namespace osu.Game.Modes
public abstract ScoreOverlay CreateScoreOverlay();
+ public abstract Score CreateScore();
+
public abstract HitRenderer CreateHitRendererWith(List objects);
public abstract HitObjectParser CreateHitObjectParser();
diff --git a/osu.Game/Modes/Score.cs b/osu.Game/Modes/Score.cs
new file mode 100644
index 0000000000..88d79f94dd
--- /dev/null
+++ b/osu.Game/Modes/Score.cs
@@ -0,0 +1,17 @@
+//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.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace osu.Game.Modes
+{
+ public class Score
+ {
+ public double TotalScore { get; }
+ public double Accuracy { get; }
+ }
+}
diff --git a/osu.Game/Modes/UI/ScoreOverlay.cs b/osu.Game/Modes/UI/ScoreOverlay.cs
index 2270533d47..31f6ebdcca 100644
--- a/osu.Game/Modes/UI/ScoreOverlay.cs
+++ b/osu.Game/Modes/UI/ScoreOverlay.cs
@@ -15,6 +15,7 @@ namespace osu.Game.Modes.UI
public ComboCounter ComboCounter;
public ScoreCounter ScoreCounter;
public PercentageCounter AccuracyCounter;
+ public Score Score { get; set; }
protected abstract KeyCounterCollection CreateKeyCounter();
protected abstract ComboCounter CreateComboCounter();
diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs
index 66cec7405e..590412b83a 100644
--- a/osu.Game/Screens/Play/Player.cs
+++ b/osu.Game/Screens/Play/Player.cs
@@ -19,6 +19,7 @@ using OpenTK.Input;
using MouseState = osu.Framework.Input.MouseState;
using OpenTK;
using osu.Framework.GameModes;
+using osu.Game.Screens.Ranking;
namespace osu.Game.Screens.Play
{
@@ -36,6 +37,8 @@ namespace osu.Game.Screens.Play
private IAdjustableClock sourceClock;
+ private Score score;
+
private Ruleset ruleset;
[BackgroundDependencyLoader]
@@ -84,6 +87,8 @@ namespace osu.Game.Screens.Play
ruleset = Ruleset.GetRuleset(usablePlayMode);
var scoreOverlay = ruleset.CreateScoreOverlay();
+ scoreOverlay.Score = (score = ruleset.CreateScore());
+
var hitRenderer = ruleset.CreateHitRendererWith(beatmap.HitObjects);
hitRenderer.OnHit += delegate (HitObject h) { scoreOverlay.OnHit(h); };
@@ -117,6 +122,12 @@ namespace osu.Game.Screens.Play
{
base.Update();
Clock.ProcessFrame();
+
+ if (Beatmap.Track.HasCompleted)
+ Push(new Results
+ {
+ Score = score
+ });
}
class PlayerInputManager : UserInputManager
diff --git a/osu.Game/Screens/Ranking/Results.cs b/osu.Game/Screens/Ranking/Results.cs
index b1d55ab54a..55f2d4fe2b 100644
--- a/osu.Game/Screens/Ranking/Results.cs
+++ b/osu.Game/Screens/Ranking/Results.cs
@@ -2,6 +2,7 @@
//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Framework.GameModes;
+using osu.Game.Modes;
using osu.Game.Screens.Backgrounds;
using OpenTK.Graphics;
@@ -22,5 +23,7 @@ namespace osu.Game.Screens.Ranking
Background.Schedule(() => Background.FadeColour(Color4.White, 500));
return base.OnExiting(next);
}
+
+ public Score Score { get; set; }
}
}
diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj
index c35bafb251..90bea8c033 100644
--- a/osu.Game/osu.Game.csproj
+++ b/osu.Game/osu.Game.csproj
@@ -66,6 +66,7 @@
+