From 987196011230f95b7c50f29eba4108283bd41d4d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Tue, 29 Nov 2016 15:41:48 +0900 Subject: [PATCH] Basic score flow. --- osu.Game.Mode.Osu/OsuRuleset.cs | 2 ++ osu.Game.Mode.Osu/OsuScore.cs | 12 ++++++++++++ osu.Game.Mode.Osu/osu.Game.Modes.Osu.csproj | 1 + osu.Game.Modes.Catch/CatchRuleset.cs | 2 ++ osu.Game.Modes.Mania/ManiaRuleset.cs | 2 ++ osu.Game.Modes.Taiko/TaikoRuleset.cs | 3 +++ osu.Game/Modes/Ruleset.cs | 2 ++ osu.Game/Modes/Score.cs | 17 +++++++++++++++++ osu.Game/Modes/UI/ScoreOverlay.cs | 1 + osu.Game/Screens/Play/Player.cs | 11 +++++++++++ osu.Game/Screens/Ranking/Results.cs | 3 +++ osu.Game/osu.Game.csproj | 1 + 12 files changed, 57 insertions(+) create mode 100644 osu.Game.Mode.Osu/OsuScore.cs create mode 100644 osu.Game/Modes/Score.cs 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 @@ +