diff --git a/osu-framework b/osu-framework index 1cb936a4fe..eb9869d6f5 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 1cb936a4fe9e699ee37deb34eed0b04bc06167e3 +Subproject commit eb9869d6f5a15ee7ee3a0cdc006ab9f216444860 diff --git a/osu.Desktop.VisualTests/Platform/TestStorage.cs b/osu.Desktop.VisualTests/Platform/TestStorage.cs index bffa3420d4..2a6b5a787c 100644 --- a/osu.Desktop.VisualTests/Platform/TestStorage.cs +++ b/osu.Desktop.VisualTests/Platform/TestStorage.cs @@ -1,13 +1,11 @@ -using System; -using System.IO; -using osu.Framework; +using osu.Framework; using osu.Framework.Desktop.Platform; using SQLite.Net; -using SQLite.Net.Platform.Generic; using SQLite.Net.Interop; -using SQLite.Net.Platform.Win32; - -namespace osu.Desktop.Platform +using SQLite.Net.Platform.Generic; +using SQLite.Net.Platform.Win32; + +namespace osu.Desktop.VisualTests.Platform { public class TestStorage : DesktopStorage { diff --git a/osu.Desktop.VisualTests/Tests/TestCaseGamefield.cs b/osu.Desktop.VisualTests/Tests/TestCaseGamefield.cs index d5b9a9fd03..1ffe76bdda 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseGamefield.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseGamefield.cs @@ -7,12 +7,16 @@ using osu.Framework.Graphics; using osu.Framework.MathUtils; using osu.Framework.Timing; using osu.Game.Beatmaps; -using osu.Game.Beatmaps.Objects; -using osu.Game.Beatmaps.Objects.Osu; -using osu.Game.GameModes.Play.Catch; -using osu.Game.GameModes.Play.Mania; -using osu.Game.GameModes.Play.Osu; -using osu.Game.GameModes.Play.Taiko; +using osu.Game.Modes.Catch; +using osu.Game.Modes.Catch.UI; +using osu.Game.Modes.Mania; +using osu.Game.Modes.Mania.UI; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Osu; +using osu.Game.Modes.Osu.Objects; +using osu.Game.Modes.Osu.UI; +using osu.Game.Modes.Taiko; +using osu.Game.Modes.Taiko.UI; using OpenTK; namespace osu.Desktop.VisualTests.Tests diff --git a/osu.Desktop.VisualTests/Tests/TestCaseHitObjects.cs b/osu.Desktop.VisualTests/Tests/TestCaseHitObjects.cs index f1d4e72601..1c6c61d51e 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseHitObjects.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseHitObjects.cs @@ -5,11 +5,12 @@ using osu.Framework; using osu.Framework.GameModes.Testing; using osu.Framework.Graphics; using osu.Framework.Timing; -using osu.Game.Beatmaps.Objects; -using osu.Game.Beatmaps.Objects.Osu; -using osu.Game.Beatmaps.Objects.Osu.Drawable; using OpenTK; using osu.Framework.Allocation; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Objects.Drawables; +using osu.Game.Modes.Osu.Objects; +using osu.Game.Modes.Osu.Objects.Drawables; namespace osu.Desktop.VisualTests.Tests { diff --git a/osu.Desktop.VisualTests/Tests/TestCaseMenuButtonSystem.cs b/osu.Desktop.VisualTests/Tests/TestCaseMenuButtonSystem.cs index eaa0a3eea4..c7889134bb 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseMenuButtonSystem.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseMenuButtonSystem.cs @@ -2,7 +2,7 @@ //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using osu.Framework.GameModes.Testing; -using osu.Game.GameModes.Menu; +using osu.Game.Screens.Menu; namespace osu.Desktop.VisualTests.Tests { diff --git a/osu.Desktop.VisualTests/Tests/TestCaseMusicController.cs b/osu.Desktop.VisualTests/Tests/TestCaseMusicController.cs index bdf20ee73c..72ab3b7a7f 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseMusicController.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseMusicController.cs @@ -1,19 +1,12 @@ //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; -using osu.Framework.Allocation; -using osu.Framework.Graphics; using osu.Framework.GameModes.Testing; -using osu.Game.Overlays; +using osu.Framework.Graphics; using osu.Framework.Timing; -using osu.Framework; +using osu.Game.Overlays; -namespace osu.Desktop.Tests +namespace osu.Desktop.VisualTests.Tests { class TestCaseMusicController : TestCase { diff --git a/osu.Desktop.VisualTests/Tests/TestCasePlaySongSelect.cs b/osu.Desktop.VisualTests/Tests/TestCasePlaySongSelect.cs index c3d6263d86..d6e656e57f 100644 --- a/osu.Desktop.VisualTests/Tests/TestCasePlaySongSelect.cs +++ b/osu.Desktop.VisualTests/Tests/TestCasePlaySongSelect.cs @@ -1,16 +1,14 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Framework.GameModes.Testing; using System.Collections.Generic; -using osu.Desktop.Platform; +using osu.Desktop.VisualTests.Platform; +using osu.Framework.GameModes.Testing; using osu.Game.Database; -using osu.Game.GameModes.Play; -using SQLiteNetExtensions.Extensions; -using osu.Framework; -using osu.Game; +using osu.Game.Modes; +using osu.Game.Screens.Play; -namespace osu.Desktop.Tests +namespace osu.Desktop.VisualTests.Tests { class TestCasePlaySongSelect : TestCase { diff --git a/osu.Desktop.VisualTests/Tests/TestCasePlayer.cs b/osu.Desktop.VisualTests/Tests/TestCasePlayer.cs index 03e382b71e..862377c131 100644 --- a/osu.Desktop.VisualTests/Tests/TestCasePlayer.cs +++ b/osu.Desktop.VisualTests/Tests/TestCasePlayer.cs @@ -7,12 +7,12 @@ using osu.Framework.MathUtils; using osu.Framework.Timing; using osu.Game.Beatmaps; using osu.Game.Beatmaps.Formats; -using osu.Game.Beatmaps.Objects; -using osu.Game.Beatmaps.Objects.Osu; -using osu.Game.GameModes.Play; using OpenTK; using osu.Framework; using osu.Framework.Allocation; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Osu.Objects; +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 eb5f51d883..1f6aa236e8 100644 --- a/osu.Desktop.VisualTests/Tests/TestCaseScoreCounter.cs +++ b/osu.Desktop.VisualTests/Tests/TestCaseScoreCounter.cs @@ -6,14 +6,21 @@ using osu.Framework.GameModes.Testing; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; using osu.Framework.MathUtils; -using osu.Game.GameModes.Play; -using osu.Game.GameModes.Play.Catch; -using osu.Game.GameModes.Play.Mania; -using osu.Game.GameModes.Play.Osu; -using osu.Game.GameModes.Play.Taiko; using osu.Game.Graphics.UserInterface; +using osu.Game.Modes; +using osu.Game.Modes.Catch; +using osu.Game.Modes.Catch.UI; +using osu.Game.Modes.Mania; +using osu.Game.Modes.Mania.UI; +using osu.Game.Modes.Osu; +using osu.Game.Modes.Osu.UI; +using osu.Game.Modes.Taiko; +using osu.Game.Modes.Taiko.UI; +using osu.Game.Modes.UI; +using osu.Game.Screens.Play; using OpenTK; using OpenTK.Graphics; +using osu.Framework.Graphics.Primitives; namespace osu.Desktop.VisualTests.Tests { @@ -37,7 +44,7 @@ namespace osu.Desktop.VisualTests.Tests Anchor = Anchor.TopRight, TextSize = 40, Count = 0, - Position = new Vector2(20, 20), + Margin = new MarginPadding(20), }; Add(score); @@ -45,8 +52,8 @@ namespace osu.Desktop.VisualTests.Tests { Origin = Anchor.BottomLeft, Anchor = Anchor.BottomLeft, - Position = new Vector2(10, 10), - InnerCountPosition = new Vector2(10, 10), + Margin = new MarginPadding(10), + InnerCountMargin = new MarginPadding(10), Count = 0, TextSize = 40, }; @@ -86,7 +93,7 @@ namespace osu.Desktop.VisualTests.Tests { Origin = Anchor.TopRight, Anchor = Anchor.TopRight, - Position = new Vector2(20, 60), + Position = new Vector2(-20, 60), }; Add(accuracyCombo); @@ -94,7 +101,7 @@ namespace osu.Desktop.VisualTests.Tests { Origin = Anchor.BottomLeft, Anchor = Anchor.BottomLeft, - Position = new Vector2(20, 160), + Position = new Vector2(20, -160), Count = 5, }; Add(stars); @@ -103,7 +110,7 @@ namespace osu.Desktop.VisualTests.Tests { Origin = Anchor.BottomLeft, Anchor = Anchor.BottomLeft, - Position = new Vector2(20, 190), + Position = new Vector2(20, -190), Text = stars.Count.ToString("0.00"), }; Add(starsLabel); diff --git a/osu.Desktop.VisualTests/VisualTestGame.cs b/osu.Desktop.VisualTests/VisualTestGame.cs index 881a8e9bde..0dc260e1fd 100644 --- a/osu.Desktop.VisualTests/VisualTestGame.cs +++ b/osu.Desktop.VisualTests/VisualTestGame.cs @@ -10,9 +10,7 @@ using osu.Framework.Desktop.Platform; using System.Reflection; using System.IO; using System.Collections.Generic; -using osu.Game.GameModes.Play; using SQLiteNetExtensions.Extensions; -using osu.Desktop.Platform; using osu.Framework.Allocation; namespace osu.Desktop.VisualTests diff --git a/osu.Desktop.VisualTests/osu.Desktop.VisualTests.csproj b/osu.Desktop.VisualTests/osu.Desktop.VisualTests.csproj index e8f8656f15..d12ecc273d 100644 --- a/osu.Desktop.VisualTests/osu.Desktop.VisualTests.csproj +++ b/osu.Desktop.VisualTests/osu.Desktop.VisualTests.csproj @@ -150,6 +150,22 @@ {d9a367c9-4c1a-489f-9b05-a0cea2b53b58} osu.Game.Resources + + {c92a607b-1fdd-4954-9f92-03ff547d9080} + osu.Game.Modes.Osu + + + {58f6c80c-1253-4a0e-a465-b8c85ebeadf3} + osu.Game.Modes.Catch + + + {48f4582b-7687-4621-9cbe-5c24197cb536} + osu.Game.Modes.Mania + + + {f167e17a-7de6-4af5-b920-a5112296c695} + osu.Game.Modes.Taiko + {0d3fbf8a-7464-4cf7-8c90-3e7886df2d4d} osu.Game @@ -158,9 +174,9 @@ + - @@ -172,9 +188,7 @@ - - - + + + + + + + + diff --git a/osu.Game.Mode.Osu/OsuRuleset.cs b/osu.Game.Mode.Osu/OsuRuleset.cs new file mode 100644 index 0000000000..ac43e5501c --- /dev/null +++ b/osu.Game.Mode.Osu/OsuRuleset.cs @@ -0,0 +1,22 @@ +//Copyright (c) 2007-2016 ppy Pty Ltd . +//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using System.Collections.Generic; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Osu.Objects; +using osu.Game.Modes.Osu.UI; +using osu.Game.Modes.UI; + +namespace osu.Game.Modes.Osu +{ + public class OsuRuleset : Ruleset + { + public override ScoreOverlay CreateScoreOverlay() => new OsuScoreOverlay(); + + public override HitRenderer CreateHitRendererWith(List objects) => new OsuHitRenderer { Objects = objects }; + + public override HitObjectParser CreateHitObjectParser() => new OsuHitObjectParser(); + + protected override PlayMode PlayMode => PlayMode.Osu; + } +} diff --git a/osu.Game.Mode.Osu/Properties/AssemblyInfo.cs b/osu.Game.Mode.Osu/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..1b0664acf5 --- /dev/null +++ b/osu.Game.Mode.Osu/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +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.Mode.Osu")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("osu.Game.Mode.Osu")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c92a607b-1fdd-4954-9f92-03ff547d9080")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/osu.Game/GameModes/Play/Osu/OsuComboCounter.cs b/osu.Game.Mode.Osu/UI/OsuComboCounter.cs similarity index 89% rename from osu.Game/GameModes/Play/Osu/OsuComboCounter.cs rename to osu.Game.Mode.Osu/UI/OsuComboCounter.cs index 5fdc4fcc5e..39f76bf280 100644 --- a/osu.Game/GameModes/Play/Osu/OsuComboCounter.cs +++ b/osu.Game.Mode.Osu/UI/OsuComboCounter.cs @@ -1,16 +1,11 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using osu.Game.Modes.UI; using OpenTK; -using osu.Framework; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using osu.Framework.Allocation; +using osu.Framework.Graphics.Primitives; -namespace osu.Game.GameModes.Play.Osu +namespace osu.Game.Modes.Osu.UI { /// /// Uses the 'x' symbol and has a pop-out effect while rolling over. Used in osu! standard. @@ -22,15 +17,15 @@ namespace osu.Game.GameModes.Play.Osu protected virtual float PopOutSmallScale => 1.1f; protected virtual bool CanPopOutWhileRolling => false; - public Vector2 InnerCountPosition + public MarginPadding InnerCountMargin { get { - return DisplayedCountSpriteText.Position; + return DisplayedCountSpriteText.Margin; } set { - DisplayedCountSpriteText.Position = value; + DisplayedCountSpriteText.Margin = value; } } diff --git a/osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs b/osu.Game.Mode.Osu/UI/OsuHitRenderer.cs similarity index 58% rename from osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs rename to osu.Game.Mode.Osu/UI/OsuHitRenderer.cs index 9e12d69d2b..218dc39ba6 100644 --- a/osu.Game/GameModes/Play/Osu/OsuHitRenderer.cs +++ b/osu.Game.Mode.Osu/UI/OsuHitRenderer.cs @@ -1,12 +1,15 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Framework.Graphics; -using osu.Game.Beatmaps.Objects; -using osu.Game.Beatmaps.Objects.Osu; -using osu.Game.Beatmaps.Objects.Osu.Drawable; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Objects.Drawables; +using osu.Game.Modes.UI; +using Circle = osu.Game.Modes.Osu.Objects.Circle; +using DrawableCircle = osu.Game.Modes.Osu.Objects.Drawables.DrawableCircle; +using OsuBaseHit = osu.Game.Modes.Osu.Objects.OsuBaseHit; +using OsuConverter = osu.Game.Modes.Osu.Objects.OsuConverter; -namespace osu.Game.GameModes.Play.Osu +namespace osu.Game.Modes.Osu.UI { public class OsuHitRenderer : HitRenderer { diff --git a/osu.Game/GameModes/Play/Osu/OsuPlayfield.cs b/osu.Game.Mode.Osu/UI/OsuPlayfield.cs similarity index 93% rename from osu.Game/GameModes/Play/Osu/OsuPlayfield.cs rename to osu.Game.Mode.Osu/UI/OsuPlayfield.cs index 09a7666246..93700db30b 100644 --- a/osu.Game/GameModes/Play/Osu/OsuPlayfield.cs +++ b/osu.Game.Mode.Osu/UI/OsuPlayfield.cs @@ -3,12 +3,12 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using OpenTK; -using osu.Framework; using osu.Framework.Graphics.Sprites; +using osu.Game.Modes.UI; +using OpenTK; using OpenTK.Graphics; -namespace osu.Game.GameModes.Play.Osu +namespace osu.Game.Modes.Osu.UI { public class OsuPlayfield : Playfield { diff --git a/osu.Game/GameModes/Play/Osu/ScoreOverlayOsu.cs b/osu.Game.Mode.Osu/UI/OsuScoreOverlay.cs similarity index 65% rename from osu.Game/GameModes/Play/Osu/ScoreOverlayOsu.cs rename to osu.Game.Mode.Osu/UI/OsuScoreOverlay.cs index 1622379fe8..5262d8f250 100644 --- a/osu.Game/GameModes/Play/Osu/ScoreOverlayOsu.cs +++ b/osu.Game.Mode.Osu/UI/OsuScoreOverlay.cs @@ -1,20 +1,16 @@ //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; using osu.Framework.Graphics; using osu.Game.Graphics.UserInterface; +using osu.Game.Modes.UI; using OpenTK; using OpenTK.Input; -using osu.Game.Beatmaps.Objects; +using osu.Framework.Graphics.Primitives; -namespace osu.Game.GameModes.Play.Osu +namespace osu.Game.Modes.Osu.UI { - class ScoreOverlayOsu : ScoreOverlay + public class OsuScoreOverlay : ScoreOverlay { protected override PercentageCounter CreateAccuracyCounter() => new PercentageCounter() { @@ -42,14 +38,14 @@ namespace osu.Game.GameModes.Play.Osu FadeTime = 50, Anchor = Anchor.BottomRight, Origin = Anchor.BottomRight, - Position = new Vector2(10), + Margin = new MarginPadding(10), Counters = new KeyCounter[] - { - new KeyCounterKeyboard(@"Z", Key.Z), - new KeyCounterKeyboard(@"X", Key.X), - new KeyCounterMouse(@"M1", MouseButton.Left), - new KeyCounterMouse(@"M2", MouseButton.Right), - } + { + new KeyCounterKeyboard(@"Z", Key.Z), + new KeyCounterKeyboard(@"X", Key.X), + new KeyCounterMouse(@"M1", MouseButton.Left), + new KeyCounterMouse(@"M2", MouseButton.Right), + } }; } } diff --git a/osu.Game.Mode.Osu/app.config b/osu.Game.Mode.Osu/app.config new file mode 100644 index 0000000000..757f23cb22 --- /dev/null +++ b/osu.Game.Mode.Osu/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/osu.Game.Mode.Osu/osu.Game.Modes.Osu.csproj b/osu.Game.Mode.Osu/osu.Game.Modes.Osu.csproj new file mode 100644 index 0000000000..9a5668b35e --- /dev/null +++ b/osu.Game.Mode.Osu/osu.Game.Modes.Osu.csproj @@ -0,0 +1,81 @@ + + + + + Debug + AnyCPU + {C92A607B-1FDD-4954-9F92-03FF547D9080} + Library + Properties + osu.Game.Modes.Osu + osu.Game.Modes.Osu + v4.5 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\ppy.OpenTK.2.0.50727.1339\lib\net45\OpenTK.dll + True + + + + + + + + + + + + + + + + + + + + + + + + {C76BF5B3-985E-4D39-95FE-97C9C879B83A} + osu.Framework + + + {0d3fbf8a-7464-4cf7-8c90-3e7886df2d4d} + osu.Game + + + + + + + + + + \ No newline at end of file diff --git a/osu.Game.Mode.Osu/packages.config b/osu.Game.Mode.Osu/packages.config new file mode 100644 index 0000000000..e1adbd7260 --- /dev/null +++ b/osu.Game.Mode.Osu/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/osu.Game.Modes.Catch/CatchRuleset.cs b/osu.Game.Modes.Catch/CatchRuleset.cs new file mode 100644 index 0000000000..0195859cb7 --- /dev/null +++ b/osu.Game.Modes.Catch/CatchRuleset.cs @@ -0,0 +1,23 @@ +//Copyright (c) 2007-2016 ppy Pty Ltd . +//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using System.Collections.Generic; +using osu.Game.Modes.Catch.UI; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Osu.Objects; +using osu.Game.Modes.Osu.UI; +using osu.Game.Modes.UI; + +namespace osu.Game.Modes.Catch +{ + public class CatchRuleset : Ruleset + { + public override ScoreOverlay CreateScoreOverlay() => new OsuScoreOverlay(); + + public override HitRenderer CreateHitRendererWith(List objects) => new CatchHitRenderer { Objects = objects }; + + protected override PlayMode PlayMode => PlayMode.Catch; + + public override HitObjectParser CreateHitObjectParser() => new OsuHitObjectParser(); + } +} diff --git a/osu.Game/Beatmaps/Objects/Catch/CatchBaseHit.cs b/osu.Game.Modes.Catch/Objects/CatchBaseHit.cs similarity index 75% rename from osu.Game/Beatmaps/Objects/Catch/CatchBaseHit.cs rename to osu.Game.Modes.Catch/Objects/CatchBaseHit.cs index 590bd8f5b3..67e94e7000 100644 --- a/osu.Game/Beatmaps/Objects/Catch/CatchBaseHit.cs +++ b/osu.Game.Modes.Catch/Objects/CatchBaseHit.cs @@ -1,7 +1,9 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -namespace osu.Game.Beatmaps.Objects.Catch +using osu.Game.Modes.Objects; + +namespace osu.Game.Modes.Catch.Objects { public abstract class CatchBaseHit : HitObject { diff --git a/osu.Game/Beatmaps/Objects/Catch/CatchConverter.cs b/osu.Game.Modes.Catch/Objects/CatchConverter.cs similarity index 80% rename from osu.Game/Beatmaps/Objects/Catch/CatchConverter.cs rename to osu.Game.Modes.Catch/Objects/CatchConverter.cs index 317a4e9bb1..81eabc15a2 100644 --- a/osu.Game/Beatmaps/Objects/Catch/CatchConverter.cs +++ b/osu.Game.Modes.Catch/Objects/CatchConverter.cs @@ -1,15 +1,11 @@ //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; -using osu.Game.Beatmaps.Objects.Catch; -using osu.Game.Beatmaps.Objects.Osu; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Osu.Objects; -namespace osu.Game.Beatmaps.Objects.Catch +namespace osu.Game.Modes.Catch.Objects { class CatchConverter : HitObjectConverter { diff --git a/osu.Game/Beatmaps/Objects/Catch/Drawable/DrawableFruit.cs b/osu.Game.Modes.Catch/Objects/Drawable/DrawableFruit.cs similarity index 84% rename from osu.Game/Beatmaps/Objects/Catch/Drawable/DrawableFruit.cs rename to osu.Game.Modes.Catch/Objects/Drawable/DrawableFruit.cs index 4664bacc30..dd9cfbcc6b 100644 --- a/osu.Game/Beatmaps/Objects/Catch/Drawable/DrawableFruit.cs +++ b/osu.Game.Modes.Catch/Objects/Drawable/DrawableFruit.cs @@ -1,20 +1,14 @@ //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; -using osu.Framework; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.Textures; using osu.Framework.Graphics.Transformations; using OpenTK; -using osu.Framework.Allocation; -using osu.Framework.Graphics.Textures; -namespace osu.Game.Beatmaps.Objects.Catch.Drawable +namespace osu.Game.Modes.Catch.Objects.Drawable { class DrawableFruit : Sprite { diff --git a/osu.Game/Beatmaps/Objects/Catch/Droplet.cs b/osu.Game.Modes.Catch/Objects/Droplet.cs similarity index 80% rename from osu.Game/Beatmaps/Objects/Catch/Droplet.cs rename to osu.Game.Modes.Catch/Objects/Droplet.cs index fd7967315d..42ad809e2c 100644 --- a/osu.Game/Beatmaps/Objects/Catch/Droplet.cs +++ b/osu.Game.Modes.Catch/Objects/Droplet.cs @@ -1,7 +1,7 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -namespace osu.Game.Beatmaps.Objects.Catch +namespace osu.Game.Modes.Catch.Objects { public class Droplet : CatchBaseHit { diff --git a/osu.Game/Beatmaps/Objects/Catch/Fruit.cs b/osu.Game.Modes.Catch/Objects/Fruit.cs similarity index 80% rename from osu.Game/Beatmaps/Objects/Catch/Fruit.cs rename to osu.Game.Modes.Catch/Objects/Fruit.cs index 9ef76de841..f1cb3d6db4 100644 --- a/osu.Game/Beatmaps/Objects/Catch/Fruit.cs +++ b/osu.Game.Modes.Catch/Objects/Fruit.cs @@ -1,7 +1,7 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -namespace osu.Game.Beatmaps.Objects.Catch +namespace osu.Game.Modes.Catch.Objects { public class Fruit : CatchBaseHit { diff --git a/osu.Game.Modes.Catch/OpenTK.dll.config b/osu.Game.Modes.Catch/OpenTK.dll.config new file mode 100644 index 0000000000..5620e3d9e2 --- /dev/null +++ b/osu.Game.Modes.Catch/OpenTK.dll.config @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/osu.Game.Modes.Catch/Properties/AssemblyInfo.cs b/osu.Game.Modes.Catch/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..4f0e60baaf --- /dev/null +++ b/osu.Game.Modes.Catch/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +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: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("osu.Game.Modes.Catch")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("58f6c80c-1253-4a0e-a465-b8c85ebeadf3")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/osu.Game/GameModes/Play/Catch/CatchComboCounter.cs b/osu.Game.Modes.Catch/UI/CatchComboCounter.cs similarity index 87% rename from osu.Game/GameModes/Play/Catch/CatchComboCounter.cs rename to osu.Game.Modes.Catch/UI/CatchComboCounter.cs index cf6f153ea1..685516f352 100644 --- a/osu.Game/GameModes/Play/Catch/CatchComboCounter.cs +++ b/osu.Game.Modes.Catch/UI/CatchComboCounter.cs @@ -1,15 +1,10 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using osu.Game.Modes.Osu.UI; using OpenTK.Graphics; -using osu.Game.GameModes.Play.Osu; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -namespace osu.Game.GameModes.Play.Catch +namespace osu.Game.Modes.Catch.UI { /// /// Similar to Standard, but without the 'x' and has tinted pop-ups. Used in osu!catch. diff --git a/osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs b/osu.Game.Modes.Catch/UI/CatchHitRenderer.cs similarity index 71% rename from osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs rename to osu.Game.Modes.Catch/UI/CatchHitRenderer.cs index 729839de7c..9e1d2af571 100644 --- a/osu.Game/GameModes/Play/Catch/CatchHitRenderer.cs +++ b/osu.Game.Modes.Catch/UI/CatchHitRenderer.cs @@ -1,12 +1,12 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Framework.Graphics; -using osu.Game.Beatmaps.Objects; -using osu.Game.Beatmaps.Objects.Catch; -using osu.Game.Beatmaps.Objects.Catch.Drawable; +using osu.Game.Modes.Catch.Objects; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Objects.Drawables; +using osu.Game.Modes.UI; -namespace osu.Game.GameModes.Play.Catch +namespace osu.Game.Modes.Catch.UI { public class CatchHitRenderer : HitRenderer { diff --git a/osu.Game/GameModes/Play/Catch/CatchPlayfield.cs b/osu.Game.Modes.Catch/UI/CatchPlayfield.cs similarity index 76% rename from osu.Game/GameModes/Play/Catch/CatchPlayfield.cs rename to osu.Game.Modes.Catch/UI/CatchPlayfield.cs index 7db68771c0..4b6b2ab531 100644 --- a/osu.Game/GameModes/Play/Catch/CatchPlayfield.cs +++ b/osu.Game.Modes.Catch/UI/CatchPlayfield.cs @@ -2,14 +2,11 @@ //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; +using osu.Game.Modes.UI; using OpenTK; -using OpenTK.Graphics; -using osu.Framework; -using osu.Framework.Allocation; -namespace osu.Game.GameModes.Play.Catch +namespace osu.Game.Modes.Catch.UI { public class CatchPlayfield : Playfield { diff --git a/osu.Game.Modes.Catch/osu.Game.Modes.Catch.csproj b/osu.Game.Modes.Catch/osu.Game.Modes.Catch.csproj new file mode 100644 index 0000000000..1db852e438 --- /dev/null +++ b/osu.Game.Modes.Catch/osu.Game.Modes.Catch.csproj @@ -0,0 +1,85 @@ + + + + + Debug + AnyCPU + {58F6C80C-1253-4A0E-A465-B8C85EBEADF3} + Library + Properties + osu.Game.Modes.Catch + osu.Game.Modes.Catch + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\ppy.OpenTK.2.0.50727.1339\lib\net45\OpenTK.dll + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {C76BF5B3-985E-4D39-95FE-97C9C879B83A} + osu.Framework + + + {C92A607B-1FDD-4954-9F92-03FF547D9080} + osu.Game.Modes.Osu + + + {0D3FBF8A-7464-4CF7-8C90-3E7886DF2D4D} + osu.Game + + + + + \ No newline at end of file diff --git a/osu.Game.Modes.Catch/packages.config b/osu.Game.Modes.Catch/packages.config new file mode 100644 index 0000000000..4da07d9f06 --- /dev/null +++ b/osu.Game.Modes.Catch/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/osu.Game.Modes.Mania/ManiaRuleset.cs b/osu.Game.Modes.Mania/ManiaRuleset.cs new file mode 100644 index 0000000000..cb122084df --- /dev/null +++ b/osu.Game.Modes.Mania/ManiaRuleset.cs @@ -0,0 +1,24 @@ +//Copyright (c) 2007-2016 ppy Pty Ltd . +//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using System.Collections.Generic; +using osu.Game.Modes.Mania.UI; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Osu; +using osu.Game.Modes.Osu.Objects; +using osu.Game.Modes.Osu.UI; +using osu.Game.Modes.UI; + +namespace osu.Game.Modes.Mania +{ + public class ManiaRuleset : Ruleset + { + public override ScoreOverlay CreateScoreOverlay() => new OsuScoreOverlay(); + + public override HitRenderer CreateHitRendererWith(List objects) => new ManiaHitRenderer { Objects = objects }; + + protected override PlayMode PlayMode => PlayMode.Mania; + + public override HitObjectParser CreateHitObjectParser() => new OsuHitObjectParser(); + } +} diff --git a/osu.Game/Beatmaps/Objects/Mania/Drawable/DrawableNote.cs b/osu.Game.Modes.Mania/Objects/Drawable/DrawableNote.cs similarity index 91% rename from osu.Game/Beatmaps/Objects/Mania/Drawable/DrawableNote.cs rename to osu.Game.Modes.Mania/Objects/Drawable/DrawableNote.cs index ed8b42df61..1d81ab16f8 100644 --- a/osu.Game/Beatmaps/Objects/Mania/Drawable/DrawableNote.cs +++ b/osu.Game.Modes.Mania/Objects/Drawable/DrawableNote.cs @@ -1,15 +1,14 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Framework; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Sprites; -using osu.Framework.Graphics.Transformations; -using OpenTK; using osu.Framework.Allocation; +using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; +using osu.Framework.Graphics.Transformations; +using osu.Framework.Graphics; +using OpenTK; -namespace osu.Game.Beatmaps.Objects.Mania.Drawable +namespace osu.Game.Modes.Mania.Objects.Drawable { public class DrawableNote : Sprite { diff --git a/osu.Game/Beatmaps/Objects/Mania/HoldNote.cs b/osu.Game.Modes.Mania/Objects/HoldNote.cs similarity index 79% rename from osu.Game/Beatmaps/Objects/Mania/HoldNote.cs rename to osu.Game.Modes.Mania/Objects/HoldNote.cs index 37e95d8df1..7c12593d79 100644 --- a/osu.Game/Beatmaps/Objects/Mania/HoldNote.cs +++ b/osu.Game.Modes.Mania/Objects/HoldNote.cs @@ -1,7 +1,7 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -namespace osu.Game.Beatmaps.Objects.Mania +namespace osu.Game.Modes.Mania.Objects { public class HoldNote : Note { diff --git a/osu.Game/Beatmaps/Objects/Mania/ManiaBaseHit.cs b/osu.Game.Modes.Mania/Objects/ManiaBaseHit.cs similarity index 75% rename from osu.Game/Beatmaps/Objects/Mania/ManiaBaseHit.cs rename to osu.Game.Modes.Mania/Objects/ManiaBaseHit.cs index d3fe475c6f..efb2c20959 100644 --- a/osu.Game/Beatmaps/Objects/Mania/ManiaBaseHit.cs +++ b/osu.Game.Modes.Mania/Objects/ManiaBaseHit.cs @@ -1,7 +1,9 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -namespace osu.Game.Beatmaps.Objects.Mania +using osu.Game.Modes.Objects; + +namespace osu.Game.Modes.Mania.Objects { public abstract class ManiaBaseHit : HitObject { diff --git a/osu.Game/Beatmaps/Objects/Mania/ManiaConverter.cs b/osu.Game.Modes.Mania/Objects/ManiaConverter.cs similarity index 88% rename from osu.Game/Beatmaps/Objects/Mania/ManiaConverter.cs rename to osu.Game.Modes.Mania/Objects/ManiaConverter.cs index cc03244709..d07d88d970 100644 --- a/osu.Game/Beatmaps/Objects/Mania/ManiaConverter.cs +++ b/osu.Game.Modes.Mania/Objects/ManiaConverter.cs @@ -3,9 +3,10 @@ using System; using System.Collections.Generic; -using osu.Game.Beatmaps.Objects.Osu; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Osu.Objects; -namespace osu.Game.Beatmaps.Objects.Mania +namespace osu.Game.Modes.Mania.Objects { class ManiaConverter : HitObjectConverter { diff --git a/osu.Game/Beatmaps/Objects/Mania/Note.cs b/osu.Game.Modes.Mania/Objects/Note.cs similarity index 80% rename from osu.Game/Beatmaps/Objects/Mania/Note.cs rename to osu.Game.Modes.Mania/Objects/Note.cs index d6e9b0e66c..ec1ee270e3 100644 --- a/osu.Game/Beatmaps/Objects/Mania/Note.cs +++ b/osu.Game.Modes.Mania/Objects/Note.cs @@ -1,7 +1,7 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -namespace osu.Game.Beatmaps.Objects.Mania +namespace osu.Game.Modes.Mania.Objects { public class Note : ManiaBaseHit { diff --git a/osu.Game.Modes.Mania/OpenTK.dll.config b/osu.Game.Modes.Mania/OpenTK.dll.config new file mode 100644 index 0000000000..5620e3d9e2 --- /dev/null +++ b/osu.Game.Modes.Mania/OpenTK.dll.config @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/osu.Game.Modes.Mania/Properties/AssemblyInfo.cs b/osu.Game.Modes.Mania/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..0ac2657410 --- /dev/null +++ b/osu.Game.Modes.Mania/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +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: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("osu.Game.Modes.Mania")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("48f4582b-7687-4621-9cbe-5c24197cb536")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/osu.Game/GameModes/Play/Mania/ManiaComboCounter.cs b/osu.Game.Modes.Mania/UI/ManiaComboCounter.cs similarity index 89% rename from osu.Game/GameModes/Play/Mania/ManiaComboCounter.cs rename to osu.Game.Modes.Mania/UI/ManiaComboCounter.cs index 0a087225fc..dccd871def 100644 --- a/osu.Game/GameModes/Play/Mania/ManiaComboCounter.cs +++ b/osu.Game.Modes.Mania/UI/ManiaComboCounter.cs @@ -1,18 +1,12 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using OpenTK.Graphics; -using osu.Framework; using osu.Framework.Graphics; using osu.Framework.Graphics.Transformations; -using osu.Game.GameModes.Play.Taiko; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using osu.Game.Modes.Taiko.UI; +using OpenTK.Graphics; -namespace osu.Game.GameModes.Play.Mania +namespace osu.Game.Modes.Mania.UI { /// /// Similar to osu!taiko, with a pop-out animation when failing (rolling). Used in osu!mania. diff --git a/osu.Game/GameModes/Play/Mania/ManiaHitRenderer.cs b/osu.Game.Modes.Mania/UI/ManiaHitRenderer.cs similarity index 79% rename from osu.Game/GameModes/Play/Mania/ManiaHitRenderer.cs rename to osu.Game.Modes.Mania/UI/ManiaHitRenderer.cs index 417ed1b698..a13e829e07 100644 --- a/osu.Game/GameModes/Play/Mania/ManiaHitRenderer.cs +++ b/osu.Game.Modes.Mania/UI/ManiaHitRenderer.cs @@ -1,13 +1,12 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using OpenTK; -using osu.Framework.Graphics; -using osu.Game.Beatmaps.Objects; -using osu.Game.Beatmaps.Objects.Mania; -using osu.Game.Beatmaps.Objects.Mania.Drawable; +using osu.Game.Modes.Mania.Objects; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Objects.Drawables; +using osu.Game.Modes.UI; -namespace osu.Game.GameModes.Play.Mania +namespace osu.Game.Modes.Mania.UI { public class ManiaHitRenderer : HitRenderer { diff --git a/osu.Game/GameModes/Play/Mania/ManiaPlayfield.cs b/osu.Game.Modes.Mania/UI/ManiaPlayfield.cs similarity index 92% rename from osu.Game/GameModes/Play/Mania/ManiaPlayfield.cs rename to osu.Game.Modes.Mania/UI/ManiaPlayfield.cs index c5b13fdaeb..bd905cef9a 100644 --- a/osu.Game/GameModes/Play/Mania/ManiaPlayfield.cs +++ b/osu.Game.Modes.Mania/UI/ManiaPlayfield.cs @@ -3,10 +3,11 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; +using osu.Game.Modes.UI; using OpenTK; using OpenTK.Graphics; -namespace osu.Game.GameModes.Play.Mania +namespace osu.Game.Modes.Mania.UI { public class ManiaPlayfield : Playfield { diff --git a/osu.Game.Modes.Mania/app.config b/osu.Game.Modes.Mania/app.config new file mode 100644 index 0000000000..44ccc4b77a --- /dev/null +++ b/osu.Game.Modes.Mania/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/osu.Game.Modes.Mania/osu.Game.Modes.Mania.csproj b/osu.Game.Modes.Mania/osu.Game.Modes.Mania.csproj new file mode 100644 index 0000000000..2ccfff5dcd --- /dev/null +++ b/osu.Game.Modes.Mania/osu.Game.Modes.Mania.csproj @@ -0,0 +1,90 @@ + + + + + Debug + AnyCPU + {48F4582B-7687-4621-9CBE-5C24197CB536} + Library + Properties + osu.Game.Modes.Mania + osu.Game.Modes.Mania + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\ppy.OpenTK.2.0.50727.1339\lib\net45\OpenTK.dll + True + + + + + + + + + + + + + + + + + + + + + + + + + + {C76BF5B3-985E-4D39-95FE-97C9C879B83A} + osu.Framework + + + {C92A607B-1FDD-4954-9F92-03FF547D9080} + osu.Game.Modes.Osu + + + {F167E17A-7DE6-4AF5-B920-A5112296C695} + osu.Game.Modes.Taiko + + + {0D3FBF8A-7464-4CF7-8C90-3E7886DF2D4D} + osu.Game + + + + + + + + + + \ No newline at end of file diff --git a/osu.Game.Modes.Mania/packages.config b/osu.Game.Modes.Mania/packages.config new file mode 100644 index 0000000000..4da07d9f06 --- /dev/null +++ b/osu.Game.Modes.Mania/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/osu.Game/Beatmaps/Objects/Taiko/Drawable/DrawableTaikoHit.cs b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableTaikoHit.cs similarity index 91% rename from osu.Game/Beatmaps/Objects/Taiko/Drawable/DrawableTaikoHit.cs rename to osu.Game.Modes.Taiko/Objects/Drawable/DrawableTaikoHit.cs index 7113016d51..8ef57160d5 100644 --- a/osu.Game/Beatmaps/Objects/Taiko/Drawable/DrawableTaikoHit.cs +++ b/osu.Game.Modes.Taiko/Objects/Drawable/DrawableTaikoHit.cs @@ -1,15 +1,14 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Framework; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.Textures; using osu.Framework.Graphics.Transformations; using OpenTK; -using osu.Framework.Allocation; -using osu.Framework.Graphics.Textures; -namespace osu.Game.Beatmaps.Objects.Taiko.Drawable +namespace osu.Game.Modes.Taiko.Objects.Drawable { class DrawableTaikoHit : Sprite { diff --git a/osu.Game/Beatmaps/Objects/Taiko/TaikoBaseHit.cs b/osu.Game.Modes.Taiko/Objects/TaikoBaseHit.cs similarity index 79% rename from osu.Game/Beatmaps/Objects/Taiko/TaikoBaseHit.cs rename to osu.Game.Modes.Taiko/Objects/TaikoBaseHit.cs index 6b8f241306..ed3f154d20 100644 --- a/osu.Game/Beatmaps/Objects/Taiko/TaikoBaseHit.cs +++ b/osu.Game.Modes.Taiko/Objects/TaikoBaseHit.cs @@ -1,7 +1,9 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -namespace osu.Game.Beatmaps.Objects.Taiko +using osu.Game.Modes.Objects; + +namespace osu.Game.Modes.Taiko.Objects { public class TaikoBaseHit : HitObject { diff --git a/osu.Game/Beatmaps/Objects/Taiko/TaikoConverter.cs b/osu.Game.Modes.Taiko/Objects/TaikoConverter.cs similarity index 87% rename from osu.Game/Beatmaps/Objects/Taiko/TaikoConverter.cs rename to osu.Game.Modes.Taiko/Objects/TaikoConverter.cs index d70e8f8406..4f849d538b 100644 --- a/osu.Game/Beatmaps/Objects/Taiko/TaikoConverter.cs +++ b/osu.Game.Modes.Taiko/Objects/TaikoConverter.cs @@ -1,11 +1,11 @@ //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.Beatmaps.Objects.Osu; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Osu.Objects; -namespace osu.Game.Beatmaps.Objects.Taiko +namespace osu.Game.Modes.Taiko.Objects { class TaikoConverter : HitObjectConverter { diff --git a/osu.Game.Modes.Taiko/OpenTK.dll.config b/osu.Game.Modes.Taiko/OpenTK.dll.config new file mode 100644 index 0000000000..5620e3d9e2 --- /dev/null +++ b/osu.Game.Modes.Taiko/OpenTK.dll.config @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/osu.Game.Modes.Taiko/Properties/AssemblyInfo.cs b/osu.Game.Modes.Taiko/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..fe4ac44ab7 --- /dev/null +++ b/osu.Game.Modes.Taiko/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +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: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("osu.Game.Modes.Taiko")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("f167e17a-7de6-4af5-b920-a5112296c695")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/osu.Game.Modes.Taiko/TaikoRuleset.cs b/osu.Game.Modes.Taiko/TaikoRuleset.cs new file mode 100644 index 0000000000..fa9d0862c7 --- /dev/null +++ b/osu.Game.Modes.Taiko/TaikoRuleset.cs @@ -0,0 +1,23 @@ +//Copyright (c) 2007-2016 ppy Pty Ltd . +//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using System.Collections.Generic; +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.Modes.UI; + +namespace osu.Game.Modes.Taiko +{ + public class TaikoRuleset : Ruleset + { + public override ScoreOverlay CreateScoreOverlay() => new OsuScoreOverlay(); + + public override HitRenderer CreateHitRendererWith(List objects) => new TaikoHitRenderer { Objects = objects }; + + protected override PlayMode PlayMode => PlayMode.Taiko; + + public override HitObjectParser CreateHitObjectParser() => new OsuHitObjectParser(); + } +} diff --git a/osu.Game/GameModes/Play/Taiko/TaikoComboCounter.cs b/osu.Game.Modes.Taiko/UI/TaikoComboCounter.cs similarity index 90% rename from osu.Game/GameModes/Play/Taiko/TaikoComboCounter.cs rename to osu.Game.Modes.Taiko/UI/TaikoComboCounter.cs index 70afd31988..cc94e5e4ea 100644 --- a/osu.Game/GameModes/Play/Taiko/TaikoComboCounter.cs +++ b/osu.Game.Modes.Taiko/UI/TaikoComboCounter.cs @@ -1,15 +1,11 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using OpenTK; using osu.Framework.Graphics.Transformations; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using osu.Game.Modes.UI; +using OpenTK; -namespace osu.Game.GameModes.Play.Taiko +namespace osu.Game.Modes.Taiko.UI { /// /// Allows tint and scaling animations. Used in osu!taiko. diff --git a/osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs b/osu.Game.Modes.Taiko/UI/TaikoHitRenderer.cs similarity index 71% rename from osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs rename to osu.Game.Modes.Taiko/UI/TaikoHitRenderer.cs index 837185d4d8..cf72cfbc47 100644 --- a/osu.Game/GameModes/Play/Taiko/TaikoHitRenderer.cs +++ b/osu.Game.Modes.Taiko/UI/TaikoHitRenderer.cs @@ -1,12 +1,12 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Framework.Graphics; -using osu.Game.Beatmaps.Objects; -using osu.Game.Beatmaps.Objects.Taiko; -using osu.Game.Beatmaps.Objects.Taiko.Drawable; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Objects.Drawables; +using osu.Game.Modes.Taiko.Objects; +using osu.Game.Modes.UI; -namespace osu.Game.GameModes.Play.Taiko +namespace osu.Game.Modes.Taiko.UI { public class TaikoHitRenderer : HitRenderer { diff --git a/osu.Game/GameModes/Play/Taiko/TaikoPlayfield.cs b/osu.Game.Modes.Taiko/UI/TaikoPlayfield.cs similarity index 88% rename from osu.Game/GameModes/Play/Taiko/TaikoPlayfield.cs rename to osu.Game.Modes.Taiko/UI/TaikoPlayfield.cs index b563cc718a..b9bf31bb56 100644 --- a/osu.Game/GameModes/Play/Taiko/TaikoPlayfield.cs +++ b/osu.Game.Modes.Taiko/UI/TaikoPlayfield.cs @@ -1,16 +1,15 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using osu.Framework.Allocation; using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.Textures; +using osu.Game.Modes.UI; using OpenTK; using OpenTK.Graphics; -using osu.Framework; -using osu.Framework.Allocation; -using osu.Framework.Graphics.Textures; -namespace osu.Game.GameModes.Play.Taiko +namespace osu.Game.Modes.Taiko.UI { public class TaikoPlayfield : Playfield { diff --git a/osu.Game.Modes.Taiko/osu.Game.Modes.Taiko.csproj b/osu.Game.Modes.Taiko/osu.Game.Modes.Taiko.csproj new file mode 100644 index 0000000000..d49c3c2466 --- /dev/null +++ b/osu.Game.Modes.Taiko/osu.Game.Modes.Taiko.csproj @@ -0,0 +1,83 @@ + + + + + Debug + AnyCPU + {F167E17A-7DE6-4AF5-B920-A5112296C695} + Library + Properties + osu.Game.Modes.Taiko + osu.Game.Modes.Taiko + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\ppy.OpenTK.2.0.50727.1339\lib\net45\OpenTK.dll + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + {C76BF5B3-985E-4D39-95FE-97C9C879B83A} + osu.Framework + + + {C92A607B-1FDD-4954-9F92-03FF547D9080} + osu.Game.Modes.Osu + + + {0D3FBF8A-7464-4CF7-8C90-3E7886DF2D4D} + osu.Game + + + + + \ No newline at end of file diff --git a/osu.Game.Modes.Taiko/packages.config b/osu.Game.Modes.Taiko/packages.config new file mode 100644 index 0000000000..4da07d9f06 --- /dev/null +++ b/osu.Game.Modes.Taiko/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/osu.Game.Tests/Beatmaps/Formats/OsuLegacyDecoderTest.cs b/osu.Game.Tests/Beatmaps/Formats/OsuLegacyDecoderTest.cs index 2d854ab3b7..90b62ef98a 100644 --- a/osu.Game.Tests/Beatmaps/Formats/OsuLegacyDecoderTest.cs +++ b/osu.Game.Tests/Beatmaps/Formats/OsuLegacyDecoderTest.cs @@ -5,9 +5,11 @@ using OpenTK; using OpenTK.Graphics; using osu.Game.Beatmaps; using osu.Game.Beatmaps.Formats; -using osu.Game.Beatmaps.Objects.Osu; using osu.Game.Beatmaps.Samples; -using osu.Game.GameModes.Play; +using osu.Game.Modes; +using osu.Game.Modes.Osu; +using osu.Game.Modes.Osu.Objects; +using osu.Game.Screens.Play; using osu.Game.Tests.Resources; namespace osu.Game.Tests.Beatmaps.Formats @@ -19,6 +21,7 @@ namespace osu.Game.Tests.Beatmaps.Formats public void SetUp() { OsuLegacyDecoder.Register(); + Ruleset.Register(new OsuRuleset()); } [Test] public void TestDecodeMetadata() diff --git a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs index 8f604696b5..7acbdbf3d9 100644 --- a/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs +++ b/osu.Game.Tests/Beatmaps/IO/ImportBeatmapTest.cs @@ -8,7 +8,12 @@ using osu.Framework.Desktop.Platform; using osu.Framework.Platform; using osu.Game.Database; using osu.Game.IPC; -using osu.Game.GameModes.Play; +using osu.Game.Modes; +using osu.Game.Modes.Catch; +using osu.Game.Modes.Mania; +using osu.Game.Modes.Osu; +using osu.Game.Modes.Taiko; +using osu.Game.Screens.Play; namespace osu.Game.Tests.Beatmaps.IO { @@ -20,6 +25,10 @@ namespace osu.Game.Tests.Beatmaps.IO [OneTimeSetUp] public void SetUp() { + Ruleset.Register(new OsuRuleset()); + Ruleset.Register(new TaikoRuleset()); + Ruleset.Register(new ManiaRuleset()); + Ruleset.Register(new CatchRuleset()); } [Test] diff --git a/osu.Game.Tests/Beatmaps/IO/OszArchiveReaderTest.cs b/osu.Game.Tests/Beatmaps/IO/OszArchiveReaderTest.cs index ea26cce467..1343ae7241 100644 --- a/osu.Game.Tests/Beatmaps/IO/OszArchiveReaderTest.cs +++ b/osu.Game.Tests/Beatmaps/IO/OszArchiveReaderTest.cs @@ -2,7 +2,8 @@ using System.IO; using NUnit.Framework; using osu.Game.Beatmaps.IO; -using osu.Game.GameModes.Play; +using osu.Game.Modes; +using osu.Game.Modes.Osu; using osu.Game.Tests.Resources; namespace osu.Game.Tests.Beatmaps.IO @@ -14,8 +15,9 @@ namespace osu.Game.Tests.Beatmaps.IO public void SetUp() { OszArchiveReader.Register(); + Ruleset.Register(new OsuRuleset()); } - + [Test] public void TestReadBeatmaps() { diff --git a/osu.Game.Tests/osu.Game.Tests.csproj b/osu.Game.Tests/osu.Game.Tests.csproj index d4a1976f17..d59e90c2f4 100644 --- a/osu.Game.Tests/osu.Game.Tests.csproj +++ b/osu.Game.Tests/osu.Game.Tests.csproj @@ -66,6 +66,22 @@ {c76bf5b3-985e-4d39-95fe-97c9c879b83a} osu.Framework + + {c92a607b-1fdd-4954-9f92-03ff547d9080} + osu.Game.Modes.Osu + + + {58f6c80c-1253-4a0e-a465-b8c85ebeadf3} + osu.Game.Modes.Catch + + + {48f4582b-7687-4621-9cbe-5c24197cb536} + osu.Game.Modes.Mania + + + {f167e17a-7de6-4af5-b920-a5112296c695} + osu.Game.Modes.Taiko + {0D3FBF8A-7464-4CF7-8C90-3E7886DF2D4D} osu.Game diff --git a/osu.Game/Beatmaps/Beatmap.cs b/osu.Game/Beatmaps/Beatmap.cs index 4769e2fb64..4d6c6a8056 100644 --- a/osu.Game/Beatmaps/Beatmap.cs +++ b/osu.Game/Beatmaps/Beatmap.cs @@ -3,9 +3,9 @@ using System.Collections.Generic; using OpenTK.Graphics; -using osu.Game.Beatmaps.Objects; using osu.Game.Beatmaps.Timing; using osu.Game.Database; +using osu.Game.Modes.Objects; namespace osu.Game.Beatmaps { diff --git a/osu.Game/Beatmaps/Formats/BeatmapDecoder.cs b/osu.Game/Beatmaps/Formats/BeatmapDecoder.cs index ca11b97587..b5dd0c995e 100644 --- a/osu.Game/Beatmaps/Formats/BeatmapDecoder.cs +++ b/osu.Game/Beatmaps/Formats/BeatmapDecoder.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.IO; -using osu.Game.Beatmaps.Objects; +using osu.Game.Modes.Objects; using OpenTK.Graphics; namespace osu.Game.Beatmaps.Formats @@ -48,6 +48,8 @@ namespace osu.Game.Beatmaps.Formats new Color4(121,9,13, 255), }; + if (colours.Count == 0) return; + int i = -1; foreach (HitObject h in b.HitObjects) diff --git a/osu.Game/Beatmaps/Formats/OsuLegacyDecoder.cs b/osu.Game/Beatmaps/Formats/OsuLegacyDecoder.cs index e988498093..5468e616f0 100644 --- a/osu.Game/Beatmaps/Formats/OsuLegacyDecoder.cs +++ b/osu.Game/Beatmaps/Formats/OsuLegacyDecoder.cs @@ -5,10 +5,11 @@ using System.IO; using OpenTK.Graphics; using osu.Game.Database; using osu.Game.Beatmaps.Events; -using osu.Game.Beatmaps.Objects; using osu.Game.Beatmaps.Samples; using osu.Game.Beatmaps.Timing; -using osu.Game.GameModes.Play; +using osu.Game.Modes; +using osu.Game.Modes.Objects; +using osu.Game.Screens.Play; namespace osu.Game.Beatmaps.Formats { @@ -220,7 +221,9 @@ namespace osu.Game.Beatmaps.Formats BaseDifficulty = new BaseDifficulty(), }, }; - + + HitObjectParser parser = null; + var section = Section.None; string line; while (true) @@ -232,14 +235,14 @@ namespace osu.Game.Beatmaps.Formats continue; if (line.StartsWith(@"osu file format v")) continue; - + if (line.StartsWith(@"[") && line.EndsWith(@"]")) { if (!Enum.TryParse(line.Substring(1, line.Length - 2), out section)) throw new InvalidDataException($@"Unknown osu section {line}"); continue; } - + string val = line, key = null; if (section != Section.Events && section != Section.TimingPoints && section != Section.HitObjects) { @@ -250,6 +253,7 @@ namespace osu.Game.Beatmaps.Formats { case Section.General: handleGeneral(beatmap, key, val); + parser = Ruleset.GetRuleset(beatmap.BeatmapInfo.Mode).CreateHitObjectParser(); break; case Section.Editor: handleEditor(beatmap, key, val); @@ -270,13 +274,13 @@ namespace osu.Game.Beatmaps.Formats handleColours(beatmap, key, val); break; case Section.HitObjects: - var h = HitObject.Parse(beatmap.BeatmapInfo.Mode, val); - if (h != null) - beatmap.HitObjects.Add(h); + var obj = parser?.Parse(val); + if (obj != null) + beatmap.HitObjects.Add(obj); break; } } - + return beatmap; } } diff --git a/osu.Game/Beatmaps/Objects/Osu/OsuBaseHit.cs b/osu.Game/Beatmaps/Objects/Osu/OsuBaseHit.cs deleted file mode 100644 index e4bb272404..0000000000 --- a/osu.Game/Beatmaps/Objects/Osu/OsuBaseHit.cs +++ /dev/null @@ -1,58 +0,0 @@ -//Copyright (c) 2007-2016 ppy Pty Ltd . -//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE - -using System; -using OpenTK; -using osu.Game.Beatmaps.Samples; - -namespace osu.Game.Beatmaps.Objects.Osu -{ - public abstract class OsuBaseHit : HitObject - { - public Vector2 Position { get; set; } - - [Flags] - private enum HitObjectType - { - Circle = 1, - Slider = 2, - NewCombo = 4, - CircleNewCombo = 5, - SliderNewCombo = 6, - Spinner = 8, - ColourHax = 122, - Hold = 128, - ManiaLong = 128, - } - - public static OsuBaseHit Parse(string val) - { - string[] split = val.Split(','); - var type = (HitObjectType)int.Parse(split[3]); - bool combo = type.HasFlag(HitObjectType.NewCombo); - type &= (HitObjectType)0xF; - type &= ~HitObjectType.NewCombo; - OsuBaseHit result; - switch (type) - { - case HitObjectType.Circle: - result = new Circle(); - break; - case HitObjectType.Slider: - result = new Slider(); - break; - case HitObjectType.Spinner: - result = new Spinner(); - break; - default: - throw new InvalidOperationException($@"Unknown hit object type {type}"); - } - result.Position = new Vector2(int.Parse(split[0]), int.Parse(split[1])); - result.StartTime = double.Parse(split[2]); - result.Sample = new HitSampleInfo { Type = (SampleType)int.Parse(split[4]) }; - result.NewCombo = combo; - // TODO: "addition" field - return result; - } - } -} diff --git a/osu.Game/Configuration/OsuConfigManager.cs b/osu.Game/Configuration/OsuConfigManager.cs index 109d3eb527..86e26048ab 100644 --- a/osu.Game/Configuration/OsuConfigManager.cs +++ b/osu.Game/Configuration/OsuConfigManager.cs @@ -3,8 +3,9 @@ using osu.Framework.Configuration; using osu.Framework.Platform; -using osu.Game.GameModes.Play; +using osu.Game.Modes; using osu.Game.Online.API; +using osu.Game.Screens.Play; namespace osu.Game.Configuration { diff --git a/osu.Game/Database/BeatmapInfo.cs b/osu.Game/Database/BeatmapInfo.cs index 14bfcb337e..736f8b9927 100644 --- a/osu.Game/Database/BeatmapInfo.cs +++ b/osu.Game/Database/BeatmapInfo.cs @@ -1,7 +1,8 @@ using System; using System.Linq; using osu.Game.Beatmaps.Samples; -using osu.Game.GameModes.Play; +using osu.Game.Modes; +using osu.Game.Screens.Play; using SQLite.Net.Attributes; using SQLiteNetExtensions.Attributes; diff --git a/osu.Game/Database/BeatmapMetadata.cs b/osu.Game/Database/BeatmapMetadata.cs index 0b4d692abc..45b7b8de0f 100644 --- a/osu.Game/Database/BeatmapMetadata.cs +++ b/osu.Game/Database/BeatmapMetadata.cs @@ -1,7 +1,6 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Game.GameModes.Play; using SQLite.Net.Attributes; namespace osu.Game.Database diff --git a/osu.Game/GameModes/Menu/MenuVisualisation.cs b/osu.Game/GameModes/Menu/MenuVisualisation.cs deleted file mode 100644 index 84f150c413..0000000000 --- a/osu.Game/GameModes/Menu/MenuVisualisation.cs +++ /dev/null @@ -1,13 +0,0 @@ -using osu.Framework.Graphics; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace osu.Game.GameModes.Menu -{ - internal class MenuVisualisation : Drawable - { - } -} diff --git a/osu.Game/GameModes/Play/Catch/CatchRuleset.cs b/osu.Game/GameModes/Play/Catch/CatchRuleset.cs deleted file mode 100644 index 5aa77f1f2e..0000000000 --- a/osu.Game/GameModes/Play/Catch/CatchRuleset.cs +++ /dev/null @@ -1,20 +0,0 @@ -//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; -using osu.Game.Beatmaps.Objects; -using osu.Game.GameModes.Play.Osu; - -namespace osu.Game.GameModes.Play.Catch -{ - class CatchRuleset : Ruleset - { - public override ScoreOverlay CreateScoreOverlay() => new ScoreOverlayOsu(); - - public override HitRenderer CreateHitRendererWith(List objects) => new CatchHitRenderer { Objects = objects }; - } -} diff --git a/osu.Game/GameModes/Play/Mania/ManiaRuleset.cs b/osu.Game/GameModes/Play/Mania/ManiaRuleset.cs deleted file mode 100644 index 3b37082c39..0000000000 --- a/osu.Game/GameModes/Play/Mania/ManiaRuleset.cs +++ /dev/null @@ -1,20 +0,0 @@ -//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; -using osu.Game.Beatmaps.Objects; -using osu.Game.GameModes.Play.Osu; - -namespace osu.Game.GameModes.Play.Mania -{ - class ManiaRuleset : Ruleset - { - public override ScoreOverlay CreateScoreOverlay() => new ScoreOverlayOsu(); - - public override HitRenderer CreateHitRendererWith(List objects) => new ManiaHitRenderer { Objects = objects }; - } -} diff --git a/osu.Game/GameModes/Play/Osu/OsuRuleset.cs b/osu.Game/GameModes/Play/Osu/OsuRuleset.cs deleted file mode 100644 index 33eeb72e3f..0000000000 --- a/osu.Game/GameModes/Play/Osu/OsuRuleset.cs +++ /dev/null @@ -1,18 +0,0 @@ -//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; -using osu.Game.Beatmaps.Objects; - -namespace osu.Game.GameModes.Play.Osu -{ - class OsuRuleset : Ruleset - { - public override ScoreOverlay CreateScoreOverlay() => new ScoreOverlayOsu(); - - public override HitRenderer CreateHitRendererWith(List objects) => new OsuHitRenderer { Objects = objects }; - }} diff --git a/osu.Game/GameModes/Play/Ruleset.cs b/osu.Game/GameModes/Play/Ruleset.cs deleted file mode 100644 index a5cbc63269..0000000000 --- a/osu.Game/GameModes/Play/Ruleset.cs +++ /dev/null @@ -1,38 +0,0 @@ -//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; -using osu.Game.Beatmaps.Objects; -using osu.Game.GameModes.Play.Catch; -using osu.Game.GameModes.Play.Mania; -using osu.Game.GameModes.Play.Osu; -using osu.Game.GameModes.Play.Taiko; - -namespace osu.Game.GameModes.Play -{ - public abstract class Ruleset - { - public abstract ScoreOverlay CreateScoreOverlay(); - - public abstract HitRenderer CreateHitRendererWith(List objects); - - public static Ruleset GetRuleset(PlayMode mode) - { - switch (mode) - { - default: - return new OsuRuleset(); - case PlayMode.Catch: - return new CatchRuleset(); - case PlayMode.Mania: - return new ManiaRuleset(); - case PlayMode.Taiko: - return new TaikoRuleset(); - } - } - } -} diff --git a/osu.Game/GameModes/Play/Taiko/TaikoRuleset.cs b/osu.Game/GameModes/Play/Taiko/TaikoRuleset.cs deleted file mode 100644 index dacf17df21..0000000000 --- a/osu.Game/GameModes/Play/Taiko/TaikoRuleset.cs +++ /dev/null @@ -1,20 +0,0 @@ -//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; -using osu.Game.Beatmaps.Objects; -using osu.Game.GameModes.Play.Osu; - -namespace osu.Game.GameModes.Play.Taiko -{ - class TaikoRuleset : Ruleset - { - public override ScoreOverlay CreateScoreOverlay() => new ScoreOverlayOsu(); - - public override HitRenderer CreateHitRendererWith(List objects) => new TaikoHitRenderer { Objects = objects }; - } -} diff --git a/osu.Game/Graphics/UserInterface/Volume/VolumeControl.cs b/osu.Game/Graphics/UserInterface/Volume/VolumeControl.cs index 6163ba3aad..26a8e7bf4f 100644 --- a/osu.Game/Graphics/UserInterface/Volume/VolumeControl.cs +++ b/osu.Game/Graphics/UserInterface/Volume/VolumeControl.cs @@ -7,6 +7,7 @@ using osu.Framework.Input; using osu.Framework.Threading; using OpenTK; using osu.Framework.Allocation; +using osu.Framework.Graphics.Primitives; namespace osu.Game.Graphics.UserInterface.Volume { @@ -21,8 +22,6 @@ namespace osu.Game.Graphics.UserInterface.Volume private FlowContainer content; protected override Container Content => content; - public override bool Contains(Vector2 screenSpacePos) => true; - private void volumeChanged(object sender, EventArgs e) { Show(); @@ -40,7 +39,7 @@ namespace osu.Game.Graphics.UserInterface.Volume AutoSizeAxes = Axes.Both, Anchor = Anchor.BottomRight, Origin = Anchor.BottomRight, - Position = new Vector2(10, 30), + Margin = new MarginPadding { Left = 10, Right = 10, Top = 30, Bottom = 30 }, Spacing = new Vector2(15, 0), }); } @@ -69,13 +68,15 @@ namespace osu.Game.Graphics.UserInterface.Volume base.Dispose(isDisposing); } - protected override bool OnWheel(InputState state) + public void Adjust(InputState state) { if (!IsVisible) - return false; + { + Show(); + return; + } volumeMeterMaster.TriggerWheel(state); - return true; } ScheduledDelegate popOutDelegate; diff --git a/osu.Game/Graphics/UserInterface/Volume/VolumeControlReceptor.cs b/osu.Game/Graphics/UserInterface/Volume/VolumeControlReceptor.cs index 1c98aaa61d..d809450afb 100644 --- a/osu.Game/Graphics/UserInterface/Volume/VolumeControlReceptor.cs +++ b/osu.Game/Graphics/UserInterface/Volume/VolumeControlReceptor.cs @@ -12,11 +12,11 @@ namespace osu.Game.Graphics.UserInterface.Volume { class VolumeControlReceptor : Container { - public Action ActivateRequested; + public Action ActionRequested; protected override bool OnWheel(InputState state) { - ActivateRequested?.Invoke(); + ActionRequested?.Invoke(state); return true; } @@ -26,7 +26,7 @@ namespace osu.Game.Graphics.UserInterface.Volume { case Key.Up: case Key.Down: - ActivateRequested?.Invoke(); + ActionRequested?.Invoke(state); return true; } diff --git a/osu.Game/Beatmaps/Objects/DrawableHitObject.cs b/osu.Game/Modes/Objects/Drawables/DrawableHitObject.cs similarity index 88% rename from osu.Game/Beatmaps/Objects/DrawableHitObject.cs rename to osu.Game/Modes/Objects/Drawables/DrawableHitObject.cs index 380e527de4..d5674d8314 100644 --- a/osu.Game/Beatmaps/Objects/DrawableHitObject.cs +++ b/osu.Game/Modes/Objects/Drawables/DrawableHitObject.cs @@ -2,15 +2,10 @@ //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; using osu.Framework; using osu.Framework.Graphics.Containers; -using osu.Game.Beatmaps.Objects.Osu.Drawable; -namespace osu.Game.Beatmaps.Objects +namespace osu.Game.Modes.Objects.Drawables { public abstract class DrawableHitObject : Container, IStateful { diff --git a/osu.Game/Beatmaps/Objects/HitObject.cs b/osu.Game/Modes/Objects/HitObject.cs similarity index 52% rename from osu.Game/Beatmaps/Objects/HitObject.cs rename to osu.Game/Modes/Objects/HitObject.cs index ef6659224f..abb88726b6 100644 --- a/osu.Game/Beatmaps/Objects/HitObject.cs +++ b/osu.Game/Modes/Objects/HitObject.cs @@ -1,12 +1,10 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Game.Beatmaps.Objects.Osu; using osu.Game.Beatmaps.Samples; -using osu.Game.GameModes.Play; using OpenTK.Graphics; -namespace osu.Game.Beatmaps.Objects +namespace osu.Game.Modes.Objects { /// /// A hitobject describes a point in a beatmap @@ -23,17 +21,5 @@ namespace osu.Game.Beatmaps.Objects public double Duration => EndTime - StartTime; public HitSampleInfo Sample; - - public static HitObject Parse(PlayMode mode, string val) - { - //TODO: move to modular HitObjectParser system rather than static parsing. (https://github.com/ppy/osu/pull/60/files#r83135780) - switch (mode) - { - case PlayMode.Osu: - return OsuBaseHit.Parse(val); - default: - return null; - } - } } } diff --git a/osu.Game/Beatmaps/Objects/HitObjectConverter.cs b/osu.Game/Modes/Objects/HitObjectConverter.cs similarity index 91% rename from osu.Game/Beatmaps/Objects/HitObjectConverter.cs rename to osu.Game/Modes/Objects/HitObjectConverter.cs index 723199d8f1..66a73956fa 100644 --- a/osu.Game/Beatmaps/Objects/HitObjectConverter.cs +++ b/osu.Game/Modes/Objects/HitObjectConverter.cs @@ -4,13 +4,14 @@ using System; using System.Collections.Generic; -namespace osu.Game.Beatmaps.Objects +namespace osu.Game.Modes.Objects { public abstract class HitObjectConverter where T : HitObject { public abstract List Convert(List input); } + public class HitObjectConvertException : Exception { public HitObject Input { get; } diff --git a/osu.Game/GameModes/Charts/ChartInfo.cs b/osu.Game/Modes/Objects/HitObjectParser.cs similarity index 66% rename from osu.Game/GameModes/Charts/ChartInfo.cs rename to osu.Game/Modes/Objects/HitObjectParser.cs index 67a11e632a..261e92ff96 100644 --- a/osu.Game/GameModes/Charts/ChartInfo.cs +++ b/osu.Game/Modes/Objects/HitObjectParser.cs @@ -7,9 +7,10 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace osu.Game.GameModes.Charts +namespace osu.Game.Modes.Objects { - class ChartInfo : GameModeWhiteBox + public abstract class HitObjectParser { + public abstract HitObject Parse(string text); } } diff --git a/osu.Game/GameModes/Play/PlayMode.cs b/osu.Game/Modes/PlayMode.cs similarity index 88% rename from osu.Game/GameModes/Play/PlayMode.cs rename to osu.Game/Modes/PlayMode.cs index 8234baa523..d1b0f23ee4 100644 --- a/osu.Game/GameModes/Play/PlayMode.cs +++ b/osu.Game/Modes/PlayMode.cs @@ -4,7 +4,7 @@ using System.ComponentModel; -namespace osu.Game.GameModes.Play +namespace osu.Game.Modes { public enum PlayMode { diff --git a/osu.Game/Modes/Ruleset.cs b/osu.Game/Modes/Ruleset.cs new file mode 100644 index 0000000000..d35aab6568 --- /dev/null +++ b/osu.Game/Modes/Ruleset.cs @@ -0,0 +1,39 @@ +//Copyright (c) 2007-2016 ppy Pty Ltd . +//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using System.Collections.Generic; +using osu.Game.Modes.Objects; +using osu.Game.Modes.UI; +using System.Reflection; +using osu.Framework.Extensions; +using System; +using System.Collections.Concurrent; +using System.Linq; + +namespace osu.Game.Modes +{ + public abstract class Ruleset + { + private static ConcurrentDictionary availableRulesets = new ConcurrentDictionary(); + + public abstract ScoreOverlay CreateScoreOverlay(); + + public abstract HitRenderer CreateHitRendererWith(List objects); + + public abstract HitObjectParser CreateHitObjectParser(); + + public static void Register(Ruleset ruleset) => availableRulesets.TryAdd(ruleset.PlayMode, ruleset.GetType()); + + protected abstract PlayMode PlayMode { get; } + + public static Ruleset GetRuleset(PlayMode mode) + { + Type type; + + if (!availableRulesets.TryGetValue(mode, out type)) + return null; + + return Activator.CreateInstance(type) as Ruleset; + } + } +} diff --git a/osu.Game/GameModes/Play/ComboCounter.cs b/osu.Game/Modes/UI/ComboCounter.cs similarity index 93% rename from osu.Game/GameModes/Play/ComboCounter.cs rename to osu.Game/Modes/UI/ComboCounter.cs index 96660afb6a..d371110308 100644 --- a/osu.Game/GameModes/Play/ComboCounter.cs +++ b/osu.Game/Modes/UI/ComboCounter.cs @@ -1,22 +1,13 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Framework; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Transformations; using osu.Framework.MathUtils; -using osu.Framework.Timing; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using osu.Framework.Allocation; -namespace osu.Game.GameModes.Play +namespace osu.Game.Modes.UI { public abstract class ComboCounter : Container { diff --git a/osu.Game/GameModes/Play/ComboResultCounter.cs b/osu.Game/Modes/UI/ComboResultCounter.cs similarity index 88% rename from osu.Game/GameModes/Play/ComboResultCounter.cs rename to osu.Game/Modes/UI/ComboResultCounter.cs index 9607c6df14..840a2e0b73 100644 --- a/osu.Game/GameModes/Play/ComboResultCounter.cs +++ b/osu.Game/Modes/UI/ComboResultCounter.cs @@ -1,18 +1,13 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using System; using osu.Framework.Graphics; using osu.Framework.Graphics.Transformations; using osu.Framework.MathUtils; -using osu.Framework.Timing; using osu.Game.Graphics.UserInterface; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -namespace osu.Game.GameModes.Play +namespace osu.Game.Modes.UI { /// /// Used to display combo with a roll-up animation in results screen. diff --git a/osu.Game/GameModes/Play/HitRenderer.cs b/osu.Game/Modes/UI/HitRenderer.cs similarity index 92% rename from osu.Game/GameModes/Play/HitRenderer.cs rename to osu.Game/Modes/UI/HitRenderer.cs index 0766e0f6b4..5f4b0b9b02 100644 --- a/osu.Game/GameModes/Play/HitRenderer.cs +++ b/osu.Game/Modes/UI/HitRenderer.cs @@ -1,16 +1,16 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using System.Collections.Generic; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Game.Beatmaps.Objects; -using osu.Framework; using System; +using System.Collections.Generic; using System.Linq; using osu.Framework.Allocation; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Objects.Drawables; -namespace osu.Game.GameModes.Play +namespace osu.Game.Modes.UI { public abstract class HitRenderer : Container { diff --git a/osu.Game/GameModes/Play/Playfield.cs b/osu.Game/Modes/UI/Playfield.cs similarity index 78% rename from osu.Game/GameModes/Play/Playfield.cs rename to osu.Game/Modes/UI/Playfield.cs index d87bec8011..24aecb8a22 100644 --- a/osu.Game/GameModes/Play/Playfield.cs +++ b/osu.Game/Modes/UI/Playfield.cs @@ -1,10 +1,9 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Framework; using osu.Framework.Graphics.Containers; -namespace osu.Game.GameModes.Play +namespace osu.Game.Modes.UI { public class Playfield : Container { diff --git a/osu.Game/GameModes/Play/ScoreOverlay.cs b/osu.Game/Modes/UI/ScoreOverlay.cs similarity index 87% rename from osu.Game/GameModes/Play/ScoreOverlay.cs rename to osu.Game/Modes/UI/ScoreOverlay.cs index 3d60df1858..2270533d47 100644 --- a/osu.Game/GameModes/Play/ScoreOverlay.cs +++ b/osu.Game/Modes/UI/ScoreOverlay.cs @@ -2,16 +2,12 @@ //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; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Game.Beatmaps.Objects; using osu.Game.Graphics.UserInterface; +using osu.Game.Modes.Objects; -namespace osu.Game.GameModes.Play +namespace osu.Game.Modes.UI { public abstract class ScoreOverlay : Container { diff --git a/osu.Game/Online/Chat/Display/ChannelDisplay.cs b/osu.Game/Online/Chat/Display/ChannelDisplay.cs index b3a08a1196..93e235f3f3 100644 --- a/osu.Game/Online/Chat/Display/ChannelDisplay.cs +++ b/osu.Game/Online/Chat/Display/ChannelDisplay.cs @@ -8,7 +8,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Transformations; -using osu.Game.Online.Chat.Display.osu.Online.Social; using OpenTK; using osu.Framework; using osu.Framework.Allocation; diff --git a/osu.Game/Online/Chat/Display/ChatLine.cs b/osu.Game/Online/Chat/Display/ChatLine.cs index b4785593c6..b582bc5a6d 100644 --- a/osu.Game/Online/Chat/Display/ChatLine.cs +++ b/osu.Game/Online/Chat/Display/ChatLine.cs @@ -1,75 +1,68 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using System; -using osu.Framework.Configuration; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Primitives; using osu.Framework.Graphics.Sprites; using OpenTK; using OpenTK.Graphics; -using osu.Framework; -using osu.Framework.Graphics.Primitives; -using osu.Framework.Allocation; namespace osu.Game.Online.Chat.Display { - namespace osu.Online.Social + public class ChatLine : Container { - public class ChatLine : Container + public readonly Message Message; + + const float padding = 200; + const float text_size = 20; + + public ChatLine(Message message) { - public readonly Message Message; + this.Message = message; - const float padding = 200; - const float text_size = 20; + RelativeSizeAxes = Axes.X; + AutoSizeAxes = Axes.Y; - public ChatLine(Message message) + Children = new Drawable[] { - this.Message = message; - - RelativeSizeAxes = Axes.X; - AutoSizeAxes = Axes.Y; - - Children = new Drawable[] + new Container { - new Container + Size = new Vector2(padding, text_size), + Children = new Drawable[] { - Size = new Vector2(padding, text_size), - Children = new Drawable[] + new SpriteText { - new SpriteText - { - Text = Message.Timestamp.LocalDateTime.ToLongTimeString(), - TextSize = text_size, - Colour = new Color4(128, 128, 128, 255) - }, - new SpriteText - { - Text = Message.User.Name, - TextSize = text_size, - Origin = Anchor.TopRight, - Anchor = Anchor.TopRight, - } - } - }, - new Container - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Padding = new MarginPadding { Left = padding + 10 }, - Children = new Drawable[] + Text = Message.Timestamp.LocalDateTime.ToLongTimeString(), + TextSize = text_size, + Colour = new Color4(128, 128, 128, 255) + }, + new SpriteText { - new SpriteText - { - Text = Message.Content, - TextSize = text_size, - AutoSizeAxes = Axes.Y, - RelativeSizeAxes = Axes.X, - } + Text = Message.User.Name, + TextSize = text_size, + Origin = Anchor.TopRight, + Anchor = Anchor.TopRight, } } - }; - } + }, + new Container + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Padding = new MarginPadding { Left = padding + 10 }, + Children = new Drawable[] + { + new SpriteText + { + Text = Message.Content, + TextSize = text_size, + AutoSizeAxes = Axes.Y, + RelativeSizeAxes = Axes.X, + } + } + } + }; } } } diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index c80562fc11..4f40899500 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -6,22 +6,23 @@ using System.Threading; using osu.Framework.Configuration; using osu.Framework.GameModes; using osu.Game.Configuration; -using osu.Game.GameModes.Menu; using OpenTK; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Platform; -using osu.Game.GameModes.Play; using osu.Game.Overlays; using osu.Framework; using osu.Framework.Input; using osu.Game.Input; using OpenTK.Input; using osu.Framework.Logging; -using osu.Game.GameModes; using osu.Game.Graphics.UserInterface.Volume; using osu.Game.Database; using osu.Framework.Allocation; +using osu.Game.Modes; +using osu.Game.Screens; +using osu.Game.Screens.Menu; +using osu.Game.Screens.Play; namespace osu.Game { @@ -90,7 +91,7 @@ namespace osu.Game new VolumeControlReceptor { RelativeSizeAxes = Axes.Both, - ActivateRequested = delegate { volume.Show(); } + ActionRequested = delegate(InputState state) { volume.Adjust(state); } }, mainContent = new Container { @@ -120,8 +121,8 @@ namespace osu.Game //overlay elements (chat = new ChatConsole(API) { Depth = 0 }).Preload(this, overlayContent.Add); - (musicController = new MusicController()).Preload(this, overlayContent.Add); (Options = new OptionsOverlay { Depth = 1 }).Preload(this, overlayContent.Add); + (musicController = new MusicController() { Depth = 3 }).Preload(this, overlayContent.Add); (Toolbar = new Toolbar { Depth = 2, @@ -174,9 +175,10 @@ namespace osu.Game // - Frame limiter changes //central game mode change logic. - if ((newMode as OsuGameMode)?.ShowToolbar != true) + if ((newMode as OsuGameMode)?.ShowOverlays != true) { Toolbar.State = Visibility.Hidden; + musicController.State = Visibility.Hidden; chat.State = Visibility.Hidden; } else diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs index 2b221b5bab..b5a56a7735 100644 --- a/osu.Game/OsuGameBase.cs +++ b/osu.Game/OsuGameBase.cs @@ -49,6 +49,9 @@ namespace osu.Game Fonts.AddStore(new GlyphStore(Resources, @"Fonts/FontAwesome")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/osuFont")); + Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Medium")); + Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-MediumItalic")); + Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Regular")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-RegularItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-SemiBold")); @@ -57,8 +60,6 @@ namespace osu.Game Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-BoldItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Light")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-LightItalic")); - Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Medium")); - Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-MediumItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Black")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-BlackItalic")); diff --git a/osu.Game/Overlays/ChatConsole.cs b/osu.Game/Overlays/ChatConsole.cs index 769c809e7c..ee06e29877 100644 --- a/osu.Game/Overlays/ChatConsole.cs +++ b/osu.Game/Overlays/ChatConsole.cs @@ -145,7 +145,7 @@ namespace osu.Game.Overlays protected override void PopOut() { - MoveToY(-DrawSize.Y, transition_length, EasingTypes.InQuint); + MoveToY(DrawSize.Y, transition_length, EasingTypes.InQuint); FadeOut(transition_length, EasingTypes.InQuint); } } diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index 5f7ffe6243..f84d2052c3 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -22,12 +22,13 @@ using osu.Game.Beatmaps; using osu.Game.Configuration; using osu.Game.Database; using osu.Game.Graphics; +using osu.Framework.Graphics.Primitives; namespace osu.Game.Overlays { public class MusicController : OverlayContainer { - private static readonly Vector2 start_position = new Vector2(10, 60); + private static readonly Vector2 start_position = new Vector2(0, 50); private MusicControllerBackground backgroundSprite; private DragBar progress; @@ -63,6 +64,8 @@ namespace osu.Game.Overlays Anchor = Anchor.TopRight;//placeholder Origin = Anchor.TopRight; Position = start_position; + Margin = new MarginPadding(10); + Children = new Drawable[] { title = new SpriteText @@ -90,7 +93,7 @@ namespace osu.Game.Overlays AutoSizeAxes = Axes.Both, Origin = Anchor.Centre, Anchor = Anchor.BottomCentre, - Position = new Vector2(0, 30), + Position = new Vector2(0, -30), Action = () => { if (current?.Track == null) return; @@ -115,7 +118,7 @@ namespace osu.Game.Overlays AutoSizeAxes = Axes.Both, Origin = Anchor.Centre, Anchor = Anchor.BottomCentre, - Position = new Vector2(-30, 30), + Position = new Vector2(-30, -30), Action = prev, Children = new Drawable[] { @@ -133,7 +136,7 @@ namespace osu.Game.Overlays AutoSizeAxes = Axes.Both, Origin = Anchor.Centre, Anchor = Anchor.BottomCentre, - Position = new Vector2(30, 30), + Position = new Vector2(30, -30), Action = next, Children = new Drawable[] { @@ -151,7 +154,7 @@ namespace osu.Game.Overlays AutoSizeAxes = Axes.Both, Origin = Anchor.Centre, Anchor = Anchor.BottomRight, - Position = new Vector2(20, 30), + Position = new Vector2(20, -30), Children = new Drawable[] { listButton = new TextAwesome @@ -168,7 +171,7 @@ namespace osu.Game.Overlays Origin = Anchor.BottomCentre, Anchor = Anchor.BottomCentre, Height = 10, - Colour = Color4.Orange, + Colour = new Color4(255, 204, 34, 255), SeekRequested = seek } }; @@ -179,8 +182,8 @@ namespace osu.Game.Overlays protected override bool OnDrag(InputState state) { Vector2 change = (state.Mouse.Position - state.Mouse.PositionMouseDown.Value); - change.X = -change.X; + // Diminish the drag distance as we go further to simulate "rubber band" feeling. change *= (float)Math.Pow(change.Length, 0.7f) / change.Length; MoveTo(start_position + change); diff --git a/osu.Game/Overlays/Options/CheckBoxOption.cs b/osu.Game/Overlays/Options/CheckBoxOption.cs index 4d505ca625..18f0e59e03 100644 --- a/osu.Game/Overlays/Options/CheckBoxOption.cs +++ b/osu.Game/Overlays/Options/CheckBoxOption.cs @@ -1,10 +1,19 @@ using System; +using osu.Framework; using osu.Framework.Configuration; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Primitives; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.Transformations; using osu.Framework.Graphics.UserInterface; +using OpenTK; +using OpenTK.Graphics; +using osu.Framework.Input; namespace osu.Game.Overlays.Options { - public class CheckBoxOption : BasicCheckBox + public class CheckBoxOption : CheckBox { private Bindable bindable; @@ -25,6 +34,50 @@ namespace osu.Game.Overlays.Options } } + public Color4 CheckedColor { get; set; } = Color4.Cyan; + public Color4 UncheckedColor { get; set; } = Color4.White; + public int FadeDuration { get; set; } + + public string LabelText + { + get { return labelSpriteText?.Text; } + set + { + if (labelSpriteText != null) + labelSpriteText.Text = value; + } + } + + public MarginPadding LabelPadding + { + get { return labelSpriteText?.Padding ?? new MarginPadding(); } + set + { + if (labelSpriteText != null) + labelSpriteText.Padding = value; + } + } + + private Light light; + private SpriteText labelSpriteText; + + public CheckBoxOption() + { + AutoSizeAxes = Axes.Y; + RelativeSizeAxes = Axes.X; + + Children = new Drawable[] + { + labelSpriteText = new SpriteText(), + light = new Light() + { + Anchor = Anchor.CentreRight, + Origin = Anchor.CentreRight, + Margin = new MarginPadding { Right = 5 }, + } + }; + } + private void bindableValueChanged(object sender, EventArgs e) { State = bindable.Value ? CheckBoxState.Checked : CheckBoxState.Unchecked; @@ -37,18 +90,116 @@ namespace osu.Game.Overlays.Options base.Dispose(isDisposing); } + protected override bool OnHover(InputState state) + { + light.Glowing = true; + return base.OnHover(state); + } + + protected override void OnHoverLost(InputState state) + { + light.Glowing = false; + base.OnHoverLost(state); + } + protected override void OnChecked() { if (bindable != null) bindable.Value = true; - base.OnChecked(); + + light.State = CheckBoxState.Checked; } protected override void OnUnchecked() { if (bindable != null) bindable.Value = false; - base.OnUnchecked(); + + light.State = CheckBoxState.Unchecked; } + + private class Light : Container, IStateful + { + private Box fill; + + const float border_width = 3; + + Color4 hoverColour = new Color4(255, 221, 238, 255); + Color4 defaultColour = new Color4(255, 102, 170, 255); + Color4 glowColour = new Color4(187, 17, 119, 0); + + public Light() + { + Size = new Vector2(40, 12); + + Masking = true; + + Colour = defaultColour; + + EdgeEffect = new EdgeEffect + { + Colour = glowColour, + Type = EdgeEffectType.Glow, + Radius = 10, + Roundness = 8, + }; + + CornerRadius = Height / 2; + Masking = true; + BorderColour = Color4.White; + BorderThickness = border_width; + + Children = new[] + { + fill = new Box + { + RelativeSizeAxes = Axes.Both, + Alpha = 0.01f, //todo: remove once we figure why containers aren't drawing at all times + }, + }; + } + + public bool Glowing + { + set + { + if (value) + { + FadeColour(hoverColour, 500, EasingTypes.OutQuint); + FadeGlowTo(1, 500, EasingTypes.OutQuint); + } + else + { + FadeGlowTo(0, 500); + FadeColour(defaultColour, 500); + } + } + } + + private CheckBoxState state; + + public CheckBoxState State + { + get + { + return state; + } + set + { + state = value; + + switch (state) + { + case CheckBoxState.Checked: + fill.FadeIn(200, EasingTypes.OutQuint); + break; + case CheckBoxState.Unchecked: + fill.FadeTo(0.01f, 200, EasingTypes.OutQuint); //todo: remove once we figure why containers aren't drawing at all times + break; + } + } + } + } + } } diff --git a/osu.Game/Overlays/Options/OptionsSection.cs b/osu.Game/Overlays/Options/OptionsSection.cs index aa1feddd4f..739504da80 100644 --- a/osu.Game/Overlays/Options/OptionsSection.cs +++ b/osu.Game/Overlays/Options/OptionsSection.cs @@ -18,7 +18,9 @@ namespace osu.Game.Overlays.Options public OptionsSection() { - const int headerSize = 30, headerMargin = 25; + Margin = new MarginPadding { Top = 20 }; + + const int headerSize = 26, headerMargin = 25; const int borderSize = 2; AutoSizeAxes = Axes.Y; RelativeSizeAxes = Axes.X; @@ -26,7 +28,7 @@ namespace osu.Game.Overlays.Options { new Box { - Colour = new Color4(30, 30, 30, 255), + Colour = new Color4(0, 0, 0, 255), RelativeSizeAxes = Axes.X, Height = borderSize, }, @@ -34,7 +36,7 @@ namespace osu.Game.Overlays.Options { Padding = new MarginPadding { - Top = 10 + borderSize, + Top = 20 + borderSize, Left = OptionsOverlay.CONTENT_MARGINS, Right = OptionsOverlay.CONTENT_MARGINS, Bottom = 10, @@ -53,7 +55,7 @@ namespace osu.Game.Overlays.Options { Margin = new MarginPadding { Top = headerSize + headerMargin }, Direction = FlowDirection.VerticalOnly, - Spacing = new Vector2(0, 25), + Spacing = new Vector2(0, 50), AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, }, diff --git a/osu.Game/Overlays/Options/OptionsSubsection.cs b/osu.Game/Overlays/Options/OptionsSubsection.cs index 09db27c54f..ad98549e9e 100644 --- a/osu.Game/Overlays/Options/OptionsSubsection.cs +++ b/osu.Game/Overlays/Options/OptionsSubsection.cs @@ -28,9 +28,9 @@ namespace osu.Game.Overlays.Options { new SpriteText { - TextSize = 25, - Text = Header, - // TODO: Bold + TextSize = 17, + Text = Header.ToUpper(), + Font = @"Exo2.0-Black", } } }, diff --git a/osu.Game/Overlays/Options/SidebarButton.cs b/osu.Game/Overlays/Options/SidebarButton.cs index 5174ecfa27..82a55e3fe5 100644 --- a/osu.Game/Overlays/Options/SidebarButton.cs +++ b/osu.Game/Overlays/Options/SidebarButton.cs @@ -85,7 +85,7 @@ namespace osu.Game.Overlays.Options Width = 5, Anchor = Anchor.CentreRight, Origin = Anchor.CentreRight, - Colour = new Color4(233, 103, 161, 255) + Colour = new Color4(247, 198, 35, 255) } }; } diff --git a/osu.Game/Overlays/OptionsOverlay.cs b/osu.Game/Overlays/OptionsOverlay.cs index 4066687bdf..e3039ad781 100644 --- a/osu.Game/Overlays/OptionsOverlay.cs +++ b/osu.Game/Overlays/OptionsOverlay.cs @@ -90,7 +90,7 @@ namespace osu.Game.Overlays }, new SpriteText { - Colour = new Color4(235, 117, 139, 255), + Colour = new Color4(255, 102, 170, 255), Text = "Change the way osu! behaves", TextSize = 18, Margin = new MarginPadding { Left = CONTENT_MARGINS, Bottom = 30 }, diff --git a/osu.Game/Overlays/Toolbar.cs b/osu.Game/Overlays/Toolbar.cs index 4f2513b130..ec14217dac 100644 --- a/osu.Game/Overlays/Toolbar.cs +++ b/osu.Game/Overlays/Toolbar.cs @@ -9,10 +9,13 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Transformations; using osu.Game.Configuration; -using osu.Game.GameModes.Play; using osu.Game.Graphics; using osu.Framework.Graphics.Sprites; using osu.Framework.Allocation; +using osu.Framework.Graphics.Colour; +using osu.Game.Modes; +using osu.Game.Screens.Play; +using osu.Framework.Input; namespace osu.Game.Overlays { @@ -27,6 +30,7 @@ namespace osu.Game.Overlays private ToolbarModeSelector modeSelector; private ToolbarButton userButton; + private Box gradientBackground; private const int transition_time = 200; @@ -42,6 +46,17 @@ namespace osu.Game.Overlays FadeOut(transition_time, EasingTypes.InQuint); } + protected override bool OnHover(InputState state) + { + gradientBackground.FadeIn(200); + return true; + } + + protected override void OnHoverLost(InputState state) + { + gradientBackground.FadeOut(200); + } + public Toolbar() { Children = new Drawable[] @@ -49,7 +64,20 @@ namespace osu.Game.Overlays new Box { RelativeSizeAxes = Axes.Both, - Colour = new Color4(0.1f, 0.1f, 0.1f, 0.4f) + Colour = new Color4(0.1f, 0.1f, 0.1f, 0.6f) + }, + gradientBackground = new Box + { + RelativeSizeAxes = Axes.X, + Anchor = Anchor.BottomLeft, + Alpha = 0, + Height = 90, + ColourInfo = new ColourInfo { + TopLeft = new Color4(0.1f, 0.1f, 0.1f, 0.5f), + TopRight = new Color4(0.1f, 0.1f, 0.1f, 0.5f), + BottomLeft = new Color4(0.1f, 0.1f, 0.1f, 0f), + BottomRight = new Color4(0.1f, 0.1f, 0.1f, 0f), + }, }, new FlowContainer { diff --git a/osu.Game/Overlays/ToolbarButton.cs b/osu.Game/Overlays/ToolbarButton.cs index 8fa5ff10b7..0a3f42fd5a 100644 --- a/osu.Game/Overlays/ToolbarButton.cs +++ b/osu.Game/Overlays/ToolbarButton.cs @@ -98,7 +98,7 @@ namespace osu.Game.Overlays Direction = FlowDirection.VerticalOnly, AutoSizeAxes = Axes.Both, Anchor = Anchor.BottomLeft, - Position = new Vector2(5, -5), + Position = new Vector2(5, 5), Alpha = 0, Children = new[] { @@ -127,7 +127,9 @@ namespace osu.Game.Overlays Size = new Vector2(WIDTH + (DrawableText.IsVisible ? DrawableText.DrawSize.X : 0), 1); } - protected override bool OnMouseDown(InputState state, MouseDownEventArgs e) + protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) => true; + + protected override bool OnClick(InputState state) { Action?.Invoke(); HoverBackground.FlashColour(Color4.White, 400); @@ -138,7 +140,7 @@ namespace osu.Game.Overlays { HoverBackground.FadeTo(0.4f, 200); tooltipContainer.FadeIn(100); - return true; + return false; } protected override void OnHoverLost(InputState state) diff --git a/osu.Game/Overlays/ToolbarModeButton.cs b/osu.Game/Overlays/ToolbarModeButton.cs index bd88eae7c9..c10b8514db 100644 --- a/osu.Game/Overlays/ToolbarModeButton.cs +++ b/osu.Game/Overlays/ToolbarModeButton.cs @@ -2,11 +2,12 @@ //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using osu.Framework.Extensions; -using osu.Game.GameModes.Play; using osu.Game.Graphics; using OpenTK.Graphics; using osu.Framework; using osu.Framework.Allocation; +using osu.Game.Modes; +using osu.Game.Screens.Play; namespace osu.Game.Overlays { diff --git a/osu.Game/Overlays/ToolbarModeSelector.cs b/osu.Game/Overlays/ToolbarModeSelector.cs index 3b17a28f81..9b6d8a7fe1 100644 --- a/osu.Game/Overlays/ToolbarModeSelector.cs +++ b/osu.Game/Overlays/ToolbarModeSelector.cs @@ -6,13 +6,14 @@ using System.Linq; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Transformations; -using osu.Game.GameModes.Play; using OpenTK; using OpenTK.Graphics; using osu.Framework; using osu.Framework.Caching; using osu.Framework.Graphics.Sprites; using osu.Framework.Allocation; +using osu.Game.Modes; +using osu.Game.Screens.Play; namespace osu.Game.Overlays { diff --git a/osu.Game/GameModes/BackgroundMode.cs b/osu.Game/Screens/BackgroundMode.cs similarity index 92% rename from osu.Game/GameModes/BackgroundMode.cs rename to osu.Game/Screens/BackgroundMode.cs index dd485df9d9..cf28abc1ac 100644 --- a/osu.Game/GameModes/BackgroundMode.cs +++ b/osu.Game/Screens/BackgroundMode.cs @@ -2,20 +2,16 @@ //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; -using osu.Framework.GameModes; -using osu.Framework.Graphics.Transformations; -using OpenTK; -using osu.Framework.Graphics; -using osu.Framework.Input; -using osu.Framework; using System.Threading; +using osu.Framework; using osu.Framework.Allocation; +using osu.Framework.GameModes; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Transformations; +using osu.Framework.Input; +using OpenTK; -namespace osu.Game.GameModes +namespace osu.Game.Screens { public abstract class BackgroundMode : GameMode, IEquatable { diff --git a/osu.Game/GameModes/Backgrounds/BackgroundModeCustom.cs b/osu.Game/Screens/Backgrounds/BackgroundModeCustom.cs similarity index 91% rename from osu.Game/GameModes/Backgrounds/BackgroundModeCustom.cs rename to osu.Game/Screens/Backgrounds/BackgroundModeCustom.cs index 0afb9c3945..9a2901ed63 100644 --- a/osu.Game/GameModes/Backgrounds/BackgroundModeCustom.cs +++ b/osu.Game/Screens/Backgrounds/BackgroundModeCustom.cs @@ -3,7 +3,7 @@ using osu.Game.Graphics.Background; -namespace osu.Game.GameModes.Backgrounds +namespace osu.Game.Screens.Backgrounds { public class BackgroundModeCustom : BackgroundMode { diff --git a/osu.Game/GameModes/Backgrounds/BackgroundModeDefault.cs b/osu.Game/Screens/Backgrounds/BackgroundModeDefault.cs similarity index 88% rename from osu.Game/GameModes/Backgrounds/BackgroundModeDefault.cs rename to osu.Game/Screens/Backgrounds/BackgroundModeDefault.cs index c7fe2139dc..aec43212f5 100644 --- a/osu.Game/GameModes/Backgrounds/BackgroundModeDefault.cs +++ b/osu.Game/Screens/Backgrounds/BackgroundModeDefault.cs @@ -5,7 +5,7 @@ using osu.Framework; using osu.Framework.Allocation; using osu.Game.Graphics.Background; -namespace osu.Game.GameModes.Backgrounds +namespace osu.Game.Screens.Backgrounds { public class BackgroundModeDefault : BackgroundMode { diff --git a/osu.Game/GameModes/Backgrounds/BackgroundModeEmpty.cs b/osu.Game/Screens/Backgrounds/BackgroundModeEmpty.cs similarity index 81% rename from osu.Game/GameModes/Backgrounds/BackgroundModeEmpty.cs rename to osu.Game/Screens/Backgrounds/BackgroundModeEmpty.cs index 6f38c03010..fafb5324b7 100644 --- a/osu.Game/GameModes/Backgrounds/BackgroundModeEmpty.cs +++ b/osu.Game/Screens/Backgrounds/BackgroundModeEmpty.cs @@ -1,7 +1,7 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -namespace osu.Game.GameModes.Backgrounds +namespace osu.Game.Screens.Backgrounds { public class BackgroundModeEmpty : BackgroundMode { diff --git a/osu.Game/Screens/Charts/ChartInfo.cs b/osu.Game/Screens/Charts/ChartInfo.cs new file mode 100644 index 0000000000..ef928ecf4c --- /dev/null +++ b/osu.Game/Screens/Charts/ChartInfo.cs @@ -0,0 +1,9 @@ +//Copyright (c) 2007-2016 ppy Pty Ltd . +//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +namespace osu.Game.Screens.Charts +{ + class ChartInfo : GameModeWhiteBox + { + } +} diff --git a/osu.Game/GameModes/Charts/ChartListing.cs b/osu.Game/Screens/Charts/ChartListing.cs similarity index 88% rename from osu.Game/GameModes/Charts/ChartListing.cs rename to osu.Game/Screens/Charts/ChartListing.cs index 7be9d09bcf..b3512907c1 100644 --- a/osu.Game/GameModes/Charts/ChartListing.cs +++ b/osu.Game/Screens/Charts/ChartListing.cs @@ -4,7 +4,7 @@ using System; using System.Collections.Generic; -namespace osu.Game.GameModes.Charts +namespace osu.Game.Screens.Charts { class ChartListing : GameModeWhiteBox { diff --git a/osu.Game/GameModes/Direct/OnlineListing.cs b/osu.Game/Screens/Direct/OnlineListing.cs similarity index 82% rename from osu.Game/GameModes/Direct/OnlineListing.cs rename to osu.Game/Screens/Direct/OnlineListing.cs index c30017cb77..d4b6db51a4 100644 --- a/osu.Game/GameModes/Direct/OnlineListing.cs +++ b/osu.Game/Screens/Direct/OnlineListing.cs @@ -1,7 +1,7 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -namespace osu.Game.GameModes.Direct +namespace osu.Game.Screens.Direct { class OnlineListing : GameModeWhiteBox { diff --git a/osu.Game/GameModes/Edit/EditSongSelect.cs b/osu.Game/Screens/Edit/EditSongSelect.cs similarity index 84% rename from osu.Game/GameModes/Edit/EditSongSelect.cs rename to osu.Game/Screens/Edit/EditSongSelect.cs index c4686b03ac..323a92f3b5 100644 --- a/osu.Game/GameModes/Edit/EditSongSelect.cs +++ b/osu.Game/Screens/Edit/EditSongSelect.cs @@ -3,9 +3,9 @@ using System; using System.Collections.Generic; -using osu.Game.GameModes.Backgrounds; +using osu.Game.Screens.Backgrounds; -namespace osu.Game.GameModes.Edit +namespace osu.Game.Screens.Edit { class EditSongSelect : GameModeWhiteBox { diff --git a/osu.Game/GameModes/Edit/Editor.cs b/osu.Game/Screens/Edit/Editor.cs similarity index 77% rename from osu.Game/GameModes/Edit/Editor.cs rename to osu.Game/Screens/Edit/Editor.cs index 495e2eef8e..058f1623fa 100644 --- a/osu.Game/GameModes/Edit/Editor.cs +++ b/osu.Game/Screens/Edit/Editor.cs @@ -1,16 +1,11 @@ //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; using osu.Framework.GameModes; -using osu.Game.GameModes.Backgrounds; +using osu.Game.Screens.Backgrounds; using OpenTK.Graphics; -namespace osu.Game.GameModes.Edit +namespace osu.Game.Screens.Edit { class Editor : GameModeWhiteBox { diff --git a/osu.Game/GameModes/GameModeWhiteBox.cs b/osu.Game/Screens/GameModeWhiteBox.cs similarity index 95% rename from osu.Game/GameModes/GameModeWhiteBox.cs rename to osu.Game/Screens/GameModeWhiteBox.cs index 60630c5a9b..ac6cc5ece3 100644 --- a/osu.Game/GameModes/GameModeWhiteBox.cs +++ b/osu.Game/Screens/GameModeWhiteBox.cs @@ -9,13 +9,11 @@ using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Transformations; using osu.Framework.Graphics.UserInterface; -using osu.Game.GameModes.Backgrounds; +using osu.Game.Screens.Backgrounds; using OpenTK; using OpenTK.Graphics; -using osu.Framework; -using osu.Framework.Allocation; -namespace osu.Game.GameModes +namespace osu.Game.Screens { public class GameModeWhiteBox : OsuGameMode { diff --git a/osu.Game/GameModes/Menu/Button.cs b/osu.Game/Screens/Menu/Button.cs similarity index 95% rename from osu.Game/GameModes/Menu/Button.cs rename to osu.Game/Screens/Menu/Button.cs index 8509766132..fa5dbb3b99 100644 --- a/osu.Game/GameModes/Menu/Button.cs +++ b/osu.Game/Screens/Menu/Button.cs @@ -1,18 +1,16 @@ -using OpenTK; -using OpenTK.Graphics; -using OpenTK.Input; +using System; using osu.Framework; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Primitives; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Transformations; using osu.Framework.Input; using osu.Game.Graphics; -using System; -using osu.Framework.Allocation; +using OpenTK; +using OpenTK.Graphics; +using OpenTK.Input; -namespace osu.Game.GameModes.Menu +namespace osu.Game.Screens.Menu { /// /// Button designed specifically for the osu!next main menu. diff --git a/osu.Game/GameModes/Menu/ButtonSystem.cs b/osu.Game/Screens/Menu/ButtonSystem.cs similarity index 95% rename from osu.Game/GameModes/Menu/ButtonSystem.cs rename to osu.Game/Screens/Menu/ButtonSystem.cs index dec776da13..f5cf111269 100644 --- a/osu.Game/GameModes/Menu/ButtonSystem.cs +++ b/osu.Game/Screens/Menu/ButtonSystem.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; +using osu.Framework; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; @@ -13,10 +14,8 @@ using osu.Game.Graphics; using OpenTK; using OpenTK.Graphics; using OpenTK.Input; -using osu.Framework; -using osu.Framework.Allocation; -namespace osu.Game.GameModes.Menu +namespace osu.Game.Screens.Menu { public partial class ButtonSystem : Container, IStateful { @@ -99,8 +98,6 @@ namespace osu.Game.GameModes.Menu } }; - buttonFlow.Position = new Vector2(wedge_width * 2 - (button_width + osuLogo.SizeForFlow / 4), 0); - buttonsPlay.Add(new Button(@"solo", @"freeplay", FontAwesome.fa_user, new Color4(102, 68, 204, 255), () => OnSolo?.Invoke(), wedge_width, Key.P)); buttonsPlay.Add(new Button(@"multi", @"multiplayer", FontAwesome.fa_users, new Color4(94, 63, 186, 255), () => OnMulti?.Invoke(), 0, Key.M)); buttonsPlay.Add(new Button(@"chart", @"charts", FontAwesome.fa_osu_charts, new Color4(80, 53, 160, 255), () => OnChart?.Invoke())); @@ -114,6 +111,14 @@ namespace osu.Game.GameModes.Menu buttonFlow.Add(buttonsTopLevel); } + protected override void LoadComplete() + { + base.LoadComplete(); + + // osuLogo.SizeForFlow relies on loading to be complete. + buttonFlow.Position = new Vector2(wedge_width * 2 - (button_width + osuLogo.SizeForFlow / 4), 0); + } + protected override bool OnKeyDown(InputState state, KeyDownEventArgs args) { switch (args.Key) diff --git a/osu.Game/GameModes/Menu/FlowContainerWithOrigin.cs b/osu.Game/Screens/Menu/FlowContainerWithOrigin.cs similarity index 87% rename from osu.Game/GameModes/Menu/FlowContainerWithOrigin.cs rename to osu.Game/Screens/Menu/FlowContainerWithOrigin.cs index d59c291d14..fc72365812 100644 --- a/osu.Game/GameModes/Menu/FlowContainerWithOrigin.cs +++ b/osu.Game/Screens/Menu/FlowContainerWithOrigin.cs @@ -1,8 +1,8 @@ -using OpenTK; -using osu.Framework.Graphics; +using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using OpenTK; -namespace osu.Game.GameModes.Menu +namespace osu.Game.Screens.Menu { /// /// A flow container with an origin based on one of its contained drawables. diff --git a/osu.Game/GameModes/Menu/Intro.cs b/osu.Game/Screens/Menu/Intro.cs similarity index 89% rename from osu.Game/GameModes/Menu/Intro.cs rename to osu.Game/Screens/Menu/Intro.cs index 92d64f838b..4474ee8024 100644 --- a/osu.Game/GameModes/Menu/Intro.cs +++ b/osu.Game/Screens/Menu/Intro.cs @@ -1,19 +1,17 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using System.Threading; +using osu.Framework.Allocation; +using osu.Framework.Audio; using osu.Framework.Audio.Sample; using osu.Framework.Audio.Track; using osu.Framework.GameModes; using osu.Framework.Graphics; using osu.Framework.Graphics.Transformations; -using osu.Game.GameModes.Backgrounds; +using osu.Game.Screens.Backgrounds; using OpenTK.Graphics; -using osu.Framework; -using osu.Framework.Allocation; -using osu.Framework.Audio; -namespace osu.Game.GameModes.Menu +namespace osu.Game.Screens.Menu { class Intro : OsuGameMode { @@ -28,7 +26,7 @@ namespace osu.Game.GameModes.Menu private AudioSample welcome; private AudioTrack bgm; - internal override bool ShowToolbar => (ParentGameMode as OsuGameMode)?.ShowToolbar ?? false; + internal override bool ShowOverlays => (ParentGameMode as OsuGameMode)?.ShowOverlays ?? false; protected override BackgroundMode CreateBackground() => new BackgroundModeEmpty(); diff --git a/osu.Game/GameModes/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs similarity index 84% rename from osu.Game/GameModes/Menu/MainMenu.cs rename to osu.Game/Screens/Menu/MainMenu.cs index ed29d5e3db..055a4baf9d 100644 --- a/osu.Game/GameModes/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -1,33 +1,29 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using System.Linq; +using osu.Framework.Allocation; using osu.Framework.GameModes; using osu.Framework.GameModes.Testing; using osu.Framework.Graphics; using osu.Framework.Graphics.Transformations; -using osu.Game.GameModes.Backgrounds; -using osu.Game.GameModes.Charts; -using osu.Game.GameModes.Direct; -using osu.Game.GameModes.Edit; -using osu.Game.GameModes.Multiplayer; -using osu.Game.GameModes.Play; using osu.Game.Graphics.Containers; +using osu.Game.Modes; +using osu.Game.Screens.Backgrounds; +using osu.Game.Screens.Charts; +using osu.Game.Screens.Direct; +using osu.Game.Screens.Edit; +using osu.Game.Screens.Multiplayer; +using osu.Game.Screens.Play; using OpenTK; -using osu.Framework; -using osu.Game.Overlays; -using System.Threading.Tasks; -using osu.Game.Configuration; -using osu.Framework.Allocation; -namespace osu.Game.GameModes.Menu +namespace osu.Game.Screens.Menu { public class MainMenu : OsuGameMode { private ButtonSystem buttons; public override string Name => @"Main Menu"; - internal override bool ShowToolbar => true; + internal override bool ShowOverlays => true; private BackgroundMode background; diff --git a/osu.Game/Screens/Menu/MenuVisualisation.cs b/osu.Game/Screens/Menu/MenuVisualisation.cs new file mode 100644 index 0000000000..194b0eee02 --- /dev/null +++ b/osu.Game/Screens/Menu/MenuVisualisation.cs @@ -0,0 +1,8 @@ +using osu.Framework.Graphics; + +namespace osu.Game.Screens.Menu +{ + internal class MenuVisualisation : Drawable + { + } +} diff --git a/osu.Game/GameModes/Menu/OsuLogo.cs b/osu.Game/Screens/Menu/OsuLogo.cs similarity index 95% rename from osu.Game/GameModes/Menu/OsuLogo.cs rename to osu.Game/Screens/Menu/OsuLogo.cs index 0663b79161..6047339b25 100644 --- a/osu.Game/GameModes/Menu/OsuLogo.cs +++ b/osu.Game/Screens/Menu/OsuLogo.cs @@ -2,17 +2,16 @@ //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; +using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.Textures; using osu.Framework.Graphics.Transformations; using osu.Framework.Input; -using osu.Framework; using OpenTK; -using osu.Framework.Allocation; -using osu.Framework.Graphics.Textures; -namespace osu.Game.GameModes.Menu +namespace osu.Game.Screens.Menu { /// /// osu! logo and its attachments (pulsing, visualiser etc.) diff --git a/osu.Game/GameModes/Multiplayer/Lobby.cs b/osu.Game/Screens/Multiplayer/Lobby.cs similarity index 75% rename from osu.Game/GameModes/Multiplayer/Lobby.cs rename to osu.Game/Screens/Multiplayer/Lobby.cs index 6700736234..565e671150 100644 --- a/osu.Game/GameModes/Multiplayer/Lobby.cs +++ b/osu.Game/Screens/Multiplayer/Lobby.cs @@ -3,11 +3,8 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -namespace osu.Game.GameModes.Multiplayer +namespace osu.Game.Screens.Multiplayer { class Lobby : GameModeWhiteBox { diff --git a/osu.Game/GameModes/Multiplayer/Match.cs b/osu.Game/Screens/Multiplayer/Match.cs similarity index 81% rename from osu.Game/GameModes/Multiplayer/Match.cs rename to osu.Game/Screens/Multiplayer/Match.cs index d5dfdffdb3..11d9ef4b8e 100644 --- a/osu.Game/GameModes/Multiplayer/Match.cs +++ b/osu.Game/Screens/Multiplayer/Match.cs @@ -3,15 +3,12 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using osu.Framework.GameModes; -using osu.Game.GameModes.Backgrounds; -using osu.Game.GameModes.Play; +using osu.Game.Screens.Backgrounds; +using osu.Game.Screens.Play; using OpenTK.Graphics; -namespace osu.Game.GameModes.Multiplayer +namespace osu.Game.Screens.Multiplayer { class Match : GameModeWhiteBox { diff --git a/osu.Game/GameModes/Multiplayer/MatchCreate.cs b/osu.Game/Screens/Multiplayer/MatchCreate.cs similarity index 74% rename from osu.Game/GameModes/Multiplayer/MatchCreate.cs rename to osu.Game/Screens/Multiplayer/MatchCreate.cs index 8d134d170e..c6c070661c 100644 --- a/osu.Game/GameModes/Multiplayer/MatchCreate.cs +++ b/osu.Game/Screens/Multiplayer/MatchCreate.cs @@ -3,11 +3,8 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -namespace osu.Game.GameModes.Multiplayer +namespace osu.Game.Screens.Multiplayer { class MatchCreate : GameModeWhiteBox { diff --git a/osu.Game/GameModes/Multiplayer/MatchSongSelect.cs b/osu.Game/Screens/Multiplayer/MatchSongSelect.cs similarity index 54% rename from osu.Game/GameModes/Multiplayer/MatchSongSelect.cs rename to osu.Game/Screens/Multiplayer/MatchSongSelect.cs index da86641c04..442dea9f30 100644 --- a/osu.Game/GameModes/Multiplayer/MatchSongSelect.cs +++ b/osu.Game/Screens/Multiplayer/MatchSongSelect.cs @@ -1,16 +1,9 @@ //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; -using osu.Framework.GameModes; -using osu.Game.GameModes.Backgrounds; -using OpenTK.Graphics; +using osu.Game.Screens.Backgrounds; -namespace osu.Game.GameModes.Multiplayer +namespace osu.Game.Screens.Multiplayer { class MatchSongSelect : GameModeWhiteBox { diff --git a/osu.Game/GameModes/OsuGameMode.cs b/osu.Game/Screens/OsuGameMode.cs similarity index 87% rename from osu.Game/GameModes/OsuGameMode.cs rename to osu.Game/Screens/OsuGameMode.cs index 0c44a6488a..51b8c7d7cf 100644 --- a/osu.Game/GameModes/OsuGameMode.cs +++ b/osu.Game/Screens/OsuGameMode.cs @@ -2,21 +2,13 @@ //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using osu.Framework; using osu.Framework.Allocation; using osu.Framework.Configuration; using osu.Framework.GameModes; -using osu.Framework.Graphics.Containers; using osu.Game.Beatmaps; -using osu.Game.Graphics.Background; using osu.Game.Graphics.Containers; -namespace osu.Game.GameModes +namespace osu.Game.Screens { public abstract class OsuGameMode : GameMode { @@ -28,11 +20,11 @@ namespace osu.Game.GameModes /// protected virtual BackgroundMode CreateBackground() => null; - internal virtual bool ShowToolbar => true; + internal virtual bool ShowOverlays => true; protected new OsuGameBase Game => base.Game as OsuGameBase; - protected float ToolbarPadding => ShowToolbar ? (Game as OsuGame)?.Toolbar.DrawHeight ?? 0 : 0; + protected float ToolbarPadding => ShowOverlays ? (Game as OsuGame)?.Toolbar.DrawHeight ?? 0 : 0; private bool boundToBeatmap; private Bindable beatmap; diff --git a/osu.Game/GameModes/Play/ModSelect.cs b/osu.Game/Screens/Play/ModSelect.cs similarity index 77% rename from osu.Game/GameModes/Play/ModSelect.cs rename to osu.Game/Screens/Play/ModSelect.cs index 33cb00ce35..cead514e11 100644 --- a/osu.Game/GameModes/Play/ModSelect.cs +++ b/osu.Game/Screens/Play/ModSelect.cs @@ -1,16 +1,11 @@ //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; -using OpenTK.Graphics; using osu.Framework.GameModes; -using osu.Game.GameModes.Backgrounds; +using osu.Game.Screens.Backgrounds; +using OpenTK.Graphics; -namespace osu.Game.GameModes.Play +namespace osu.Game.Screens.Play { class ModSelect : GameModeWhiteBox { diff --git a/osu.Game/GameModes/Play/PlaySongSelect.cs b/osu.Game/Screens/Play/PlaySongSelect.cs similarity index 95% rename from osu.Game/GameModes/Play/PlaySongSelect.cs rename to osu.Game/Screens/Play/PlaySongSelect.cs index d083808e5d..4c4c188e04 100644 --- a/osu.Game/GameModes/Play/PlaySongSelect.cs +++ b/osu.Game/Screens/Play/PlaySongSelect.cs @@ -2,29 +2,27 @@ //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; -using System.Diagnostics; -using osu.Framework.Configuration; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Sprites; -using osu.Game.GameModes.Backgrounds; -using osu.Framework; -using osu.Game.Database; -using osu.Framework.Graphics.Primitives; using System.Linq; -using OpenTK; -using OpenTK.Graphics; -using osu.Framework.Graphics.UserInterface; using System.Threading.Tasks; -using osu.Framework.Audio.Track; -using osu.Game.Beatmaps.Drawable; -using osu.Framework.Extensions.IEnumerableExtensions; -using osu.Game.Beatmaps; -using osu.Framework.GameModes; using osu.Framework.Allocation; using osu.Framework.Audio; +using osu.Framework.Audio.Track; +using osu.Framework.Configuration; +using osu.Framework.GameModes; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Primitives; +using osu.Framework.Graphics.Sprites; +using osu.Framework.Graphics.UserInterface; +using osu.Game.Beatmaps; +using osu.Game.Beatmaps.Drawable; +using osu.Game.Database; +using osu.Game.Modes; +using osu.Game.Screens.Backgrounds; +using OpenTK; +using OpenTK.Graphics; -namespace osu.Game.GameModes.Play +namespace osu.Game.Screens.Play { public class PlaySongSelect : OsuGameMode { diff --git a/osu.Game/GameModes/Play/Player.cs b/osu.Game/Screens/Play/Player.cs similarity index 88% rename from osu.Game/GameModes/Play/Player.cs rename to osu.Game/Screens/Play/Player.cs index 7b7ce13785..3dcfbc5bef 100644 --- a/osu.Game/GameModes/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -1,28 +1,24 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Framework.Graphics; -using osu.Game.Beatmaps.Objects; -using osu.Game.GameModes.Backgrounds; -using osu.Game.GameModes.Play.Catch; -using osu.Game.GameModes.Play.Mania; -using osu.Game.GameModes.Play.Osu; -using osu.Game.GameModes.Play.Taiko; -using osu.Framework; -using osu.Game.Database; -using osu.Framework.Timing; -using osu.Framework.Audio.Track; -using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Allocation; using osu.Framework.Audio; -using osu.Framework.Graphics.Cursor; +using osu.Framework.Audio.Track; +using osu.Framework.Extensions.IEnumerableExtensions; +using osu.Framework.Graphics; using osu.Framework.Input; using osu.Framework.Platform; +using osu.Framework.Timing; +using osu.Game.Database; +using osu.Game.Modes; +using osu.Game.Modes.Objects; +using osu.Game.Modes.Objects.Drawables; +using osu.Game.Modes.UI; +using osu.Game.Screens.Backgrounds; using OpenTK.Input; using MouseState = osu.Framework.Input.MouseState; -using osu.Framework.Graphics.Primitives; -namespace osu.Game.GameModes.Play +namespace osu.Game.Screens.Play { public class Player : OsuGameMode { @@ -30,7 +26,7 @@ namespace osu.Game.GameModes.Play protected override BackgroundMode CreateBackground() => new BackgroundModeCustom(@"Backgrounds/bg4"); - internal override bool ShowToolbar => false; + internal override bool ShowOverlays => false; public BeatmapInfo BeatmapInfo; diff --git a/osu.Game/GameModes/Ranking/Results.cs b/osu.Game/Screens/Ranking/Results.cs similarity index 88% rename from osu.Game/GameModes/Ranking/Results.cs rename to osu.Game/Screens/Ranking/Results.cs index 5c941e85a8..b1d55ab54a 100644 --- a/osu.Game/GameModes/Ranking/Results.cs +++ b/osu.Game/Screens/Ranking/Results.cs @@ -2,10 +2,10 @@ //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using osu.Framework.GameModes; -using osu.Game.GameModes.Backgrounds; +using osu.Game.Screens.Backgrounds; using OpenTK.Graphics; -namespace osu.Game.GameModes.Ranking +namespace osu.Game.Screens.Ranking { class Results : GameModeWhiteBox { diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 09e19ef4e5..88f78b57be 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -63,6 +63,7 @@ + @@ -71,28 +72,9 @@ - - - - - - - - - - - - - - - - - - - - - - + + + @@ -102,56 +84,42 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - @@ -159,15 +127,12 @@ - - - diff --git a/osu.sln b/osu.sln index 3d79d4444f..9677a752fb 100644 --- a/osu.sln +++ b/osu.sln @@ -21,6 +21,14 @@ 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.Mode.Osu\osu.Game.Modes.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}" +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}" +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}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -55,6 +63,22 @@ Global {54377672-20B1-40AF-8087-5CF73BF3953A}.Debug|Any CPU.Build.0 = Debug|Any CPU {54377672-20B1-40AF-8087-5CF73BF3953A}.Release|Any CPU.ActiveCfg = Release|Any CPU {54377672-20B1-40AF-8087-5CF73BF3953A}.Release|Any CPU.Build.0 = Release|Any CPU + {C92A607B-1FDD-4954-9F92-03FF547D9080}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C92A607B-1FDD-4954-9F92-03FF547D9080}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C92A607B-1FDD-4954-9F92-03FF547D9080}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C92A607B-1FDD-4954-9F92-03FF547D9080}.Release|Any CPU.Build.0 = Release|Any CPU + {58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {58F6C80C-1253-4A0E-A465-B8C85EBEADF3}.Release|Any CPU.Build.0 = Release|Any CPU + {F167E17A-7DE6-4AF5-B920-A5112296C695}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F167E17A-7DE6-4AF5-B920-A5112296C695}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F167E17A-7DE6-4AF5-B920-A5112296C695}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F167E17A-7DE6-4AF5-B920-A5112296C695}.Release|Any CPU.Build.0 = Release|Any CPU + {48F4582B-7687-4621-9CBE-5C24197CB536}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {48F4582B-7687-4621-9CBE-5C24197CB536}.Debug|Any CPU.Build.0 = Debug|Any CPU + {48F4582B-7687-4621-9CBE-5C24197CB536}.Release|Any CPU.ActiveCfg = Release|Any CPU + {48F4582B-7687-4621-9CBE-5C24197CB536}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -67,6 +91,10 @@ Global {65DC628F-A640-4111-AB35-3A5652BC1E17} = {7A75DFA2-DE65-4458-98AF-26AF96FFD6DC} {69051C69-12AE-4E7D-A3E6-460D2E282312} = {0D37A2AD-80A4-464F-A1DE-1560B70F1CE3} {54377672-20B1-40AF-8087-5CF73BF3953A} = {0D37A2AD-80A4-464F-A1DE-1560B70F1CE3} + {C92A607B-1FDD-4954-9F92-03FF547D9080} = {0D37A2AD-80A4-464F-A1DE-1560B70F1CE3} + {58F6C80C-1253-4A0E-A465-B8C85EBEADF3} = {0D37A2AD-80A4-464F-A1DE-1560B70F1CE3} + {F167E17A-7DE6-4AF5-B920-A5112296C695} = {0D37A2AD-80A4-464F-A1DE-1560B70F1CE3} + {48F4582B-7687-4621-9CBE-5C24197CB536} = {0D37A2AD-80A4-464F-A1DE-1560B70F1CE3} EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution Policies = $0