From 862c4c408f9acc2b0c7e4d8202e19c1b9b2d4584 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Fri, 17 Mar 2017 14:24:46 +0900 Subject: [PATCH 01/21] Add legacy beatmap flag. --- osu.Game/Beatmaps/Beatmap.cs | 9 +++++++++ osu.Game/Beatmaps/Formats/OsuLegacyDecoder.cs | 11 +++++++++++ osu.Game/Beatmaps/Legacy/IIsLegacy.cs | 9 +++++++++ osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs | 17 +++++++++++++++++ osu.Game/osu.Game.csproj | 2 ++ 5 files changed, 48 insertions(+) create mode 100644 osu.Game/Beatmaps/Legacy/IIsLegacy.cs create mode 100644 osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs diff --git a/osu.Game/Beatmaps/Beatmap.cs b/osu.Game/Beatmaps/Beatmap.cs index fc8bb751f9..feeaa5617a 100644 --- a/osu.Game/Beatmaps/Beatmap.cs +++ b/osu.Game/Beatmaps/Beatmap.cs @@ -70,5 +70,14 @@ namespace osu.Game.Beatmaps /// /// The star difficulty. public double CalculateStarDifficulty() => Ruleset.GetRuleset(BeatmapInfo.Mode).CreateDifficultyCalculator(this).Calculate(); + + /// + /// Constructs a new beatmap. + /// + /// The original beatmap to use the parameters of. + public Beatmap(Beatmap original = null) + : base(original) + { + } } } diff --git a/osu.Game/Beatmaps/Formats/OsuLegacyDecoder.cs b/osu.Game/Beatmaps/Formats/OsuLegacyDecoder.cs index e7ede36b4b..979156ac96 100644 --- a/osu.Game/Beatmaps/Formats/OsuLegacyDecoder.cs +++ b/osu.Game/Beatmaps/Formats/OsuLegacyDecoder.cs @@ -10,6 +10,7 @@ using osu.Game.Beatmaps.Samples; using osu.Game.Beatmaps.Timing; using osu.Game.Modes; using osu.Game.Modes.Objects; +using osu.Game.Beatmaps.Legacy; namespace osu.Game.Beatmaps.Formats { @@ -242,6 +243,16 @@ namespace osu.Game.Beatmaps.Formats } } + protected override Beatmap ParseFile(TextReader stream) + { + return new LegacyBeatmap(base.ParseFile(stream)); + } + + public override Beatmap Decode(TextReader stream) + { + return new LegacyBeatmap(base.Decode(stream)); + } + protected override void ParseFile(TextReader stream, Beatmap beatmap) { HitObjectParser parser = null; diff --git a/osu.Game/Beatmaps/Legacy/IIsLegacy.cs b/osu.Game/Beatmaps/Legacy/IIsLegacy.cs new file mode 100644 index 0000000000..23ab9f4bc4 --- /dev/null +++ b/osu.Game/Beatmaps/Legacy/IIsLegacy.cs @@ -0,0 +1,9 @@ +namespace osu.Game.Beatmaps.Legacy +{ + /// + /// A Beatmap that was loaded from a legacy .osu beatmap file (version <=15). + /// + public interface IIsLegacy + { + } +} diff --git a/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs b/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs new file mode 100644 index 0000000000..00aeeb2b49 --- /dev/null +++ b/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs @@ -0,0 +1,17 @@ +namespace osu.Game.Beatmaps.Legacy +{ + /// + /// A type of Beatmap loaded from a legacy .osu beatmap file (version <=15). + /// + internal class LegacyBeatmap : Beatmap, IIsLegacy + { + /// + /// Constructs a new beatmap. + /// + /// The original beatmap to use the parameters of. + public LegacyBeatmap(Beatmap original = null) + : base(original) + { + } + } +} diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 80d5c906e0..c0f11dbcb9 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -75,7 +75,9 @@ + + From 67c9bb37fd8294a5f6229e856c00cfecf5335cd9 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Fri, 17 Mar 2017 14:51:09 +0900 Subject: [PATCH 02/21] Add license headers. --- osu.Game/Beatmaps/Legacy/IIsLegacy.cs | 5 ++++- osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/osu.Game/Beatmaps/Legacy/IIsLegacy.cs b/osu.Game/Beatmaps/Legacy/IIsLegacy.cs index 23ab9f4bc4..3babd3e66f 100644 --- a/osu.Game/Beatmaps/Legacy/IIsLegacy.cs +++ b/osu.Game/Beatmaps/Legacy/IIsLegacy.cs @@ -1,4 +1,7 @@ -namespace osu.Game.Beatmaps.Legacy +// Copyright (c) 2007-2017 ppy Pty Ltd . +// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +namespace osu.Game.Beatmaps.Legacy { /// /// A Beatmap that was loaded from a legacy .osu beatmap file (version <=15). diff --git a/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs b/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs index 00aeeb2b49..d0386e7560 100644 --- a/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs +++ b/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs @@ -1,4 +1,7 @@ -namespace osu.Game.Beatmaps.Legacy +// Copyright (c) 2007-2017 ppy Pty Ltd . +// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +namespace osu.Game.Beatmaps.Legacy { /// /// A type of Beatmap loaded from a legacy .osu beatmap file (version <=15). From 74a1837a05f71d6a5f90bf681e4fd8b68b9fc535 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Fri, 17 Mar 2017 14:56:50 +0900 Subject: [PATCH 03/21] Fix nullref. --- osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs b/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs index d0386e7560..45c5665494 100644 --- a/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs +++ b/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs @@ -15,6 +15,7 @@ namespace osu.Game.Beatmaps.Legacy public LegacyBeatmap(Beatmap original = null) : base(original) { + HitObjects = original?.HitObjects ?? null; } } } From cce1ae055fc979a57642e48434ec40894e9c9d95 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Fri, 17 Mar 2017 15:30:19 +0900 Subject: [PATCH 04/21] Make DrawableHitObject expires explicit. --- osu.Game.Modes.Osu/Objects/Drawables/DrawableHitCircle.cs | 3 +++ osu.Game.Modes.Osu/Objects/Drawables/DrawableSlider.cs | 2 ++ osu.Game.Modes.Osu/Objects/Drawables/DrawableSpinner.cs | 2 ++ osu.Game/Modes/Objects/Drawables/DrawableHitObject.cs | 7 ++----- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/osu.Game.Modes.Osu/Objects/Drawables/DrawableHitCircle.cs b/osu.Game.Modes.Osu/Objects/Drawables/DrawableHitCircle.cs index c0ff0e520a..20bb937b76 100644 --- a/osu.Game.Modes.Osu/Objects/Drawables/DrawableHitCircle.cs +++ b/osu.Game.Modes.Osu/Objects/Drawables/DrawableHitCircle.cs @@ -128,9 +128,11 @@ namespace osu.Game.Modes.Osu.Objects.Drawables case ArmedState.Idle: Delay(duration + TIME_PREEMPT); FadeOut(TIME_FADEOUT); + Expire(true); break; case ArmedState.Miss: FadeOut(TIME_FADEOUT / 5); + Expire(); break; case ArmedState.Hit: const double flash_in = 40; @@ -150,6 +152,7 @@ namespace osu.Game.Modes.Osu.Objects.Drawables FadeOut(800); ScaleTo(Scale * 1.5f, 400, EasingTypes.OutQuad); + Expire(); break; } } diff --git a/osu.Game.Modes.Osu/Objects/Drawables/DrawableSlider.cs b/osu.Game.Modes.Osu/Objects/Drawables/DrawableSlider.cs index 5df2e26bc3..a2a52c7d94 100644 --- a/osu.Game.Modes.Osu/Objects/Drawables/DrawableSlider.cs +++ b/osu.Game.Modes.Osu/Objects/Drawables/DrawableSlider.cs @@ -168,6 +168,8 @@ namespace osu.Game.Modes.Osu.Objects.Drawables ball.FadeOut(160); FadeOut(800); + + Expire(); } public Drawable ProxiedLayer => initialCircle.ApproachCircle; diff --git a/osu.Game.Modes.Osu/Objects/Drawables/DrawableSpinner.cs b/osu.Game.Modes.Osu/Objects/Drawables/DrawableSpinner.cs index 97df378f86..77bfb97ad4 100644 --- a/osu.Game.Modes.Osu/Objects/Drawables/DrawableSpinner.cs +++ b/osu.Game.Modes.Osu/Objects/Drawables/DrawableSpinner.cs @@ -146,9 +146,11 @@ namespace osu.Game.Modes.Osu.Objects.Drawables { case ArmedState.Hit: ScaleTo(Scale * 1.2f, 320, EasingTypes.Out); + Expire(); break; case ArmedState.Miss: ScaleTo(Scale * 0.8f, 320, EasingTypes.In); + Expire(); break; } } diff --git a/osu.Game/Modes/Objects/Drawables/DrawableHitObject.cs b/osu.Game/Modes/Objects/Drawables/DrawableHitObject.cs index 41c807ba9e..3ff30bd90e 100644 --- a/osu.Game/Modes/Objects/Drawables/DrawableHitObject.cs +++ b/osu.Game/Modes/Objects/Drawables/DrawableHitObject.cs @@ -34,12 +34,11 @@ namespace osu.Game.Modes.Objects.Drawables set { - if (state == value) return; + if (state == value) + return; state = value; UpdateState(state); - if (IsLoaded) - Expire(); if (State == ArmedState.Hit) PlaySample(); @@ -63,8 +62,6 @@ namespace osu.Game.Modes.Objects.Drawables //force application of the state that was set before we loaded. UpdateState(State); - - Expire(true); } } From 26b0bb02d80dfb49ac00435d029f0693bd15aa75 Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Sat, 18 Mar 2017 18:32:54 +0900 Subject: [PATCH 05/21] Remove IIsLegacy, expose LegacyBeatmap without a public constructor. --- osu.Game/Beatmaps/Legacy/IIsLegacy.cs | 12 ------------ osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs | 4 ++-- osu.Game/osu.Game.csproj | 1 - 3 files changed, 2 insertions(+), 15 deletions(-) delete mode 100644 osu.Game/Beatmaps/Legacy/IIsLegacy.cs diff --git a/osu.Game/Beatmaps/Legacy/IIsLegacy.cs b/osu.Game/Beatmaps/Legacy/IIsLegacy.cs deleted file mode 100644 index 3babd3e66f..0000000000 --- a/osu.Game/Beatmaps/Legacy/IIsLegacy.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) 2007-2017 ppy Pty Ltd . -// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE - -namespace osu.Game.Beatmaps.Legacy -{ - /// - /// A Beatmap that was loaded from a legacy .osu beatmap file (version <=15). - /// - public interface IIsLegacy - { - } -} diff --git a/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs b/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs index 45c5665494..dd40af925a 100644 --- a/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs +++ b/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs @@ -6,13 +6,13 @@ namespace osu.Game.Beatmaps.Legacy /// /// A type of Beatmap loaded from a legacy .osu beatmap file (version <=15). /// - internal class LegacyBeatmap : Beatmap, IIsLegacy + public class LegacyBeatmap : Beatmap { /// /// Constructs a new beatmap. /// /// The original beatmap to use the parameters of. - public LegacyBeatmap(Beatmap original = null) + internal LegacyBeatmap(Beatmap original = null) : base(original) { HitObjects = original?.HitObjects ?? null; diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index c0f11dbcb9..1f14615b62 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -77,7 +77,6 @@ - From b68b017a49e2b4a70a5bdbdc9cf9485d9638d1ce Mon Sep 17 00:00:00 2001 From: smoogipooo Date: Sat, 18 Mar 2017 18:38:51 +0900 Subject: [PATCH 06/21] What even was this lol. --- osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs b/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs index dd40af925a..0b8b13f902 100644 --- a/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs +++ b/osu.Game/Beatmaps/Legacy/LegacyBeatmap.cs @@ -15,7 +15,7 @@ namespace osu.Game.Beatmaps.Legacy internal LegacyBeatmap(Beatmap original = null) : base(original) { - HitObjects = original?.HitObjects ?? null; + HitObjects = original?.HitObjects; } } } From 3ee2b68215d73eb2a519de775045601aae59fca9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sat, 18 Mar 2017 12:00:31 +0100 Subject: [PATCH 07/21] Hide the OS cursor in OsuGameBase --- osu-framework | 2 +- osu.Game/OsuGameBase.cs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/osu-framework b/osu-framework index 169cb6485e..40a23b9921 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 169cb6485e7ae740a71cbcb7d0d9d08052eb8848 +Subproject commit 40a23b992159327b1d044bdd05b4feb13ff55a3e diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index f454956de7..299c47ce8a 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -132,6 +132,8 @@ namespace osu.Game { base.LoadComplete(); + Host.Window.CursorState = CursorState.Hidden; + AddInternal(ratioContainer = new RatioAdjust { Children = new[] From 341f36be5f7015559e3becf0ea5a3b079caee6fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sat, 18 Mar 2017 12:00:44 +0100 Subject: [PATCH 08/21] Add tests service reference --- osu.Desktop.Tests/osu.Desktop.Tests.csproj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/osu.Desktop.Tests/osu.Desktop.Tests.csproj b/osu.Desktop.Tests/osu.Desktop.Tests.csproj index e89308bbb9..ad69994592 100644 --- a/osu.Desktop.Tests/osu.Desktop.Tests.csproj +++ b/osu.Desktop.Tests/osu.Desktop.Tests.csproj @@ -105,6 +105,9 @@ + + +