From 2b4c2f7ff3a6a606a1c9bfb98089a061780e1360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sun, 26 Dec 2021 14:23:52 +0100 Subject: [PATCH 01/23] Add failing test for storyboard sample playback with beatmap hitsounds off --- .../Gameplay/TestSceneStoryboardSamples.cs | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs b/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs index 28915b2c4a..f0ebd7a8cc 100644 --- a/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs +++ b/osu.Game.Tests/Gameplay/TestSceneStoryboardSamples.cs @@ -8,6 +8,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using NUnit.Framework; +using osu.Framework.Allocation; using osu.Framework.Audio; using osu.Framework.Audio.Sample; using osu.Framework.Graphics.Audio; @@ -16,6 +17,7 @@ using osu.Framework.IO.Stores; using osu.Framework.Testing; using osu.Framework.Utils; using osu.Game.Audio; +using osu.Game.Configuration; using osu.Game.Database; using osu.Game.IO; using osu.Game.Rulesets; @@ -35,6 +37,9 @@ namespace osu.Game.Tests.Gameplay [HeadlessTest] public class TestSceneStoryboardSamples : OsuTestScene, IStorageResourceProvider { + [Resolved] + private OsuConfigManager config { get; set; } + [Test] public void TestRetrieveTopLevelSample() { @@ -166,6 +171,39 @@ namespace osu.Game.Tests.Gameplay ((IApplicableToRate)testedMod).ApplyToRate(sampleInfo.StartTime))); } + [Test] + public void TestSamplePlaybackWithBeatmapHitsoundsOff() + { + GameplayClockContainer gameplayContainer = null; + TestDrawableStoryboardSample sample = null; + + AddStep("disable beatmap hitsounds", () => config.SetValue(OsuSetting.BeatmapHitsounds, false)); + + AddStep("setup storyboard sample", () => + { + Beatmap.Value = new TestCustomSkinWorkingBeatmap(new OsuRuleset().RulesetInfo, this); + + var beatmapSkinSourceContainer = new BeatmapSkinProvidingContainer(Beatmap.Value.Skin); + + Add(gameplayContainer = new MasterGameplayClockContainer(Beatmap.Value, 0) + { + Child = beatmapSkinSourceContainer + }); + + beatmapSkinSourceContainer.Add(sample = new TestDrawableStoryboardSample(new StoryboardSampleInfo("test-sample", 1, 1)) + { + Clock = gameplayContainer.GameplayClock + }); + }); + + AddStep("start", () => gameplayContainer.Start()); + + AddUntilStep("sample played", () => sample.IsPlayed); + AddUntilStep("sample has lifetime end", () => sample.LifetimeEnd < double.MaxValue); + + AddStep("restore default", () => config.GetBindable(OsuSetting.BeatmapHitsounds).SetDefault()); + } + private class TestSkin : LegacySkin { public TestSkin(string resourceName, IStorageResourceProvider resources) From dc21c8901e6827edfda2ff9e43a3b90a361c8ec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sun, 26 Dec 2021 14:25:28 +0100 Subject: [PATCH 02/23] Always allow looking up storyboard samples from beatmap skin --- osu.Game/Skinning/BeatmapSkinProvidingContainer.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu.Game/Skinning/BeatmapSkinProvidingContainer.cs b/osu.Game/Skinning/BeatmapSkinProvidingContainer.cs index 57c08a903f..1f4e10916d 100644 --- a/osu.Game/Skinning/BeatmapSkinProvidingContainer.cs +++ b/osu.Game/Skinning/BeatmapSkinProvidingContainer.cs @@ -6,6 +6,7 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Game.Audio; using osu.Game.Configuration; +using osu.Game.Storyboards; namespace osu.Game.Skinning { @@ -61,7 +62,7 @@ namespace osu.Game.Skinning if (beatmapSkins == null) throw new InvalidOperationException($"{nameof(BeatmapSkinProvidingContainer)} needs to be loaded before being consumed."); - return beatmapHitsounds.Value; + return componentName is StoryboardSampleInfo || beatmapHitsounds.Value; } public BeatmapSkinProvidingContainer(ISkin skin) From 724b601d2ad71c763a2be29b7dd52a3e37bdc944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sun, 26 Dec 2021 14:29:07 +0100 Subject: [PATCH 03/23] Rename `AllowSampleLookup` argument to something saner --- osu.Game/Skinning/BeatmapSkinProvidingContainer.cs | 4 ++-- osu.Game/Skinning/SkinProvidingContainer.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/osu.Game/Skinning/BeatmapSkinProvidingContainer.cs b/osu.Game/Skinning/BeatmapSkinProvidingContainer.cs index 1f4e10916d..2ba301deed 100644 --- a/osu.Game/Skinning/BeatmapSkinProvidingContainer.cs +++ b/osu.Game/Skinning/BeatmapSkinProvidingContainer.cs @@ -57,12 +57,12 @@ namespace osu.Game.Skinning return beatmapSkins.Value; } - protected override bool AllowSampleLookup(ISampleInfo componentName) + protected override bool AllowSampleLookup(ISampleInfo sampleInfo) { if (beatmapSkins == null) throw new InvalidOperationException($"{nameof(BeatmapSkinProvidingContainer)} needs to be loaded before being consumed."); - return componentName is StoryboardSampleInfo || beatmapHitsounds.Value; + return sampleInfo is StoryboardSampleInfo || beatmapHitsounds.Value; } public BeatmapSkinProvidingContainer(ISkin skin) diff --git a/osu.Game/Skinning/SkinProvidingContainer.cs b/osu.Game/Skinning/SkinProvidingContainer.cs index c8e4c2c7b6..24198254a3 100644 --- a/osu.Game/Skinning/SkinProvidingContainer.cs +++ b/osu.Game/Skinning/SkinProvidingContainer.cs @@ -35,7 +35,7 @@ namespace osu.Game.Skinning protected virtual bool AllowTextureLookup(string componentName) => true; - protected virtual bool AllowSampleLookup(ISampleInfo componentName) => true; + protected virtual bool AllowSampleLookup(ISampleInfo sampleInfo) => true; protected virtual bool AllowConfigurationLookup => true; From 34b0101ff4d5688c8ff08a4d433dcc1210a94b53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sun, 26 Dec 2021 16:44:39 +0100 Subject: [PATCH 04/23] Add visual test coverage of "hidden by ruleset" combo option --- .../Gameplay/TestSceneSkinnableComboCounter.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneSkinnableComboCounter.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneSkinnableComboCounter.cs index 1c5a05dd1d..bd1fe050af 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneSkinnableComboCounter.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneSkinnableComboCounter.cs @@ -4,6 +4,7 @@ using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Graphics; +using osu.Framework.Testing; using osu.Game.Rulesets.Scoring; using osu.Game.Screens.Play.HUD; @@ -24,5 +25,17 @@ namespace osu.Game.Tests.Visual.Gameplay AddStep("reset combo", () => scoreProcessor.Combo.Value = 0); } + + [Test] + public void TestLegacyComboCounterHiddenByRulesetImplementation() + { + AddToggleStep("toggle legacy hidden by ruleset", visible => + { + foreach (var legacyCounter in this.ChildrenOfType()) + legacyCounter.HiddenByRulesetImplementation = visible; + }); + + AddRepeatStep("increase combo", () => scoreProcessor.Combo.Value++, 10); + } } } From 5a591713aeddc1f2d955c6d551879ce7478aa32e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sun, 26 Dec 2021 16:44:59 +0100 Subject: [PATCH 05/23] Fix legacy combo counter not fully hiding for rulesets that implement their own --- .../Screens/Play/HUD/LegacyComboCounter.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/osu.Game/Screens/Play/HUD/LegacyComboCounter.cs b/osu.Game/Screens/Play/HUD/LegacyComboCounter.cs index f1078c5d55..567e4386c6 100644 --- a/osu.Game/Screens/Play/HUD/LegacyComboCounter.cs +++ b/osu.Game/Screens/Play/HUD/LegacyComboCounter.cs @@ -69,21 +69,21 @@ namespace osu.Game.Screens.Play.HUD InternalChildren = new[] { - popOutCount = new LegacySpriteText(LegacyFont.Combo) - { - Alpha = 0, - Margin = new MarginPadding(0.05f), - Blending = BlendingParameters.Additive, - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - BypassAutoSizeAxes = Axes.Both, - }, counterContainer = new Container { AutoSizeAxes = Axes.Both, AlwaysPresent = true, Children = new[] { + popOutCount = new LegacySpriteText(LegacyFont.Combo) + { + Alpha = 0, + Margin = new MarginPadding(0.05f), + Blending = BlendingParameters.Additive, + Anchor = Anchor.BottomLeft, + Origin = Anchor.BottomLeft, + BypassAutoSizeAxes = Axes.Both, + }, displayedCountSpriteText = new LegacySpriteText(LegacyFont.Combo) { // Initial text and AlwaysPresent allow the counter to have a size before it first displays a combo. From eb04cc9213fe3b8d6ce30a10b7f21cce743b1c44 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 27 Dec 2021 23:04:10 +0900 Subject: [PATCH 06/23] Update framework --- osu.Android.props | 2 +- osu.Game/osu.Game.csproj | 2 +- osu.iOS.props | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Android.props b/osu.Android.props index 31a3bc8c45..67a9cd41dd 100644 --- a/osu.Android.props +++ b/osu.Android.props @@ -52,7 +52,7 @@ - + diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 2c97bae360..c7913cb71d 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -36,7 +36,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/osu.iOS.props b/osu.iOS.props index de084c0297..cccf974d42 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -60,7 +60,7 @@ - + @@ -83,7 +83,7 @@ - + From eed0ecf8c5bfbb2be0df576f7c0f606d2eb36bfc Mon Sep 17 00:00:00 2001 From: Joseph Madamba Date: Thu, 9 Dec 2021 20:52:12 -0800 Subject: [PATCH 07/23] Add special prefixed/suffixed words to dictionary --- osu.sln.DotSettings | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/osu.sln.DotSettings b/osu.sln.DotSettings index a96f64cdc3..4487ae2cde 100644 --- a/osu.sln.DotSettings +++ b/osu.sln.DotSettings @@ -926,20 +926,44 @@ private void load() True True True + True + True True + True True True True + True True True True True + True + True + True True True + True + True + True + True + True + True + True + True True True True True + True + True + True True True + True + True + True + True + True + True True From 55768d8c1136d8ae6469656e6e46e85aa75c06e6 Mon Sep 17 00:00:00 2001 From: Joseph Madamba Date: Thu, 9 Dec 2021 20:58:45 -0800 Subject: [PATCH 08/23] Add some osu! words to dictionary --- osu.sln.DotSettings | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/osu.sln.DotSettings b/osu.sln.DotSettings index 4487ae2cde..90bf4f09eb 100644 --- a/osu.sln.DotSettings +++ b/osu.sln.DotSettings @@ -920,27 +920,40 @@ private void load() { $END$ }; + True True True + True True True True True + True True True True True + True True + True + True True True + True + True + True True + True True True + True True True True + True True True + True True True True @@ -956,7 +969,9 @@ private void load() True True True + True True + True True True True From 98524d60a4a299ed10babd237515ca897c0b39fe Mon Sep 17 00:00:00 2001 From: Joseph Madamba Date: Thu, 9 Dec 2021 21:04:31 -0800 Subject: [PATCH 09/23] Fix clear identifier typos --- osu.Desktop/Security/ElevatedPrivilegesChecker.cs | 2 +- .../Skinning/Default/DefaultHitExplosion.cs | 6 +++--- osu.Game.Rulesets.Mania/UI/DefaultHitExplosion.cs | 6 +++--- osu.Game.Tests/Mods/ModSettingsEqualityComparison.cs | 12 ++++++------ .../TestMultiplayerMessagePackSerialization.cs | 2 +- .../Visual/Online/TestSceneBeatmapAvailability.cs | 10 +++++----- .../TestScenePlaylistsMatchSettingsOverlay.cs | 8 ++++---- osu.Game/Online/API/APIException.cs | 4 ++-- osu.Game/Online/Chat/ChannelManager.cs | 4 ++-- osu.Game/Online/Chat/MessageNotifier.cs | 2 +- osu.Game/Overlays/Comments/DrawableComment.cs | 12 ++++++------ .../Notifications/ProgressCompletionNotification.cs | 2 +- .../Overlays/Notifications/SimpleNotification.cs | 4 ++-- .../Edit/Compose/Components/SelectionBoxButton.cs | 2 +- .../Edit/Compose/Components/SelectionBoxControl.cs | 2 +- .../Compose/Components/SelectionBoxDragHandle.cs | 2 +- osu.Game/Screens/Menu/LogoVisualisation.cs | 4 ++-- osu.Game/Screens/Play/PlayerLoader.cs | 4 ++-- osu.Game/Updater/UpdateManager.cs | 2 +- 19 files changed, 45 insertions(+), 45 deletions(-) diff --git a/osu.Desktop/Security/ElevatedPrivilegesChecker.cs b/osu.Desktop/Security/ElevatedPrivilegesChecker.cs index 01458b4c37..62ea3e0399 100644 --- a/osu.Desktop/Security/ElevatedPrivilegesChecker.cs +++ b/osu.Desktop/Security/ElevatedPrivilegesChecker.cs @@ -76,7 +76,7 @@ namespace osu.Desktop.Security private void load(OsuColour colours, NotificationOverlay notificationOverlay) { Icon = FontAwesome.Solid.ShieldAlt; - IconBackgound.Colour = colours.YellowDark; + IconBackground.Colour = colours.YellowDark; } } } diff --git a/osu.Game.Rulesets.Catch/Skinning/Default/DefaultHitExplosion.cs b/osu.Game.Rulesets.Catch/Skinning/Default/DefaultHitExplosion.cs index e1fad564a3..905eb059e3 100644 --- a/osu.Game.Rulesets.Catch/Skinning/Default/DefaultHitExplosion.cs +++ b/osu.Game.Rulesets.Catch/Skinning/Default/DefaultHitExplosion.cs @@ -90,9 +90,9 @@ namespace osu.Game.Rulesets.Catch.Skinning.Default .ResizeTo(largeFaint.Size * new Vector2(5, 1), duration, Easing.OutQuint) .FadeOut(duration * 2); - const float angle_variangle = 15; // should be less than 45 - directionalGlow1.Rotation = StatelessRNG.NextSingle(-angle_variangle, angle_variangle, randomSeed, 4); - directionalGlow2.Rotation = StatelessRNG.NextSingle(-angle_variangle, angle_variangle, randomSeed, 5); + const float angle_variable = 15; // should be less than 45 + directionalGlow1.Rotation = StatelessRNG.NextSingle(-angle_variable, angle_variable, randomSeed, 4); + directionalGlow2.Rotation = StatelessRNG.NextSingle(-angle_variable, angle_variable, randomSeed, 5); this.FadeInFromZero(50).Then().FadeOut(duration, Easing.Out); } diff --git a/osu.Game.Rulesets.Mania/UI/DefaultHitExplosion.cs b/osu.Game.Rulesets.Mania/UI/DefaultHitExplosion.cs index 69b81d6d5c..99dcce2da4 100644 --- a/osu.Game.Rulesets.Mania/UI/DefaultHitExplosion.cs +++ b/osu.Game.Rulesets.Mania/UI/DefaultHitExplosion.cs @@ -42,7 +42,7 @@ namespace osu.Game.Rulesets.Mania.UI [BackgroundDependencyLoader] private void load(IScrollingInfo scrollingInfo) { - const float angle_variangle = 15; // should be less than 45 + const float angle_variable = 15; // should be less than 45 const float roundness = 80; const float initial_height = 10; @@ -90,7 +90,7 @@ namespace osu.Game.Rulesets.Mania.UI Masking = true, Size = new Vector2(0.01f, initial_height), Blending = BlendingParameters.Additive, - Rotation = RNG.NextSingle(-angle_variangle, angle_variangle), + Rotation = RNG.NextSingle(-angle_variable, angle_variable), EdgeEffect = new EdgeEffectParameters { Type = EdgeEffectType.Glow, @@ -107,7 +107,7 @@ namespace osu.Game.Rulesets.Mania.UI Masking = true, Size = new Vector2(0.01f, initial_height), Blending = BlendingParameters.Additive, - Rotation = RNG.NextSingle(-angle_variangle, angle_variangle), + Rotation = RNG.NextSingle(-angle_variable, angle_variable), EdgeEffect = new EdgeEffectParameters { Type = EdgeEffectType.Glow, diff --git a/osu.Game.Tests/Mods/ModSettingsEqualityComparison.cs b/osu.Game.Tests/Mods/ModSettingsEqualityComparison.cs index ce6b3a68a5..cd6879cf01 100644 --- a/osu.Game.Tests/Mods/ModSettingsEqualityComparison.cs +++ b/osu.Game.Tests/Mods/ModSettingsEqualityComparison.cs @@ -34,20 +34,20 @@ namespace osu.Game.Tests.Mods var mod3 = new OsuModDoubleTime { SpeedChange = { Value = 1.26 } }; var doubleConvertedMod1 = new APIMod(mod1).ToMod(ruleset); - var doulbeConvertedMod2 = new APIMod(mod2).ToMod(ruleset); - var doulbeConvertedMod3 = new APIMod(mod3).ToMod(ruleset); + var doubleConvertedMod2 = new APIMod(mod2).ToMod(ruleset); + var doubleConvertedMod3 = new APIMod(mod3).ToMod(ruleset); Assert.That(mod1, Is.Not.EqualTo(mod2)); - Assert.That(doubleConvertedMod1, Is.Not.EqualTo(doulbeConvertedMod2)); + Assert.That(doubleConvertedMod1, Is.Not.EqualTo(doubleConvertedMod2)); Assert.That(mod2, Is.EqualTo(mod2)); - Assert.That(doulbeConvertedMod2, Is.EqualTo(doulbeConvertedMod2)); + Assert.That(doubleConvertedMod2, Is.EqualTo(doubleConvertedMod2)); Assert.That(mod2, Is.EqualTo(mod3)); - Assert.That(doulbeConvertedMod2, Is.EqualTo(doulbeConvertedMod3)); + Assert.That(doubleConvertedMod2, Is.EqualTo(doubleConvertedMod3)); Assert.That(mod3, Is.EqualTo(mod2)); - Assert.That(doulbeConvertedMod3, Is.EqualTo(doulbeConvertedMod2)); + Assert.That(doubleConvertedMod3, Is.EqualTo(doubleConvertedMod2)); } } } diff --git a/osu.Game.Tests/Online/TestMultiplayerMessagePackSerialization.cs b/osu.Game.Tests/Online/TestMultiplayerMessagePackSerialization.cs index 1027b722d1..81475f2fbe 100644 --- a/osu.Game.Tests/Online/TestMultiplayerMessagePackSerialization.cs +++ b/osu.Game.Tests/Online/TestMultiplayerMessagePackSerialization.cs @@ -39,7 +39,7 @@ namespace osu.Game.Tests.Online } [Test] - public void TestSerialiseUnionFailsWithSingalR() + public void TestSerialiseUnionFailsWithSignalR() { var state = new TeamVersusUserState(); diff --git a/osu.Game.Tests/Visual/Online/TestSceneBeatmapAvailability.cs b/osu.Game.Tests/Visual/Online/TestSceneBeatmapAvailability.cs index 176e0592ef..f94ae24a14 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneBeatmapAvailability.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneBeatmapAvailability.cs @@ -30,7 +30,7 @@ namespace osu.Game.Tests.Visual.Online }, }); - visiblityAssert(true); + visibilityAssert(true); } [Test] @@ -44,7 +44,7 @@ namespace osu.Game.Tests.Visual.Online }, }); - visiblityAssert(true); + visibilityAssert(true); } [Test] @@ -59,7 +59,7 @@ namespace osu.Game.Tests.Visual.Online }, }); - visiblityAssert(true); + visibilityAssert(true); } [Test] @@ -73,10 +73,10 @@ namespace osu.Game.Tests.Visual.Online }, }); - visiblityAssert(false); + visibilityAssert(false); } - private void visiblityAssert(bool shown) + private void visibilityAssert(bool shown) { AddAssert($"is container {(shown ? "visible" : "hidden")}", () => container.Alpha == (shown ? 1 : 0)); } diff --git a/osu.Game.Tests/Visual/Playlists/TestScenePlaylistsMatchSettingsOverlay.cs b/osu.Game.Tests/Visual/Playlists/TestScenePlaylistsMatchSettingsOverlay.cs index 278379c692..ca3387392a 100644 --- a/osu.Game.Tests/Visual/Playlists/TestScenePlaylistsMatchSettingsOverlay.cs +++ b/osu.Game.Tests/Visual/Playlists/TestScenePlaylistsMatchSettingsOverlay.cs @@ -87,7 +87,7 @@ namespace osu.Game.Tests.Visual.Playlists { const string not_found_prefix = "beatmaps not found:"; - string errorMesage = null; + string errorMessage = null; AddStep("setup", () => { @@ -96,9 +96,9 @@ namespace osu.Game.Tests.Visual.Playlists SelectedRoom.Value.Name.Value = "Test Room"; SelectedRoom.Value.Playlist.Add(new PlaylistItem { Beatmap = { Value = beatmap } }); - errorMesage = $"{not_found_prefix} {beatmap.OnlineID}"; + errorMessage = $"{not_found_prefix} {beatmap.OnlineID}"; - RoomManager.CreateRequested = _ => errorMesage; + RoomManager.CreateRequested = _ => errorMessage; }); AddAssert("error not displayed", () => !settings.ErrorText.IsPresent); @@ -107,7 +107,7 @@ namespace osu.Game.Tests.Visual.Playlists AddStep("create room", () => settings.ApplyButton.Action.Invoke()); AddAssert("error displayed", () => settings.ErrorText.IsPresent); - AddAssert("error has custom text", () => settings.ErrorText.Text != errorMesage); + AddAssert("error has custom text", () => settings.ErrorText.Text != errorMessage); AddAssert("playlist item marked invalid", () => !SelectedRoom.Value.Playlist[0].Valid.Value); } diff --git a/osu.Game/Online/API/APIException.cs b/osu.Game/Online/API/APIException.cs index 97786bced9..54d68d8f0d 100644 --- a/osu.Game/Online/API/APIException.cs +++ b/osu.Game/Online/API/APIException.cs @@ -7,8 +7,8 @@ namespace osu.Game.Online.API { public class APIException : InvalidOperationException { - public APIException(string messsage, Exception innerException) - : base(messsage, innerException) + public APIException(string message, Exception innerException) + : base(message, innerException) { } } diff --git a/osu.Game/Online/Chat/ChannelManager.cs b/osu.Game/Online/Chat/ChannelManager.cs index edaf135e93..cc41511764 100644 --- a/osu.Game/Online/Chat/ChannelManager.cs +++ b/osu.Game/Online/Chat/ChannelManager.cs @@ -335,7 +335,7 @@ namespace osu.Game.Online.Chat /// right now it caps out at 50 messages and therefore only returns one channel's worth of content. /// /// The channel - private void fetchInitalMessages(Channel channel) + private void fetchInitialMessages(Channel channel) { if (channel.Id <= 0 || channel.MessagesLoaded) return; @@ -441,7 +441,7 @@ namespace osu.Game.Online.Chat else { if (fetchInitialMessages) - fetchInitalMessages(channel); + this.fetchInitialMessages(channel); } CurrentChannel.Value ??= channel; diff --git a/osu.Game/Online/Chat/MessageNotifier.cs b/osu.Game/Online/Chat/MessageNotifier.cs index a11af7b305..2c99e9f9b9 100644 --- a/osu.Game/Online/Chat/MessageNotifier.cs +++ b/osu.Game/Online/Chat/MessageNotifier.cs @@ -170,7 +170,7 @@ namespace osu.Game.Online.Chat [BackgroundDependencyLoader] private void load(OsuColour colours, ChatOverlay chatOverlay, NotificationOverlay notificationOverlay, ChannelManager channelManager) { - IconBackgound.Colour = colours.PurpleDark; + IconBackground.Colour = colours.PurpleDark; Activated = delegate { diff --git a/osu.Game/Overlays/Comments/DrawableComment.cs b/osu.Game/Overlays/Comments/DrawableComment.cs index 43f4177bd0..3286b6c5c0 100644 --- a/osu.Game/Overlays/Comments/DrawableComment.cs +++ b/osu.Game/Overlays/Comments/DrawableComment.cs @@ -362,15 +362,15 @@ namespace osu.Game.Overlays.Comments private void updateButtonsState() { - int loadedReplesCount = loadedReplies.Count; - bool hasUnloadedReplies = loadedReplesCount != Comment.RepliesCount; + int loadedRepliesCount = loadedReplies.Count; + bool hasUnloadedReplies = loadedRepliesCount != Comment.RepliesCount; - loadRepliesButton.FadeTo(hasUnloadedReplies && loadedReplesCount == 0 ? 1 : 0); - showMoreButton.FadeTo(hasUnloadedReplies && loadedReplesCount > 0 ? 1 : 0); - showRepliesButton.FadeTo(loadedReplesCount != 0 ? 1 : 0); + loadRepliesButton.FadeTo(hasUnloadedReplies && loadedRepliesCount == 0 ? 1 : 0); + showMoreButton.FadeTo(hasUnloadedReplies && loadedRepliesCount > 0 ? 1 : 0); + showRepliesButton.FadeTo(loadedRepliesCount != 0 ? 1 : 0); if (Comment.IsTopLevel) - chevronButton.FadeTo(loadedReplesCount != 0 ? 1 : 0); + chevronButton.FadeTo(loadedRepliesCount != 0 ? 1 : 0); showMoreButton.IsLoading = loadRepliesButton.IsLoading = false; } diff --git a/osu.Game/Overlays/Notifications/ProgressCompletionNotification.cs b/osu.Game/Overlays/Notifications/ProgressCompletionNotification.cs index feffb4fa66..754f9bd600 100644 --- a/osu.Game/Overlays/Notifications/ProgressCompletionNotification.cs +++ b/osu.Game/Overlays/Notifications/ProgressCompletionNotification.cs @@ -18,7 +18,7 @@ namespace osu.Game.Overlays.Notifications [BackgroundDependencyLoader] private void load(OsuColour colours) { - IconBackgound.Colour = ColourInfo.GradientVertical(colours.GreenDark, colours.GreenLight); + IconBackground.Colour = ColourInfo.GradientVertical(colours.GreenDark, colours.GreenLight); } } } diff --git a/osu.Game/Overlays/Notifications/SimpleNotification.cs b/osu.Game/Overlays/Notifications/SimpleNotification.cs index 17ec12a4ca..c32e40ffc8 100644 --- a/osu.Game/Overlays/Notifications/SimpleNotification.cs +++ b/osu.Game/Overlays/Notifications/SimpleNotification.cs @@ -43,13 +43,13 @@ namespace osu.Game.Overlays.Notifications private readonly TextFlowContainer textDrawable; private readonly SpriteIcon iconDrawable; - protected Box IconBackgound; + protected Box IconBackground; public SimpleNotification() { IconContent.AddRange(new Drawable[] { - IconBackgound = new Box + IconBackground = new Box { RelativeSizeAxes = Axes.Both, Colour = ColourInfo.GradientVertical(OsuColour.Gray(0.2f), OsuColour.Gray(0.6f)) diff --git a/osu.Game/Screens/Edit/Compose/Components/SelectionBoxButton.cs b/osu.Game/Screens/Edit/Compose/Components/SelectionBoxButton.cs index 3ac40fda0f..346bb2b508 100644 --- a/osu.Game/Screens/Edit/Compose/Components/SelectionBoxButton.cs +++ b/osu.Game/Screens/Edit/Compose/Components/SelectionBoxButton.cs @@ -49,7 +49,7 @@ namespace osu.Game.Screens.Edit.Compose.Components { TriggerOperationStarted(); Action?.Invoke(); - TriggerOperatoinEnded(); + TriggerOperationEnded(); return true; } diff --git a/osu.Game/Screens/Edit/Compose/Components/SelectionBoxControl.cs b/osu.Game/Screens/Edit/Compose/Components/SelectionBoxControl.cs index 40d367bb80..8f22e67922 100644 --- a/osu.Game/Screens/Edit/Compose/Components/SelectionBoxControl.cs +++ b/osu.Game/Screens/Edit/Compose/Components/SelectionBoxControl.cs @@ -92,6 +92,6 @@ namespace osu.Game.Screens.Edit.Compose.Components protected void TriggerOperationStarted() => OperationStarted?.Invoke(); - protected void TriggerOperatoinEnded() => OperationEnded?.Invoke(); + protected void TriggerOperationEnded() => OperationEnded?.Invoke(); } } diff --git a/osu.Game/Screens/Edit/Compose/Components/SelectionBoxDragHandle.cs b/osu.Game/Screens/Edit/Compose/Components/SelectionBoxDragHandle.cs index 65a95951cf..cac907ca5e 100644 --- a/osu.Game/Screens/Edit/Compose/Components/SelectionBoxDragHandle.cs +++ b/osu.Game/Screens/Edit/Compose/Components/SelectionBoxDragHandle.cs @@ -24,7 +24,7 @@ namespace osu.Game.Screens.Edit.Compose.Components protected override void OnDragEnd(DragEndEvent e) { - TriggerOperatoinEnded(); + TriggerOperationEnded(); UpdateHoverState(); base.OnDragEnd(e); diff --git a/osu.Game/Screens/Menu/LogoVisualisation.cs b/osu.Game/Screens/Menu/LogoVisualisation.cs index 01b2a98c6e..4acd73bfa0 100644 --- a/osu.Game/Screens/Menu/LogoVisualisation.cs +++ b/osu.Game/Screens/Menu/LogoVisualisation.cs @@ -53,7 +53,7 @@ namespace osu.Game.Screens.Menu /// /// How much should each bar go down each millisecond (based on a full bar). /// - private const float decay_per_milisecond = 0.0024f; + private const float decay_per_millisecond = 0.0024f; /// /// Number of milliseconds between each amplitude update. @@ -136,7 +136,7 @@ namespace osu.Game.Screens.Menu { base.Update(); - float decayFactor = (float)Time.Elapsed * decay_per_milisecond; + float decayFactor = (float)Time.Elapsed * decay_per_millisecond; for (int i = 0; i < bars_per_visualiser; i++) { diff --git a/osu.Game/Screens/Play/PlayerLoader.cs b/osu.Game/Screens/Play/PlayerLoader.cs index 60843acb4f..6009c85583 100644 --- a/osu.Game/Screens/Play/PlayerLoader.cs +++ b/osu.Game/Screens/Play/PlayerLoader.cs @@ -496,7 +496,7 @@ namespace osu.Game.Screens.Play private void load(OsuColour colours, AudioManager audioManager, NotificationOverlay notificationOverlay, VolumeOverlay volumeOverlay) { Icon = FontAwesome.Solid.VolumeMute; - IconBackgound.Colour = colours.RedDark; + IconBackground.Colour = colours.RedDark; Activated = delegate { @@ -548,7 +548,7 @@ namespace osu.Game.Screens.Play private void load(OsuColour colours, NotificationOverlay notificationOverlay) { Icon = FontAwesome.Solid.BatteryQuarter; - IconBackgound.Colour = colours.RedDark; + IconBackground.Colour = colours.RedDark; Activated = delegate { diff --git a/osu.Game/Updater/UpdateManager.cs b/osu.Game/Updater/UpdateManager.cs index 28b828804c..9b9f354d23 100644 --- a/osu.Game/Updater/UpdateManager.cs +++ b/osu.Game/Updater/UpdateManager.cs @@ -97,7 +97,7 @@ namespace osu.Game.Updater private void load(OsuColour colours, ChangelogOverlay changelog, NotificationOverlay notificationOverlay) { Icon = FontAwesome.Solid.CheckSquare; - IconBackgound.Colour = colours.BlueDark; + IconBackground.Colour = colours.BlueDark; Activated = delegate { From 7de43e3aba011374d6777f23b1f891e671c375cf Mon Sep 17 00:00:00 2001 From: Joseph Madamba Date: Thu, 9 Dec 2021 21:15:00 -0800 Subject: [PATCH 10/23] Fix most open compound words in identifiers being closed --- .../TestSceneDrawableHitObjects.cs | 2 +- .../TestSceneFruitObjects.cs | 8 ++--- .../Skinning/TestSceneHitExplosion.cs | 8 ++--- .../Beatmaps/ManiaBeatmap.cs | 4 +-- .../Legacy/ManiaLegacySkinTransformer.cs | 10 +++--- osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs | 2 +- osu.Game.Rulesets.Mania/UI/Stage.cs | 2 +- .../Components/PathControlPointPiece.cs | 2 +- osu.Game.Rulesets.Osu/Mods/OsuModSpunOut.cs | 2 +- .../Skinning/TestSceneDrawableBarLine.cs | 6 ++-- .../Beatmaps/TaikoBeatmap.cs | 4 +-- .../Editing/Checks/CheckMutedObjectsTest.cs | 36 +++++++++---------- .../Navigation/TestScenePresentBeatmap.cs | 28 +++++++-------- .../Navigation/TestScenePresentScore.cs | 16 ++++----- .../Visual/Online/TestSceneKudosuHistory.cs | 2 +- .../Online/TestScenePlayHistorySubsection.cs | 16 ++++----- .../Online/TestSceneStandAloneChatDisplay.cs | 4 +-- .../TestSceneRestoreDefaultValueButton.cs | 2 +- .../Settings/TestSceneSettingsSource.cs | 2 +- .../UserInterface/TestSceneOnScreenDisplay.cs | 32 ++++++++--------- .../UserInterface/TestSceneOsuTextBox.cs | 2 +- .../UserInterface/ThemeComparisonTestScene.cs | 2 +- .../Components/ScrollingTeamContainer.cs | 6 ++-- .../Screens/Setup/StablePathSelectScreen.cs | 2 +- .../Drawables/BeatmapSetOnlineStatusPill.cs | 4 +-- .../Collections/DrawableCollectionListItem.cs | 4 +-- .../Collections/ManageCollectionsDialog.cs | 6 ++-- osu.Game/Graphics/DateTooltip.cs | 2 +- osu.Game/Graphics/OsuColour.cs | 12 +++---- osu.Game/Graphics/OsuIcon.cs | 18 +++++----- .../OsuDirectorySelectorDirectory.cs | 2 +- .../UserInterfaceV2/OsuHSVColourPicker.cs | 2 +- .../UserInterfaceV2/OsuHexColourPicker.cs | 2 +- .../Graphics/UserInterfaceV2/OsuPopover.cs | 2 +- .../Online/API/Requests/Responses/APIUser.cs | 6 ++-- osu.Game/Online/Chat/StandAloneChatDisplay.cs | 28 +++++++-------- osu.Game/Online/Rooms/PlaylistItem.cs | 2 +- .../Overlays/AccountCreation/ScreenEntry.cs | 14 ++++---- osu.Game/Overlays/ChatOverlay.cs | 32 ++++++++--------- .../Header/Components/PreviousUsernames.cs | 2 +- .../PaginatedMostPlayedBeatmapContainer.cs | 2 +- .../Historical/PlayHistorySubsection.cs | 2 +- .../Kudosu/DrawableKudosuHistoryItem.cs | 2 +- .../Maintenance/DirectorySelectScreen.cs | 2 +- osu.Game/Rulesets/Mods/ModBlockFail.cs | 2 +- osu.Game/Rulesets/Mods/ModDoubleTime.cs | 2 +- osu.Game/Rulesets/Mods/ModHardRock.cs | 2 +- osu.Game/Rulesets/Mods/ModNoFail.cs | 2 +- osu.Game/Rulesets/Mods/ModSuddenDeath.cs | 2 +- .../Objects/Legacy/ConvertHitObjectParser.cs | 4 +-- osu.Game/Rulesets/Objects/SliderPath.cs | 6 ++-- .../Edit/Setup/SetupScreenHeaderBackground.cs | 2 +- .../IndeterminateSliderWithTextBoxInput.cs | 14 ++++---- .../Edit/Timing/SliderWithTextBoxInput.cs | 8 ++--- osu.Game/Screens/Import/FileImportScreen.cs | 4 +-- .../OnlinePlay/Lounge/DrawableLoungeRoom.cs | 16 ++++----- .../Multiplayer/GameplayChatDisplay.cs | 24 ++++++------- osu.Game/Screens/Play/HUD/HealthDisplay.cs | 6 ++-- osu.Game/Screens/Play/HUDOverlay.cs | 4 +-- .../Play/PlayerSettings/PlayerSliderBar.cs | 4 +-- 60 files changed, 224 insertions(+), 224 deletions(-) diff --git a/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjects.cs b/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjects.cs index 459b8e1f6f..23f6222eb6 100644 --- a/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjects.cs +++ b/osu.Game.Rulesets.Catch.Tests/TestSceneDrawableHitObjects.cs @@ -72,7 +72,7 @@ namespace osu.Game.Rulesets.Catch.Tests } [Test] - public void TestJuicestream() + public void TestJuiceStream() { AddStep("hit juicestream", () => spawnJuiceStream(true)); AddUntilStep("wait for completion", () => playfieldIsEmpty); diff --git a/osu.Game.Rulesets.Catch.Tests/TestSceneFruitObjects.cs b/osu.Game.Rulesets.Catch.Tests/TestSceneFruitObjects.cs index 943adbef52..12b98dc93c 100644 --- a/osu.Game.Rulesets.Catch.Tests/TestSceneFruitObjects.cs +++ b/osu.Game.Rulesets.Catch.Tests/TestSceneFruitObjects.cs @@ -37,20 +37,20 @@ namespace osu.Game.Rulesets.Catch.Tests AddStep("show hyperdash droplet", () => SetContents(_ => createDrawableDroplet(true))); } - private Drawable createDrawableFruit(int indexInBeatmap, bool hyperdash = false) => + private Drawable createDrawableFruit(int indexInBeatmap, bool hyperDash = false) => new TestDrawableCatchHitObjectSpecimen(new DrawableFruit(new Fruit { IndexInBeatmap = indexInBeatmap, - HyperDashBindable = { Value = hyperdash } + HyperDashBindable = { Value = hyperDash } })); private Drawable createDrawableBanana() => new TestDrawableCatchHitObjectSpecimen(new DrawableBanana(new Banana())); - private Drawable createDrawableDroplet(bool hyperdash = false) => + private Drawable createDrawableDroplet(bool hyperDash = false) => new TestDrawableCatchHitObjectSpecimen(new DrawableDroplet(new Droplet { - HyperDashBindable = { Value = hyperdash } + HyperDashBindable = { Value = hyperDash } })); private Drawable createDrawableTinyDroplet() => new TestDrawableCatchHitObjectSpecimen(new DrawableTinyDroplet(new TinyDroplet())); diff --git a/osu.Game.Rulesets.Mania.Tests/Skinning/TestSceneHitExplosion.cs b/osu.Game.Rulesets.Mania.Tests/Skinning/TestSceneHitExplosion.cs index 004793e1e5..9e6e0a7776 100644 --- a/osu.Game.Rulesets.Mania.Tests/Skinning/TestSceneHitExplosion.cs +++ b/osu.Game.Rulesets.Mania.Tests/Skinning/TestSceneHitExplosion.cs @@ -24,13 +24,13 @@ namespace osu.Game.Rulesets.Mania.Tests.Skinning public TestSceneHitExplosion() { - int runcount = 0; + int runCount = 0; AddRepeatStep("explode", () => { - runcount++; + runCount++; - if (runcount % 15 > 12) + if (runCount % 15 > 12) return; int poolIndex = 0; @@ -39,7 +39,7 @@ namespace osu.Game.Rulesets.Mania.Tests.Skinning { c.Add(hitExplosionPools[poolIndex].Get(e => { - e.Apply(new JudgementResult(new HitObject(), runcount % 6 == 0 ? new HoldNoteTickJudgement() : new ManiaJudgement())); + e.Apply(new JudgementResult(new HitObject(), runCount % 6 == 0 ? new HoldNoteTickJudgement() : new ManiaJudgement())); e.Anchor = Anchor.Centre; e.Origin = Anchor.Centre; diff --git a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmap.cs b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmap.cs index 93a9ce3dbd..0058f6f884 100644 --- a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmap.cs +++ b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmap.cs @@ -40,7 +40,7 @@ namespace osu.Game.Rulesets.Mania.Beatmaps public override IEnumerable GetStatistics() { int notes = HitObjects.Count(s => s is Note); - int holdnotes = HitObjects.Count(s => s is HoldNote); + int holdNotes = HitObjects.Count(s => s is HoldNote); return new[] { @@ -54,7 +54,7 @@ namespace osu.Game.Rulesets.Mania.Beatmaps { Name = @"Hold Note Count", CreateIcon = () => new BeatmapStatisticIcon(BeatmapStatisticsIconType.Sliders), - Content = holdnotes.ToString(), + Content = holdNotes.ToString(), }, }; } diff --git a/osu.Game.Rulesets.Mania/Skinning/Legacy/ManiaLegacySkinTransformer.cs b/osu.Game.Rulesets.Mania/Skinning/Legacy/ManiaLegacySkinTransformer.cs index 0588ae57d7..431bd77402 100644 --- a/osu.Game.Rulesets.Mania/Skinning/Legacy/ManiaLegacySkinTransformer.cs +++ b/osu.Game.Rulesets.Mania/Skinning/Legacy/ManiaLegacySkinTransformer.cs @@ -24,7 +24,7 @@ namespace osu.Game.Rulesets.Mania.Skinning.Legacy /// Mapping of to their corresponding /// value. /// - private static readonly IReadOnlyDictionary hitresult_mapping + private static readonly IReadOnlyDictionary hit_result_mapping = new Dictionary { { HitResult.Perfect, LegacyManiaSkinConfigurationLookups.Hit300g }, @@ -39,7 +39,7 @@ namespace osu.Game.Rulesets.Mania.Skinning.Legacy /// Mapping of to their corresponding /// default filenames. /// - private static readonly IReadOnlyDictionary default_hitresult_skin_filenames + private static readonly IReadOnlyDictionary default_hit_result_skin_filenames = new Dictionary { { HitResult.Perfect, "mania-hit300g" }, @@ -126,11 +126,11 @@ namespace osu.Game.Rulesets.Mania.Skinning.Legacy private Drawable getResult(HitResult result) { - if (!hitresult_mapping.ContainsKey(result)) + if (!hit_result_mapping.ContainsKey(result)) return null; - string filename = this.GetManiaSkinConfig(hitresult_mapping[result])?.Value - ?? default_hitresult_skin_filenames[result]; + string filename = this.GetManiaSkinConfig(hit_result_mapping[result])?.Value + ?? default_hit_result_skin_filenames[result]; var animation = this.GetAnimation(filename, true, true); return animation == null ? null : new LegacyManiaJudgementPiece(result, animation); diff --git a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs index 8830c440c0..4cd6624ac6 100644 --- a/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs +++ b/osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs @@ -65,7 +65,7 @@ namespace osu.Game.Rulesets.Mania.UI public override bool Remove(DrawableHitObject h) => getStageByColumn(((ManiaHitObject)h.HitObject).Column).Remove(h); - public void Add(BarLine barline) => stages.ForEach(s => s.Add(barline)); + public void Add(BarLine barLine) => stages.ForEach(s => s.Add(barLine)); /// /// Retrieves a column from a screen-space position. diff --git a/osu.Game.Rulesets.Mania/UI/Stage.cs b/osu.Game.Rulesets.Mania/UI/Stage.cs index 8c703e7a8a..94910bb410 100644 --- a/osu.Game.Rulesets.Mania/UI/Stage.cs +++ b/osu.Game.Rulesets.Mania/UI/Stage.cs @@ -147,7 +147,7 @@ namespace osu.Game.Rulesets.Mania.UI public override bool Remove(DrawableHitObject h) => Columns.ElementAt(((ManiaHitObject)h.HitObject).Column - firstColumnIndex).Remove(h); - public void Add(BarLine barline) => base.Add(new DrawableBarLine(barline)); + public void Add(BarLine barLine) => base.Add(new DrawableBarLine(barLine)); internal void OnNewResult(DrawableHitObject judgedObject, JudgementResult result) { diff --git a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs index 3709cd3a7d..09759aa118 100644 --- a/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs +++ b/osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders/Components/PathControlPointPiece.cs @@ -250,7 +250,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components switch (pathType) { case PathType.Catmull: - return colours.Seafoam; + return colours.SeaFoam; case PathType.Bezier: return colours.Pink; diff --git a/osu.Game.Rulesets.Osu/Mods/OsuModSpunOut.cs b/osu.Game.Rulesets.Osu/Mods/OsuModSpunOut.cs index 31474e8fbb..098c639949 100644 --- a/osu.Game.Rulesets.Osu/Mods/OsuModSpunOut.cs +++ b/osu.Game.Rulesets.Osu/Mods/OsuModSpunOut.cs @@ -16,7 +16,7 @@ namespace osu.Game.Rulesets.Osu.Mods { public override string Name => "Spun Out"; public override string Acronym => "SO"; - public override IconUsage? Icon => OsuIcon.ModSpunout; + public override IconUsage? Icon => OsuIcon.ModSpunOut; public override ModType Type => ModType.Automation; public override string Description => @"Spinners will be automatically completed."; public override double ScoreMultiplier => 0.9; diff --git a/osu.Game.Rulesets.Taiko.Tests/Skinning/TestSceneDrawableBarLine.cs b/osu.Game.Rulesets.Taiko.Tests/Skinning/TestSceneDrawableBarLine.cs index 269a855219..16c4148d15 100644 --- a/osu.Game.Rulesets.Taiko.Tests/Skinning/TestSceneDrawableBarLine.cs +++ b/osu.Game.Rulesets.Taiko.Tests/Skinning/TestSceneDrawableBarLine.cs @@ -83,7 +83,7 @@ namespace osu.Game.Rulesets.Taiko.Tests.Skinning private BarLine createBarLineAtCurrentTime(bool major = false) { - var barline = new BarLine + var barLine = new BarLine { Major = major, StartTime = Time.Current + 2000, @@ -92,9 +92,9 @@ namespace osu.Game.Rulesets.Taiko.Tests.Skinning var cpi = new ControlPointInfo(); cpi.Add(0, new TimingControlPoint { BeatLength = 500 }); - barline.ApplyDefaults(cpi, new BeatmapDifficulty()); + barLine.ApplyDefaults(cpi, new BeatmapDifficulty()); - return barline; + return barLine; } } } diff --git a/osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmap.cs b/osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmap.cs index 16a0726c8c..41fe63a553 100644 --- a/osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmap.cs +++ b/osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmap.cs @@ -13,7 +13,7 @@ namespace osu.Game.Rulesets.Taiko.Beatmaps public override IEnumerable GetStatistics() { int hits = HitObjects.Count(s => s is Hit); - int drumrolls = HitObjects.Count(s => s is DrumRoll); + int drumRolls = HitObjects.Count(s => s is DrumRoll); int swells = HitObjects.Count(s => s is Swell); return new[] @@ -28,7 +28,7 @@ namespace osu.Game.Rulesets.Taiko.Beatmaps { Name = @"Drumroll Count", CreateIcon = () => new BeatmapStatisticIcon(BeatmapStatisticsIconType.Sliders), - Content = drumrolls.ToString(), + Content = drumRolls.ToString(), }, new BeatmapStatistic { diff --git a/osu.Game.Tests/Editing/Checks/CheckMutedObjectsTest.cs b/osu.Game.Tests/Editing/Checks/CheckMutedObjectsTest.cs index 4ab6e5cef6..91d9a8753c 100644 --- a/osu.Game.Tests/Editing/Checks/CheckMutedObjectsTest.cs +++ b/osu.Game.Tests/Editing/Checks/CheckMutedObjectsTest.cs @@ -40,80 +40,80 @@ namespace osu.Game.Tests.Editing.Checks [Test] public void TestNormalControlPointVolume() { - var hitcircle = new HitCircle + var hitCircle = new HitCircle { StartTime = 0, Samples = new List { new HitSampleInfo(HitSampleInfo.HIT_NORMAL) } }; - hitcircle.ApplyDefaults(cpi, new BeatmapDifficulty()); + hitCircle.ApplyDefaults(cpi, new BeatmapDifficulty()); - assertOk(new List { hitcircle }); + assertOk(new List { hitCircle }); } [Test] public void TestLowControlPointVolume() { - var hitcircle = new HitCircle + var hitCircle = new HitCircle { StartTime = 1000, Samples = new List { new HitSampleInfo(HitSampleInfo.HIT_NORMAL) } }; - hitcircle.ApplyDefaults(cpi, new BeatmapDifficulty()); + hitCircle.ApplyDefaults(cpi, new BeatmapDifficulty()); - assertLowVolume(new List { hitcircle }); + assertLowVolume(new List { hitCircle }); } [Test] public void TestMutedControlPointVolume() { - var hitcircle = new HitCircle + var hitCircle = new HitCircle { StartTime = 2000, Samples = new List { new HitSampleInfo(HitSampleInfo.HIT_NORMAL) } }; - hitcircle.ApplyDefaults(cpi, new BeatmapDifficulty()); + hitCircle.ApplyDefaults(cpi, new BeatmapDifficulty()); - assertMuted(new List { hitcircle }); + assertMuted(new List { hitCircle }); } [Test] public void TestNormalSampleVolume() { // The sample volume should take precedence over the control point volume. - var hitcircle = new HitCircle + var hitCircle = new HitCircle { StartTime = 2000, Samples = new List { new HitSampleInfo(HitSampleInfo.HIT_NORMAL, volume: volume_regular) } }; - hitcircle.ApplyDefaults(cpi, new BeatmapDifficulty()); + hitCircle.ApplyDefaults(cpi, new BeatmapDifficulty()); - assertOk(new List { hitcircle }); + assertOk(new List { hitCircle }); } [Test] public void TestLowSampleVolume() { - var hitcircle = new HitCircle + var hitCircle = new HitCircle { StartTime = 2000, Samples = new List { new HitSampleInfo(HitSampleInfo.HIT_NORMAL, volume: volume_low) } }; - hitcircle.ApplyDefaults(cpi, new BeatmapDifficulty()); + hitCircle.ApplyDefaults(cpi, new BeatmapDifficulty()); - assertLowVolume(new List { hitcircle }); + assertLowVolume(new List { hitCircle }); } [Test] public void TestMutedSampleVolume() { - var hitcircle = new HitCircle + var hitCircle = new HitCircle { StartTime = 0, Samples = new List { new HitSampleInfo(HitSampleInfo.HIT_NORMAL, volume: volume_muted) } }; - hitcircle.ApplyDefaults(cpi, new BeatmapDifficulty()); + hitCircle.ApplyDefaults(cpi, new BeatmapDifficulty()); - assertMuted(new List { hitcircle }); + assertMuted(new List { hitCircle }); } [Test] diff --git a/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs b/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs index 0d0931f871..3cb1ea85a9 100644 --- a/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs +++ b/osu.Game.Tests/Visual/Navigation/TestScenePresentBeatmap.cs @@ -20,30 +20,30 @@ namespace osu.Game.Tests.Visual.Navigation public void TestFromMainMenu() { var firstImport = importBeatmap(1); - var secondimport = importBeatmap(3); + var secondImport = importBeatmap(3); presentAndConfirm(firstImport); returnToMenu(); - presentAndConfirm(secondimport); + presentAndConfirm(secondImport); returnToMenu(); presentSecondDifficultyAndConfirm(firstImport, 1); returnToMenu(); - presentSecondDifficultyAndConfirm(secondimport, 3); + presentSecondDifficultyAndConfirm(secondImport, 3); } [Test] public void TestFromMainMenuDifferentRuleset() { var firstImport = importBeatmap(1); - var secondimport = importBeatmap(3, new ManiaRuleset().RulesetInfo); + var secondImport = importBeatmap(3, new ManiaRuleset().RulesetInfo); presentAndConfirm(firstImport); returnToMenu(); - presentAndConfirm(secondimport); + presentAndConfirm(secondImport); returnToMenu(); presentSecondDifficultyAndConfirm(firstImport, 1); returnToMenu(); - presentSecondDifficultyAndConfirm(secondimport, 3); + presentSecondDifficultyAndConfirm(secondImport, 3); } [Test] @@ -52,17 +52,17 @@ namespace osu.Game.Tests.Visual.Navigation var firstImport = importBeatmap(1); presentAndConfirm(firstImport); - var secondimport = importBeatmap(3); - presentAndConfirm(secondimport); + var secondImport = importBeatmap(3); + presentAndConfirm(secondImport); // Test presenting same beatmap more than once - presentAndConfirm(secondimport); + presentAndConfirm(secondImport); presentSecondDifficultyAndConfirm(firstImport, 1); - presentSecondDifficultyAndConfirm(secondimport, 3); + presentSecondDifficultyAndConfirm(secondImport, 3); // Test presenting same beatmap more than once - presentSecondDifficultyAndConfirm(secondimport, 3); + presentSecondDifficultyAndConfirm(secondImport, 3); } [Test] @@ -71,11 +71,11 @@ namespace osu.Game.Tests.Visual.Navigation var firstImport = importBeatmap(1); presentAndConfirm(firstImport); - var secondimport = importBeatmap(3, new ManiaRuleset().RulesetInfo); - presentAndConfirm(secondimport); + var secondImport = importBeatmap(3, new ManiaRuleset().RulesetInfo); + presentAndConfirm(secondImport); presentSecondDifficultyAndConfirm(firstImport, 1); - presentSecondDifficultyAndConfirm(secondimport, 3); + presentSecondDifficultyAndConfirm(secondImport, 3); } private void returnToMenu() diff --git a/osu.Game.Tests/Visual/Navigation/TestScenePresentScore.cs b/osu.Game.Tests/Visual/Navigation/TestScenePresentScore.cs index 1653247570..7ee593de00 100644 --- a/osu.Game.Tests/Visual/Navigation/TestScenePresentScore.cs +++ b/osu.Game.Tests/Visual/Navigation/TestScenePresentScore.cs @@ -65,11 +65,11 @@ namespace osu.Game.Tests.Visual.Navigation public void TestFromMainMenu([Values] ScorePresentType type) { var firstImport = importScore(1); - var secondimport = importScore(3); + var secondImport = importScore(3); presentAndConfirm(firstImport, type); returnToMenu(); - presentAndConfirm(secondimport, type); + presentAndConfirm(secondImport, type); returnToMenu(); returnToMenu(); } @@ -78,11 +78,11 @@ namespace osu.Game.Tests.Visual.Navigation public void TestFromMainMenuDifferentRuleset([Values] ScorePresentType type) { var firstImport = importScore(1); - var secondimport = importScore(3, new ManiaRuleset().RulesetInfo); + var secondImport = importScore(3, new ManiaRuleset().RulesetInfo); presentAndConfirm(firstImport, type); returnToMenu(); - presentAndConfirm(secondimport, type); + presentAndConfirm(secondImport, type); returnToMenu(); returnToMenu(); } @@ -93,8 +93,8 @@ namespace osu.Game.Tests.Visual.Navigation var firstImport = importScore(1); presentAndConfirm(firstImport, type); - var secondimport = importScore(3); - presentAndConfirm(secondimport, type); + var secondImport = importScore(3); + presentAndConfirm(secondImport, type); } [Test] @@ -103,8 +103,8 @@ namespace osu.Game.Tests.Visual.Navigation var firstImport = importScore(1); presentAndConfirm(firstImport, type); - var secondimport = importScore(3, new ManiaRuleset().RulesetInfo); - presentAndConfirm(secondimport, type); + var secondImport = importScore(3, new ManiaRuleset().RulesetInfo); + presentAndConfirm(secondImport, type); } private void returnToMenu() diff --git a/osu.Game.Tests/Visual/Online/TestSceneKudosuHistory.cs b/osu.Game.Tests/Visual/Online/TestSceneKudosuHistory.cs index 2231139856..8bf2ef34f2 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneKudosuHistory.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneKudosuHistory.cs @@ -44,7 +44,7 @@ namespace osu.Game.Tests.Visual.Online [BackgroundDependencyLoader] private void load(OsuColour colours) { - background.Colour = colours.GreySeafoam; + background.Colour = colours.GreySeaFoam; } private readonly IEnumerable items = new[] diff --git a/osu.Game.Tests/Visual/Online/TestScenePlayHistorySubsection.cs b/osu.Game.Tests/Visual/Online/TestScenePlayHistorySubsection.cs index fecc1af03c..a96fde6c20 100644 --- a/osu.Game.Tests/Visual/Online/TestScenePlayHistorySubsection.cs +++ b/osu.Game.Tests/Visual/Online/TestScenePlayHistorySubsection.cs @@ -87,7 +87,7 @@ namespace osu.Game.Tests.Visual.Online { AddStep("Load user", () => user.Value = user_with_filled_values); AddAssert("Section is visible", () => section.Alpha == 1); - AddAssert("Array length is the same", () => user_with_filled_values.MonthlyPlaycounts.Length == getChartValuesLength()); + AddAssert("Array length is the same", () => user_with_filled_values.MonthlyPlayCounts.Length == getChartValuesLength()); } [Test] @@ -108,13 +108,13 @@ namespace osu.Game.Tests.Visual.Online private static readonly APIUser user_with_empty_values = new APIUser { Id = 2, - MonthlyPlaycounts = Array.Empty() + MonthlyPlayCounts = Array.Empty() }; private static readonly APIUser user_with_one_value = new APIUser { Id = 3, - MonthlyPlaycounts = new[] + MonthlyPlayCounts = new[] { new APIUserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 100 } } @@ -123,7 +123,7 @@ namespace osu.Game.Tests.Visual.Online private static readonly APIUser user_with_two_values = new APIUser { Id = 4, - MonthlyPlaycounts = new[] + MonthlyPlayCounts = new[] { new APIUserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 1 }, new APIUserHistoryCount { Date = new DateTime(2010, 6, 1), Count = 2 } @@ -133,7 +133,7 @@ namespace osu.Game.Tests.Visual.Online private static readonly APIUser user_with_constant_values = new APIUser { Id = 5, - MonthlyPlaycounts = new[] + MonthlyPlayCounts = new[] { new APIUserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 5 }, new APIUserHistoryCount { Date = new DateTime(2010, 6, 1), Count = 5 }, @@ -144,7 +144,7 @@ namespace osu.Game.Tests.Visual.Online private static readonly APIUser user_with_zero_values = new APIUser { Id = 6, - MonthlyPlaycounts = new[] + MonthlyPlayCounts = new[] { new APIUserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 0 }, new APIUserHistoryCount { Date = new DateTime(2010, 6, 1), Count = 0 }, @@ -155,7 +155,7 @@ namespace osu.Game.Tests.Visual.Online private static readonly APIUser user_with_filled_values = new APIUser { Id = 7, - MonthlyPlaycounts = new[] + MonthlyPlayCounts = new[] { new APIUserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 1000 }, new APIUserHistoryCount { Date = new DateTime(2010, 6, 1), Count = 20 }, @@ -170,7 +170,7 @@ namespace osu.Game.Tests.Visual.Online private static readonly APIUser user_with_missing_values = new APIUser { Id = 8, - MonthlyPlaycounts = new[] + MonthlyPlayCounts = new[] { new APIUserHistoryCount { Date = new DateTime(2020, 1, 1), Count = 100 }, new APIUserHistoryCount { Date = new DateTime(2020, 7, 1), Count = 200 } diff --git a/osu.Game.Tests/Visual/Online/TestSceneStandAloneChatDisplay.cs b/osu.Game.Tests/Visual/Online/TestSceneStandAloneChatDisplay.cs index b7bce012ce..779d72190d 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneStandAloneChatDisplay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneStandAloneChatDisplay.cs @@ -309,8 +309,8 @@ namespace osu.Game.Tests.Visual.Online private class TestStandAloneChatDisplay : StandAloneChatDisplay { - public TestStandAloneChatDisplay(bool textbox = false) - : base(textbox) + public TestStandAloneChatDisplay(bool textBox = false) + : base(textBox) { } diff --git a/osu.Game.Tests/Visual/Settings/TestSceneRestoreDefaultValueButton.cs b/osu.Game.Tests/Visual/Settings/TestSceneRestoreDefaultValueButton.cs index 3eb7a77600..0c46fa439a 100644 --- a/osu.Game.Tests/Visual/Settings/TestSceneRestoreDefaultValueButton.cs +++ b/osu.Game.Tests/Visual/Settings/TestSceneRestoreDefaultValueButton.cs @@ -39,7 +39,7 @@ namespace osu.Game.Tests.Visual.Settings new Box { RelativeSizeAxes = Axes.Both, - Colour = colours.GreySeafoam + Colour = colours.GreySeaFoam }, restoreDefaultValueButton = new RestoreDefaultValueButton { diff --git a/osu.Game.Tests/Visual/Settings/TestSceneSettingsSource.cs b/osu.Game.Tests/Visual/Settings/TestSceneSettingsSource.cs index fc81d9792e..ffaa038930 100644 --- a/osu.Game.Tests/Visual/Settings/TestSceneSettingsSource.cs +++ b/osu.Game.Tests/Visual/Settings/TestSceneSettingsSource.cs @@ -61,7 +61,7 @@ namespace osu.Game.Tests.Visual.Settings }; [SettingSource("Sample number textbox", "Textbox number entry", SettingControlType = typeof(SettingsNumberBox))] - public Bindable IntTextboxBindable { get; } = new Bindable + public Bindable IntTextBoxBindable { get; } = new Bindable { Default = null, Value = null diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOnScreenDisplay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOnScreenDisplay.cs index 493e2f54e5..544581082e 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneOnScreenDisplay.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOnScreenDisplay.cs @@ -29,10 +29,10 @@ namespace osu.Game.Tests.Visual.UserInterface AddStep("Display toast with lengthy text", () => osd.Display(new LengthyToast())); AddAssert("Toast width is greater than 240", () => osd.Child.Width > 240); - AddRepeatStep("Change toggle (no bind)", () => config.ToggleSetting(TestConfigSetting.ToggleSettingNoKeybind), 2); - AddRepeatStep("Change toggle (with bind)", () => config.ToggleSetting(TestConfigSetting.ToggleSettingWithKeybind), 2); - AddRepeatStep("Change enum (no bind)", () => config.IncrementEnumSetting(TestConfigSetting.EnumSettingNoKeybind), 3); - AddRepeatStep("Change enum (with bind)", () => config.IncrementEnumSetting(TestConfigSetting.EnumSettingWithKeybind), 3); + AddRepeatStep("Change toggle (no bind)", () => config.ToggleSetting(TestConfigSetting.ToggleSettingNoKeyBind), 2); + AddRepeatStep("Change toggle (with bind)", () => config.ToggleSetting(TestConfigSetting.ToggleSettingWithKeyBind), 2); + AddRepeatStep("Change enum (no bind)", () => config.IncrementEnumSetting(TestConfigSetting.EnumSettingNoKeyBind), 3); + AddRepeatStep("Change enum (with bind)", () => config.IncrementEnumSetting(TestConfigSetting.EnumSettingWithKeyBind), 3); } private class TestConfigManager : ConfigManager @@ -44,10 +44,10 @@ namespace osu.Game.Tests.Visual.UserInterface protected override void InitialiseDefaults() { - SetDefault(TestConfigSetting.ToggleSettingNoKeybind, false); - SetDefault(TestConfigSetting.EnumSettingNoKeybind, EnumSetting.Setting1); - SetDefault(TestConfigSetting.ToggleSettingWithKeybind, false); - SetDefault(TestConfigSetting.EnumSettingWithKeybind, EnumSetting.Setting1); + SetDefault(TestConfigSetting.ToggleSettingNoKeyBind, false); + SetDefault(TestConfigSetting.EnumSettingNoKeyBind, EnumSetting.Setting1); + SetDefault(TestConfigSetting.ToggleSettingWithKeyBind, false); + SetDefault(TestConfigSetting.EnumSettingWithKeyBind, EnumSetting.Setting1); base.InitialiseDefaults(); } @@ -64,10 +64,10 @@ namespace osu.Game.Tests.Visual.UserInterface public override TrackedSettings CreateTrackedSettings() => new TrackedSettings { - new TrackedSetting(TestConfigSetting.ToggleSettingNoKeybind, b => new SettingDescription(b, "toggle setting with no keybind", b ? "enabled" : "disabled")), - new TrackedSetting(TestConfigSetting.EnumSettingNoKeybind, v => new SettingDescription(v, "enum setting with no keybind", v.ToString())), - new TrackedSetting(TestConfigSetting.ToggleSettingWithKeybind, b => new SettingDescription(b, "toggle setting with keybind", b ? "enabled" : "disabled", "fake keybind")), - new TrackedSetting(TestConfigSetting.EnumSettingWithKeybind, v => new SettingDescription(v, "enum setting with keybind", v.ToString(), "fake keybind")), + new TrackedSetting(TestConfigSetting.ToggleSettingNoKeyBind, b => new SettingDescription(b, "toggle setting with no keybind", b ? "enabled" : "disabled")), + new TrackedSetting(TestConfigSetting.EnumSettingNoKeyBind, v => new SettingDescription(v, "enum setting with no keybind", v.ToString())), + new TrackedSetting(TestConfigSetting.ToggleSettingWithKeyBind, b => new SettingDescription(b, "toggle setting with keybind", b ? "enabled" : "disabled", "fake keybind")), + new TrackedSetting(TestConfigSetting.EnumSettingWithKeyBind, v => new SettingDescription(v, "enum setting with keybind", v.ToString(), "fake keybind")), }; protected override void PerformLoad() @@ -79,10 +79,10 @@ namespace osu.Game.Tests.Visual.UserInterface private enum TestConfigSetting { - ToggleSettingNoKeybind, - EnumSettingNoKeybind, - ToggleSettingWithKeybind, - EnumSettingWithKeybind + ToggleSettingNoKeyBind, + EnumSettingNoKeyBind, + ToggleSettingWithKeyBind, + EnumSettingWithKeyBind } private enum EnumSetting diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOsuTextBox.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOsuTextBox.cs index fc1866cdf3..353f84c546 100644 --- a/osu.Game.Tests/Visual/UserInterface/TestSceneOsuTextBox.cs +++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOsuTextBox.cs @@ -62,6 +62,6 @@ namespace osu.Game.Tests.Visual.UserInterface } private void clearTextboxes(IEnumerable textBoxes) => AddStep("clear textbox", () => textBoxes.ForEach(textBox => textBox.Text = null)); - private void expectedValue(IEnumerable textBoxes, string value) => AddAssert("expected textbox value", () => textBoxes.All(textbox => textbox.Text == value)); + private void expectedValue(IEnumerable textBoxes, string value) => AddAssert("expected textbox value", () => textBoxes.All(textBox => textBox.Text == value)); } } diff --git a/osu.Game.Tests/Visual/UserInterface/ThemeComparisonTestScene.cs b/osu.Game.Tests/Visual/UserInterface/ThemeComparisonTestScene.cs index db1c90f287..7986f14d1d 100644 --- a/osu.Game.Tests/Visual/UserInterface/ThemeComparisonTestScene.cs +++ b/osu.Game.Tests/Visual/UserInterface/ThemeComparisonTestScene.cs @@ -27,7 +27,7 @@ namespace osu.Game.Tests.Visual.UserInterface new Box { RelativeSizeAxes = Axes.Both, - Colour = colours.GreySeafoam + Colour = colours.GreySeaFoam }, CreateContent() }); diff --git a/osu.Game.Tournament/Screens/Drawings/Components/ScrollingTeamContainer.cs b/osu.Game.Tournament/Screens/Drawings/Components/ScrollingTeamContainer.cs index c7060bd538..6fec74f95b 100644 --- a/osu.Game.Tournament/Screens/Drawings/Components/ScrollingTeamContainer.cs +++ b/osu.Game.Tournament/Screens/Drawings/Components/ScrollingTeamContainer.cs @@ -85,14 +85,14 @@ namespace osu.Game.Tournament.Screens.Drawings.Components private ScrollState scrollState; - private void setScrollState(ScrollState newstate) + private void setScrollState(ScrollState newState) { - if (scrollState == newstate) + if (scrollState == newState) return; delayedStateChangeDelegate?.Cancel(); - switch (scrollState = newstate) + switch (scrollState = newState) { case ScrollState.Scrolling: resetSelected(); diff --git a/osu.Game.Tournament/Screens/Setup/StablePathSelectScreen.cs b/osu.Game.Tournament/Screens/Setup/StablePathSelectScreen.cs index 5a1ceecd01..fb9ca46c2d 100644 --- a/osu.Game.Tournament/Screens/Setup/StablePathSelectScreen.cs +++ b/osu.Game.Tournament/Screens/Setup/StablePathSelectScreen.cs @@ -50,7 +50,7 @@ namespace osu.Game.Tournament.Screens.Setup { new Box { - Colour = colours.GreySeafoamDark, + Colour = colours.GreySeaFoamDark, RelativeSizeAxes = Axes.Both, }, new GridContainer diff --git a/osu.Game/Beatmaps/Drawables/BeatmapSetOnlineStatusPill.cs b/osu.Game/Beatmaps/Drawables/BeatmapSetOnlineStatusPill.cs index 6345085069..19026638ba 100644 --- a/osu.Game/Beatmaps/Drawables/BeatmapSetOnlineStatusPill.cs +++ b/osu.Game/Beatmaps/Drawables/BeatmapSetOnlineStatusPill.cs @@ -94,9 +94,9 @@ namespace osu.Game.Beatmaps.Drawables if (colourProvider != null) statusText.Colour = status == BeatmapOnlineStatus.Graveyard ? colourProvider.Background1 : colourProvider.Background3; else - statusText.Colour = status == BeatmapOnlineStatus.Graveyard ? colours.GreySeafoamLight : Color4.Black; + statusText.Colour = status == BeatmapOnlineStatus.Graveyard ? colours.GreySeaFoamLight : Color4.Black; - background.Colour = OsuColour.ForBeatmapSetOnlineStatus(Status) ?? colourProvider?.Light1 ?? colours.GreySeafoamLighter; + background.Colour = OsuColour.ForBeatmapSetOnlineStatus(Status) ?? colourProvider?.Light1 ?? colours.GreySeaFoamLighter; } } } diff --git a/osu.Game/Collections/DrawableCollectionListItem.cs b/osu.Game/Collections/DrawableCollectionListItem.cs index e2ec25337e..909595bd1c 100644 --- a/osu.Game/Collections/DrawableCollectionListItem.cs +++ b/osu.Game/Collections/DrawableCollectionListItem.cs @@ -146,8 +146,8 @@ namespace osu.Game.Collections [BackgroundDependencyLoader] private void load(OsuColour colours) { - BackgroundUnfocused = colours.GreySeafoamDarker.Darken(0.5f); - BackgroundFocused = colours.GreySeafoam; + BackgroundUnfocused = colours.GreySeaFoamDarker.Darken(0.5f); + BackgroundFocused = colours.GreySeaFoam; } } diff --git a/osu.Game/Collections/ManageCollectionsDialog.cs b/osu.Game/Collections/ManageCollectionsDialog.cs index 95fbfa0f86..cb350bca33 100644 --- a/osu.Game/Collections/ManageCollectionsDialog.cs +++ b/osu.Game/Collections/ManageCollectionsDialog.cs @@ -46,7 +46,7 @@ namespace osu.Game.Collections { new Box { - Colour = colours.GreySeafoamDark, + Colour = colours.GreySeaFoamDark, RelativeSizeAxes = Axes.Both, }, new Container @@ -82,7 +82,7 @@ namespace osu.Game.Collections Anchor = Anchor.CentreRight, Origin = Anchor.CentreRight, Icon = FontAwesome.Solid.Times, - Colour = colours.GreySeafoamDarker, + Colour = colours.GreySeaFoamDarker, Scale = new Vector2(0.8f), X = -10, Action = () => State.Value = Visibility.Hidden @@ -100,7 +100,7 @@ namespace osu.Game.Collections new Box { RelativeSizeAxes = Axes.Both, - Colour = colours.GreySeafoamDarker + Colour = colours.GreySeaFoamDarker }, new DrawableCollectionList { diff --git a/osu.Game/Graphics/DateTooltip.cs b/osu.Game/Graphics/DateTooltip.cs index d5768b259a..2dca8719e9 100644 --- a/osu.Game/Graphics/DateTooltip.cs +++ b/osu.Game/Graphics/DateTooltip.cs @@ -56,7 +56,7 @@ namespace osu.Game.Graphics [BackgroundDependencyLoader] private void load(OsuColour colours) { - background.Colour = colours.GreySeafoamDarker; + background.Colour = colours.GreySeaFoamDarker; timeText.Colour = colours.BlueLighter; } diff --git a/osu.Game/Graphics/OsuColour.cs b/osu.Game/Graphics/OsuColour.cs index 69dfd3a7a1..f63bd53549 100644 --- a/osu.Game/Graphics/OsuColour.cs +++ b/osu.Game/Graphics/OsuColour.cs @@ -212,12 +212,12 @@ namespace osu.Game.Graphics public readonly Color4 GreySkyDark = Color4Extensions.FromHex(@"303d47"); public readonly Color4 GreySkyDarker = Color4Extensions.FromHex(@"21272c"); - public readonly Color4 Seafoam = Color4Extensions.FromHex(@"05ffa2"); - public readonly Color4 GreySeafoamLighter = Color4Extensions.FromHex(@"9ebab1"); - public readonly Color4 GreySeafoamLight = Color4Extensions.FromHex(@"4d7365"); - public readonly Color4 GreySeafoam = Color4Extensions.FromHex(@"33413c"); - public readonly Color4 GreySeafoamDark = Color4Extensions.FromHex(@"2c3532"); - public readonly Color4 GreySeafoamDarker = Color4Extensions.FromHex(@"1e2422"); + public readonly Color4 SeaFoam = Color4Extensions.FromHex(@"05ffa2"); + public readonly Color4 GreySeaFoamLighter = Color4Extensions.FromHex(@"9ebab1"); + public readonly Color4 GreySeaFoamLight = Color4Extensions.FromHex(@"4d7365"); + public readonly Color4 GreySeaFoam = Color4Extensions.FromHex(@"33413c"); + public readonly Color4 GreySeaFoamDark = Color4Extensions.FromHex(@"2c3532"); + public readonly Color4 GreySeaFoamDarker = Color4Extensions.FromHex(@"1e2422"); public readonly Color4 Cyan = Color4Extensions.FromHex(@"05f4fd"); public readonly Color4 GreyCyanLighter = Color4Extensions.FromHex(@"77b1b3"); diff --git a/osu.Game/Graphics/OsuIcon.cs b/osu.Game/Graphics/OsuIcon.cs index 982e9dacab..e8267edab0 100644 --- a/osu.Game/Graphics/OsuIcon.cs +++ b/osu.Game/Graphics/OsuIcon.cs @@ -39,10 +39,10 @@ namespace osu.Game.Graphics public static IconUsage ListSearch => Get(0xe032); //osu! playstyles - public static IconUsage PlaystyleTablet => Get(0xe02a); - public static IconUsage PlaystyleMouse => Get(0xe029); - public static IconUsage PlaystyleKeyboard => Get(0xe02b); - public static IconUsage PlaystyleTouch => Get(0xe02c); + public static IconUsage PlayStyleTablet => Get(0xe02a); + public static IconUsage PlayStyleMouse => Get(0xe029); + public static IconUsage PlayStyleKeyboard => Get(0xe02b); + public static IconUsage PlayStyleTouch => Get(0xe02c); // osu! difficulties public static IconUsage EasyOsu => Get(0xe015); @@ -77,17 +77,17 @@ namespace osu.Game.Graphics public static IconUsage ModAutopilot => Get(0xe03a); public static IconUsage ModAuto => Get(0xe03b); public static IconUsage ModCinema => Get(0xe03c); - public static IconUsage ModDoubletime => Get(0xe03d); + public static IconUsage ModDoubleTime => Get(0xe03d); public static IconUsage ModEasy => Get(0xe03e); public static IconUsage ModFlashlight => Get(0xe03f); public static IconUsage ModHalftime => Get(0xe040); - public static IconUsage ModHardrock => Get(0xe041); + public static IconUsage ModHardRock => Get(0xe041); public static IconUsage ModHidden => Get(0xe042); public static IconUsage ModNightcore => Get(0xe043); - public static IconUsage ModNofail => Get(0xe044); + public static IconUsage ModNoFail => Get(0xe044); public static IconUsage ModRelax => Get(0xe045); - public static IconUsage ModSpunout => Get(0xe046); - public static IconUsage ModSuddendeath => Get(0xe047); + public static IconUsage ModSpunOut => Get(0xe046); + public static IconUsage ModSuddenDeath => Get(0xe047); public static IconUsage ModTarget => Get(0xe048); public static IconUsage ModBg => Get(0xe04a); } diff --git a/osu.Game/Graphics/UserInterfaceV2/OsuDirectorySelectorDirectory.cs b/osu.Game/Graphics/UserInterfaceV2/OsuDirectorySelectorDirectory.cs index 618c7dabfa..ce2e7794a9 100644 --- a/osu.Game/Graphics/UserInterfaceV2/OsuDirectorySelectorDirectory.cs +++ b/osu.Game/Graphics/UserInterfaceV2/OsuDirectorySelectorDirectory.cs @@ -54,7 +54,7 @@ namespace osu.Game.Graphics.UserInterfaceV2 InternalChild = new Box { - Colour = colours.GreySeafoamDarker, + Colour = colours.GreySeaFoamDarker, RelativeSizeAxes = Axes.Both, }; } diff --git a/osu.Game/Graphics/UserInterfaceV2/OsuHSVColourPicker.cs b/osu.Game/Graphics/UserInterfaceV2/OsuHSVColourPicker.cs index 30e38e8938..0189b30aad 100644 --- a/osu.Game/Graphics/UserInterfaceV2/OsuHSVColourPicker.cs +++ b/osu.Game/Graphics/UserInterfaceV2/OsuHSVColourPicker.cs @@ -26,7 +26,7 @@ namespace osu.Game.Graphics.UserInterfaceV2 [BackgroundDependencyLoader(true)] private void load([CanBeNull] OverlayColourProvider colourProvider, OsuColour osuColour) { - Background.Colour = colourProvider?.Dark5 ?? osuColour.GreySeafoamDark; + Background.Colour = colourProvider?.Dark5 ?? osuColour.GreySeaFoamDark; Content.Padding = new MarginPadding(spacing); Content.Spacing = new Vector2(0, spacing); diff --git a/osu.Game/Graphics/UserInterfaceV2/OsuHexColourPicker.cs b/osu.Game/Graphics/UserInterfaceV2/OsuHexColourPicker.cs index 331a1b67c9..5368a800bc 100644 --- a/osu.Game/Graphics/UserInterfaceV2/OsuHexColourPicker.cs +++ b/osu.Game/Graphics/UserInterfaceV2/OsuHexColourPicker.cs @@ -23,7 +23,7 @@ namespace osu.Game.Graphics.UserInterfaceV2 [BackgroundDependencyLoader(true)] private void load([CanBeNull] OverlayColourProvider overlayColourProvider, OsuColour osuColour) { - Background.Colour = overlayColourProvider?.Dark6 ?? osuColour.GreySeafoamDarker; + Background.Colour = overlayColourProvider?.Dark6 ?? osuColour.GreySeaFoamDarker; } protected override TextBox CreateHexCodeTextBox() => new OsuTextBox(); diff --git a/osu.Game/Graphics/UserInterfaceV2/OsuPopover.cs b/osu.Game/Graphics/UserInterfaceV2/OsuPopover.cs index d1857dd174..085541b3ef 100644 --- a/osu.Game/Graphics/UserInterfaceV2/OsuPopover.cs +++ b/osu.Game/Graphics/UserInterfaceV2/OsuPopover.cs @@ -39,7 +39,7 @@ namespace osu.Game.Graphics.UserInterfaceV2 [BackgroundDependencyLoader(true)] private void load([CanBeNull] OverlayColourProvider colourProvider, OsuColour colours) { - Background.Colour = Arrow.Colour = colourProvider?.Background4 ?? colours.GreySeafoamDarker; + Background.Colour = Arrow.Colour = colourProvider?.Background4 ?? colours.GreySeaFoamDarker; } protected override Drawable CreateArrow() => Empty(); diff --git a/osu.Game/Online/API/Requests/Responses/APIUser.cs b/osu.Game/Online/API/Requests/Responses/APIUser.cs index 50f5d67796..ed40e9b498 100644 --- a/osu.Game/Online/API/Requests/Responses/APIUser.cs +++ b/osu.Game/Online/API/Requests/Responses/APIUser.cs @@ -152,10 +152,10 @@ namespace osu.Game.Online.API.Requests.Responses public int ScoresRecentCount; [JsonProperty(@"beatmap_playcounts_count")] - public int BeatmapPlaycountsCount; + public int BeatmapPlayCountsCount; [JsonProperty] - private string[] playstyle + private string[] playStyle { set => PlayStyles = value?.Select(str => Enum.Parse(typeof(APIPlayStyle), str, true)).Cast().ToArray(); } @@ -213,7 +213,7 @@ namespace osu.Game.Online.API.Requests.Responses public APIUserAchievement[] Achievements; [JsonProperty("monthly_playcounts")] - public APIUserHistoryCount[] MonthlyPlaycounts; + public APIUserHistoryCount[] MonthlyPlayCounts; [JsonProperty("replays_watched_counts")] public APIUserHistoryCount[] ReplaysWatchedCounts; diff --git a/osu.Game/Online/Chat/StandAloneChatDisplay.cs b/osu.Game/Online/Chat/StandAloneChatDisplay.cs index 1f8d05fcd1..81fd5ad98c 100644 --- a/osu.Game/Online/Chat/StandAloneChatDisplay.cs +++ b/osu.Game/Online/Chat/StandAloneChatDisplay.cs @@ -23,27 +23,27 @@ namespace osu.Game.Online.Chat { public readonly Bindable Channel = new Bindable(); - protected readonly ChatTextBox Textbox; + protected readonly ChatTextBox TextBox; protected ChannelManager ChannelManager; private StandAloneDrawableChannel drawableChannel; - private readonly bool postingTextbox; + private readonly bool postingTextBox; protected readonly Box Background; - private const float textbox_height = 30; + private const float text_box_height = 30; /// /// Construct a new instance. /// - /// Whether a textbox for posting new messages should be displayed. - public StandAloneChatDisplay(bool postingTextbox = false) + /// Whether a textbox for posting new messages should be displayed. + public StandAloneChatDisplay(bool postingTextBox = false) { const float corner_radius = 10; - this.postingTextbox = postingTextbox; + this.postingTextBox = postingTextBox; CornerRadius = corner_radius; Masking = true; @@ -57,12 +57,12 @@ namespace osu.Game.Online.Chat }, }; - if (postingTextbox) + if (postingTextBox) { - AddInternal(Textbox = new ChatTextBox + AddInternal(TextBox = new ChatTextBox { RelativeSizeAxes = Axes.X, - Height = textbox_height, + Height = text_box_height, PlaceholderText = "type your message", CornerRadius = corner_radius, ReleaseFocusOnCommit = false, @@ -71,7 +71,7 @@ namespace osu.Game.Online.Chat Origin = Anchor.BottomLeft, }); - Textbox.OnCommit += postMessage; + TextBox.OnCommit += postMessage; } Channel.BindValueChanged(channelChanged); @@ -86,9 +86,9 @@ namespace osu.Game.Online.Chat protected virtual StandAloneDrawableChannel CreateDrawableChannel(Channel channel) => new StandAloneDrawableChannel(channel); - private void postMessage(TextBox sender, bool newtext) + private void postMessage(TextBox sender, bool newText) { - string text = Textbox.Text.Trim(); + string text = TextBox.Text.Trim(); if (string.IsNullOrWhiteSpace(text)) return; @@ -98,7 +98,7 @@ namespace osu.Game.Online.Chat else ChannelManager?.PostMessage(text, target: Channel.Value); - Textbox.Text = string.Empty; + TextBox.Text = string.Empty; } protected virtual ChatLine CreateMessage(Message message) => new StandAloneMessage(message); @@ -111,7 +111,7 @@ namespace osu.Game.Online.Chat drawableChannel = CreateDrawableChannel(e.NewValue); drawableChannel.CreateChatLineAction = CreateMessage; - drawableChannel.Padding = new MarginPadding { Bottom = postingTextbox ? textbox_height : 0 }; + drawableChannel.Padding = new MarginPadding { Bottom = postingTextBox ? text_box_height : 0 }; AddInternal(drawableChannel); } diff --git a/osu.Game/Online/Rooms/PlaylistItem.cs b/osu.Game/Online/Rooms/PlaylistItem.cs index b8700fd067..231e214ab9 100644 --- a/osu.Game/Online/Rooms/PlaylistItem.cs +++ b/osu.Game/Online/Rooms/PlaylistItem.cs @@ -113,7 +113,7 @@ namespace osu.Game.Online.Rooms } public bool ShouldSerializeID() => false; - public bool ShouldSerializeapiBeatmap() => false; + public bool ShouldSerializeAPIBeatmap() => false; public bool Equals(PlaylistItem other) => ID == other?.ID diff --git a/osu.Game/Overlays/AccountCreation/ScreenEntry.cs b/osu.Game/Overlays/AccountCreation/ScreenEntry.cs index 2ba8fc3ae2..a11b234cb1 100644 --- a/osu.Game/Overlays/AccountCreation/ScreenEntry.cs +++ b/osu.Game/Overlays/AccountCreation/ScreenEntry.cs @@ -152,12 +152,12 @@ namespace osu.Game.Overlays.AccountCreation loadingLayer.Hide(); if (host?.OnScreenKeyboardOverlapsGameWindow != true) - focusNextTextbox(); + focusNextTextBox(); } private void performRegistration() { - if (focusNextTextbox()) + if (focusNextTextBox()) { registerShake.Shake(); return; @@ -209,19 +209,19 @@ namespace osu.Game.Overlays.AccountCreation }); } - private bool focusNextTextbox() + private bool focusNextTextBox() { - var nextTextbox = nextUnfilledTextbox(); + var nextTextBox = nextUnfilledTextBox(); - if (nextTextbox != null) + if (nextTextBox != null) { - Schedule(() => GetContainingInputManager().ChangeFocus(nextTextbox)); + Schedule(() => GetContainingInputManager().ChangeFocus(nextTextBox)); return true; } return false; } - private OsuTextBox nextUnfilledTextbox() => textboxes.FirstOrDefault(t => string.IsNullOrEmpty(t.Text)); + private OsuTextBox nextUnfilledTextBox() => textboxes.FirstOrDefault(t => string.IsNullOrEmpty(t.Text)); } } diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index 72473d5750..fde9d28b43 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -38,7 +38,7 @@ namespace osu.Game.Overlays public LocalisableString Title => ChatStrings.HeaderTitle; public LocalisableString Description => ChatStrings.HeaderDescription; - private const float textbox_height = 60; + private const float text_box_height = 60; private const float channel_selection_min_height = 0.3f; [Resolved] @@ -50,7 +50,7 @@ namespace osu.Game.Overlays private LoadingSpinner loading; - private FocusedTextBox textbox; + private FocusedTextBox textBox; private const int transition_length = 500; @@ -133,7 +133,7 @@ namespace osu.Game.Overlays RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { - Bottom = textbox_height + Bottom = text_box_height }, }, new Container @@ -141,7 +141,7 @@ namespace osu.Game.Overlays Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, RelativeSizeAxes = Axes.X, - Height = textbox_height, + Height = text_box_height, Padding = new MarginPadding { Top = padding * 2, @@ -151,7 +151,7 @@ namespace osu.Game.Overlays }, Children = new Drawable[] { - textbox = new FocusedTextBox + textBox = new FocusedTextBox { RelativeSizeAxes = Axes.Both, Height = 1, @@ -197,7 +197,7 @@ namespace osu.Game.Overlays }, }; - textbox.OnCommit += postMessage; + textBox.OnCommit += postMessage; ChannelTabControl.Current.ValueChanged += current => channelManager.CurrentChannel.Value = current.NewValue; ChannelTabControl.ChannelSelectorActive.ValueChanged += active => ChannelSelectionOverlay.State.Value = active.NewValue ? Visibility.Visible : Visibility.Hidden; @@ -208,12 +208,12 @@ namespace osu.Game.Overlays if (state.NewValue == Visibility.Visible) { - textbox.HoldFocus = false; + textBox.HoldFocus = false; if (1f - ChatHeight.Value < channel_selection_min_height) this.TransformBindableTo(ChatHeight, 1f - channel_selection_min_height, 800, Easing.OutQuint); } else - textbox.HoldFocus = true; + textBox.HoldFocus = true; }; ChannelSelectionOverlay.OnRequestJoin = channel => channelManager.JoinChannel(channel); @@ -253,7 +253,7 @@ namespace osu.Game.Overlays { if (e.NewValue == null) { - textbox.Current.Disabled = true; + textBox.Current.Disabled = true; currentChannelContainer.Clear(false); ChannelSelectionOverlay.Show(); return; @@ -262,7 +262,7 @@ namespace osu.Game.Overlays if (e.NewValue is ChannelSelectorTabItem.ChannelSelectorTabChannel) return; - textbox.Current.Disabled = e.NewValue.ReadOnly; + textBox.Current.Disabled = e.NewValue.ReadOnly; if (ChannelTabControl.Current.Value != e.NewValue) Scheduler.Add(() => ChannelTabControl.Current.Value = e.NewValue); @@ -402,7 +402,7 @@ namespace osu.Game.Overlays protected override void OnFocus(FocusEvent e) { // this is necessary as textbox is masked away and therefore can't get focus :( - textbox.TakeFocus(); + textBox.TakeFocus(); base.OnFocus(e); } @@ -411,7 +411,7 @@ namespace osu.Game.Overlays this.MoveToY(0, transition_length, Easing.OutQuint); this.FadeIn(transition_length, Easing.OutQuint); - textbox.HoldFocus = true; + textBox.HoldFocus = true; base.PopIn(); } @@ -423,7 +423,7 @@ namespace osu.Game.Overlays ChannelSelectionOverlay.Hide(); - textbox.HoldFocus = false; + textBox.HoldFocus = false; base.PopOut(); } @@ -481,9 +481,9 @@ namespace osu.Game.Overlays } } - private void postMessage(TextBox textbox, bool newText) + private void postMessage(TextBox textBox, bool newText) { - string text = textbox.Text.Trim(); + string text = textBox.Text.Trim(); if (string.IsNullOrWhiteSpace(text)) return; @@ -493,7 +493,7 @@ namespace osu.Game.Overlays else channelManager.PostMessage(text); - textbox.Text = string.Empty; + textBox.Text = string.Empty; } private class TabsArea : Container diff --git a/osu.Game/Overlays/Profile/Header/Components/PreviousUsernames.cs b/osu.Game/Overlays/Profile/Header/Components/PreviousUsernames.cs index 229bbaef83..49744e885a 100644 --- a/osu.Game/Overlays/Profile/Header/Components/PreviousUsernames.cs +++ b/osu.Game/Overlays/Profile/Header/Components/PreviousUsernames.cs @@ -98,7 +98,7 @@ namespace osu.Game.Overlays.Profile.Header.Components [BackgroundDependencyLoader] private void load(OsuColour colours) { - background.Colour = colours.GreySeafoamDarker; + background.Colour = colours.GreySeaFoamDarker; } protected override void LoadComplete() diff --git a/osu.Game/Overlays/Profile/Sections/Historical/PaginatedMostPlayedBeatmapContainer.cs b/osu.Game/Overlays/Profile/Sections/Historical/PaginatedMostPlayedBeatmapContainer.cs index c943d129cc..ad1192a13a 100644 --- a/osu.Game/Overlays/Profile/Sections/Historical/PaginatedMostPlayedBeatmapContainer.cs +++ b/osu.Game/Overlays/Profile/Sections/Historical/PaginatedMostPlayedBeatmapContainer.cs @@ -28,7 +28,7 @@ namespace osu.Game.Overlays.Profile.Sections.Historical ItemsContainer.Direction = FillDirection.Vertical; } - protected override int GetCount(APIUser user) => user.BeatmapPlaycountsCount; + protected override int GetCount(APIUser user) => user.BeatmapPlayCountsCount; protected override APIRequest> CreateRequest() => new GetUserMostPlayedBeatmapsRequest(User.Value.Id, VisiblePages++, ItemsPerPage); diff --git a/osu.Game/Overlays/Profile/Sections/Historical/PlayHistorySubsection.cs b/osu.Game/Overlays/Profile/Sections/Historical/PlayHistorySubsection.cs index bca88318d5..51d704a6b0 100644 --- a/osu.Game/Overlays/Profile/Sections/Historical/PlayHistorySubsection.cs +++ b/osu.Game/Overlays/Profile/Sections/Historical/PlayHistorySubsection.cs @@ -17,6 +17,6 @@ namespace osu.Game.Overlays.Profile.Sections.Historical { } - protected override APIUserHistoryCount[] GetValues(APIUser user) => user?.MonthlyPlaycounts; + protected override APIUserHistoryCount[] GetValues(APIUser user) => user?.MonthlyPlayCounts; } } diff --git a/osu.Game/Overlays/Profile/Sections/Kudosu/DrawableKudosuHistoryItem.cs b/osu.Game/Overlays/Profile/Sections/Kudosu/DrawableKudosuHistoryItem.cs index d0cfe9fa54..ce05beffd1 100644 --- a/osu.Game/Overlays/Profile/Sections/Kudosu/DrawableKudosuHistoryItem.cs +++ b/osu.Game/Overlays/Profile/Sections/Kudosu/DrawableKudosuHistoryItem.cs @@ -50,7 +50,7 @@ namespace osu.Game.Overlays.Profile.Sections.Kudosu [BackgroundDependencyLoader] private void load() { - date.Colour = colours.GreySeafoamLighter; + date.Colour = colours.GreySeaFoamLighter; var formattedSource = MessageFormatter.FormatText(getString(historyItem)); linkFlowContainer.AddLinks(formattedSource.Text, formattedSource.Links); } diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/DirectorySelectScreen.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/DirectorySelectScreen.cs index 0814e3c824..98bc8d88be 100644 --- a/osu.Game/Overlays/Settings/Sections/Maintenance/DirectorySelectScreen.cs +++ b/osu.Game/Overlays/Settings/Sections/Maintenance/DirectorySelectScreen.cs @@ -63,7 +63,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance new Box { RelativeSizeAxes = Axes.Both, - Colour = colours.GreySeafoamDark + Colour = colours.GreySeaFoamDark }, new GridContainer { diff --git a/osu.Game/Rulesets/Mods/ModBlockFail.cs b/osu.Game/Rulesets/Mods/ModBlockFail.cs index 1fde5abad4..8a9b0cddc8 100644 --- a/osu.Game/Rulesets/Mods/ModBlockFail.cs +++ b/osu.Game/Rulesets/Mods/ModBlockFail.cs @@ -25,7 +25,7 @@ namespace osu.Game.Rulesets.Mods public void ApplyToHUD(HUDOverlay overlay) { - overlay.ShowHealthbar.BindTo(showHealthBar); + overlay.ShowHealthBar.BindTo(showHealthBar); } } } diff --git a/osu.Game/Rulesets/Mods/ModDoubleTime.cs b/osu.Game/Rulesets/Mods/ModDoubleTime.cs index d12f48e973..d4c4dce0f5 100644 --- a/osu.Game/Rulesets/Mods/ModDoubleTime.cs +++ b/osu.Game/Rulesets/Mods/ModDoubleTime.cs @@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Double Time"; public override string Acronym => "DT"; - public override IconUsage? Icon => OsuIcon.ModDoubletime; + public override IconUsage? Icon => OsuIcon.ModDoubleTime; public override ModType Type => ModType.DifficultyIncrease; public override string Description => "Zoooooooooom..."; diff --git a/osu.Game/Rulesets/Mods/ModHardRock.cs b/osu.Game/Rulesets/Mods/ModHardRock.cs index da838f9ea6..0a5348a8cf 100644 --- a/osu.Game/Rulesets/Mods/ModHardRock.cs +++ b/osu.Game/Rulesets/Mods/ModHardRock.cs @@ -12,7 +12,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Hard Rock"; public override string Acronym => "HR"; - public override IconUsage? Icon => OsuIcon.ModHardrock; + public override IconUsage? Icon => OsuIcon.ModHardRock; public override ModType Type => ModType.DifficultyIncrease; public override string Description => "Everything just got a bit harder..."; public override Type[] IncompatibleMods => new[] { typeof(ModEasy), typeof(ModDifficultyAdjust) }; diff --git a/osu.Game/Rulesets/Mods/ModNoFail.cs b/osu.Game/Rulesets/Mods/ModNoFail.cs index abf67c2e2d..5ebae17228 100644 --- a/osu.Game/Rulesets/Mods/ModNoFail.cs +++ b/osu.Game/Rulesets/Mods/ModNoFail.cs @@ -11,7 +11,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "No Fail"; public override string Acronym => "NF"; - public override IconUsage? Icon => OsuIcon.ModNofail; + public override IconUsage? Icon => OsuIcon.ModNoFail; public override ModType Type => ModType.DifficultyReduction; public override string Description => "You can't fail, no matter what."; public override double ScoreMultiplier => 0.5; diff --git a/osu.Game/Rulesets/Mods/ModSuddenDeath.cs b/osu.Game/Rulesets/Mods/ModSuddenDeath.cs index 1abd353d20..c8b835f78a 100644 --- a/osu.Game/Rulesets/Mods/ModSuddenDeath.cs +++ b/osu.Game/Rulesets/Mods/ModSuddenDeath.cs @@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Mods { public override string Name => "Sudden Death"; public override string Acronym => "SD"; - public override IconUsage? Icon => OsuIcon.ModSuddendeath; + public override IconUsage? Icon => OsuIcon.ModSuddenDeath; public override ModType Type => ModType.DifficultyIncrease; public override string Description => "Miss and fail."; public override double ScoreMultiplier => 1; diff --git a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs index cf19d64080..b091803406 100644 --- a/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs +++ b/osu.Game/Rulesets/Objects/Legacy/ConvertHitObjectParser.cs @@ -188,12 +188,12 @@ namespace osu.Game.Rulesets.Objects.Legacy string[] split = str.Split(':'); var bank = (LegacySampleBank)Parsing.ParseInt(split[0]); - var addbank = (LegacySampleBank)Parsing.ParseInt(split[1]); + var addBank = (LegacySampleBank)Parsing.ParseInt(split[1]); string stringBank = bank.ToString().ToLowerInvariant(); if (stringBank == @"none") stringBank = null; - string stringAddBank = addbank.ToString().ToLowerInvariant(); + string stringAddBank = addBank.ToString().ToLowerInvariant(); if (stringAddBank == @"none") stringAddBank = null; diff --git a/osu.Game/Rulesets/Objects/SliderPath.cs b/osu.Game/Rulesets/Objects/SliderPath.cs index 0dec0655b9..e0c62fe359 100644 --- a/osu.Game/Rulesets/Objects/SliderPath.cs +++ b/osu.Game/Rulesets/Objects/SliderPath.cs @@ -250,13 +250,13 @@ namespace osu.Game.Rulesets.Objects if (subControlPoints.Length != 3) break; - List subpath = PathApproximator.ApproximateCircularArc(subControlPoints); + List subPath = PathApproximator.ApproximateCircularArc(subControlPoints); // If for some reason a circular arc could not be fit to the 3 given points, fall back to a numerically stable bezier approximation. - if (subpath.Count == 0) + if (subPath.Count == 0) break; - return subpath; + return subPath; case PathType.Catmull: return PathApproximator.ApproximateCatmull(subControlPoints); diff --git a/osu.Game/Screens/Edit/Setup/SetupScreenHeaderBackground.cs b/osu.Game/Screens/Edit/Setup/SetupScreenHeaderBackground.cs index 7304323004..17fb97d41f 100644 --- a/osu.Game/Screens/Edit/Setup/SetupScreenHeaderBackground.cs +++ b/osu.Game/Screens/Edit/Setup/SetupScreenHeaderBackground.cs @@ -56,7 +56,7 @@ namespace osu.Game.Screens.Edit.Setup { new Box { - Colour = colours.GreySeafoamDarker, + Colour = colours.GreySeaFoamDarker, RelativeSizeAxes = Axes.Both, }, new OsuTextFlowContainer(t => t.Font = OsuFont.Default.With(size: 24)) diff --git a/osu.Game/Screens/Edit/Timing/IndeterminateSliderWithTextBoxInput.cs b/osu.Game/Screens/Edit/Timing/IndeterminateSliderWithTextBoxInput.cs index 14b8c4c9de..e25d83cfb0 100644 --- a/osu.Game/Screens/Edit/Timing/IndeterminateSliderWithTextBoxInput.cs +++ b/osu.Game/Screens/Edit/Timing/IndeterminateSliderWithTextBoxInput.cs @@ -41,7 +41,7 @@ namespace osu.Game.Screens.Edit.Timing } private readonly SettingsSlider slider; - private readonly LabelledTextBox textbox; + private readonly LabelledTextBox textBox; /// /// Creates an . @@ -66,7 +66,7 @@ namespace osu.Game.Screens.Edit.Timing Spacing = new Vector2(0, 5), Children = new Drawable[] { - textbox = new LabelledTextBox + textBox = new LabelledTextBox { Label = labelText, }, @@ -80,7 +80,7 @@ namespace osu.Game.Screens.Edit.Timing }, }; - textbox.OnCommit += (t, isNew) => + textBox.OnCommit += (t, isNew) => { if (!isNew) return; @@ -110,13 +110,13 @@ namespace osu.Game.Screens.Edit.Timing // use the value from the slider to ensure that any precision/min/max set on it via the initial indeterminate value have been applied correctly. decimal decimalValue = slider.Current.Value.ToDecimal(NumberFormatInfo.InvariantInfo); - textbox.Text = decimalValue.ToString($@"N{FormatUtils.FindPrecision(decimalValue)}"); - textbox.PlaceholderText = string.Empty; + textBox.Text = decimalValue.ToString($@"N{FormatUtils.FindPrecision(decimalValue)}"); + textBox.PlaceholderText = string.Empty; } else { - textbox.Text = null; - textbox.PlaceholderText = "(multiple)"; + textBox.Text = null; + textBox.PlaceholderText = "(multiple)"; } } } diff --git a/osu.Game/Screens/Edit/Timing/SliderWithTextBoxInput.cs b/osu.Game/Screens/Edit/Timing/SliderWithTextBoxInput.cs index 6c004a7c8b..8738d36bf4 100644 --- a/osu.Game/Screens/Edit/Timing/SliderWithTextBoxInput.cs +++ b/osu.Game/Screens/Edit/Timing/SliderWithTextBoxInput.cs @@ -19,7 +19,7 @@ namespace osu.Game.Screens.Edit.Timing public SliderWithTextBoxInput(LocalisableString labelText) { - LabelledTextBox textbox; + LabelledTextBox textBox; RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; @@ -33,7 +33,7 @@ namespace osu.Game.Screens.Edit.Timing Direction = FillDirection.Vertical, Children = new Drawable[] { - textbox = new LabelledTextBox + textBox = new LabelledTextBox { Label = labelText, }, @@ -46,7 +46,7 @@ namespace osu.Game.Screens.Edit.Timing }, }; - textbox.OnCommit += (t, isNew) => + textBox.OnCommit += (t, isNew) => { if (!isNew) return; @@ -66,7 +66,7 @@ namespace osu.Game.Screens.Edit.Timing Current.BindValueChanged(val => { - textbox.Text = val.NewValue.ToString(); + textBox.Text = val.NewValue.ToString(); }, true); } diff --git a/osu.Game/Screens/Import/FileImportScreen.cs b/osu.Game/Screens/Import/FileImportScreen.cs index 7e1d55b3e2..c32e230e11 100644 --- a/osu.Game/Screens/Import/FileImportScreen.cs +++ b/osu.Game/Screens/Import/FileImportScreen.cs @@ -54,7 +54,7 @@ namespace osu.Game.Screens.Import { new Box { - Colour = colours.GreySeafoamDark, + Colour = colours.GreySeaFoamDark, RelativeSizeAxes = Axes.Both, }, fileSelector = new OsuFileSelector(validFileExtensions: game.HandledExtensions.ToArray()) @@ -72,7 +72,7 @@ namespace osu.Game.Screens.Import { new Box { - Colour = colours.GreySeafoamDarker, + Colour = colours.GreySeaFoamDarker, RelativeSizeAxes = Axes.Both }, new Container diff --git a/osu.Game/Screens/OnlinePlay/Lounge/DrawableLoungeRoom.cs b/osu.Game/Screens/OnlinePlay/Lounge/DrawableLoungeRoom.cs index 0d2b2249ef..3fd56ece58 100644 --- a/osu.Game/Screens/OnlinePlay/Lounge/DrawableLoungeRoom.cs +++ b/osu.Game/Screens/OnlinePlay/Lounge/DrawableLoungeRoom.cs @@ -193,7 +193,7 @@ namespace osu.Game.Screens.OnlinePlay.Lounge this.room = room; } - private OsuPasswordTextBox passwordTextbox; + private OsuPasswordTextBox passwordTextBox; private TriangleButton joinButton; private OsuSpriteText errorText; private Sample sampleJoinFail; @@ -218,7 +218,7 @@ namespace osu.Game.Screens.OnlinePlay.Lounge AutoSizeAxes = Axes.Both, Children = new Drawable[] { - passwordTextbox = new OsuPasswordTextBox + passwordTextBox = new OsuPasswordTextBox { Width = 200, PlaceholderText = "password", @@ -246,21 +246,21 @@ namespace osu.Game.Screens.OnlinePlay.Lounge { base.LoadComplete(); - Schedule(() => GetContainingInputManager().ChangeFocus(passwordTextbox)); - passwordTextbox.OnCommit += (_, __) => performJoin(); + Schedule(() => GetContainingInputManager().ChangeFocus(passwordTextBox)); + passwordTextBox.OnCommit += (_, __) => performJoin(); } private void performJoin() { - lounge?.Join(room, passwordTextbox.Text, null, joinFailed); - GetContainingInputManager().TriggerFocusContention(passwordTextbox); + lounge?.Join(room, passwordTextBox.Text, null, joinFailed); + GetContainingInputManager().TriggerFocusContention(passwordTextBox); } private void joinFailed(string error) => Schedule(() => { - passwordTextbox.Text = string.Empty; + passwordTextBox.Text = string.Empty; - GetContainingInputManager().ChangeFocus(passwordTextbox); + GetContainingInputManager().ChangeFocus(passwordTextBox); errorText.Text = error; errorText diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/GameplayChatDisplay.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/GameplayChatDisplay.cs index 0e73f65f8b..53fd111c27 100644 --- a/osu.Game/Screens/OnlinePlay/Multiplayer/GameplayChatDisplay.cs +++ b/osu.Game/Screens/OnlinePlay/Multiplayer/GameplayChatDisplay.cs @@ -24,7 +24,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer public Bindable Expanded = new Bindable(); - private readonly Bindable expandedFromTextboxFocus = new Bindable(); + private readonly Bindable expandedFromTextBoxFocus = new Bindable(); private const float height = 100; @@ -37,7 +37,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer Background.Alpha = 0.2f; - Textbox.FocusLost = () => expandedFromTextboxFocus.Value = false; + TextBox.FocusLost = () => expandedFromTextBoxFocus.Value = false; } protected override bool OnHover(HoverEvent e) => true; // use UI mouse cursor. @@ -51,14 +51,14 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer { // for now let's never hold focus. this avoid misdirected gameplay keys entering chat. // note that this is done within this callback as it triggers an un-focus as well. - Textbox.HoldFocus = false; + TextBox.HoldFocus = false; // only hold focus (after sending a message) during breaks - Textbox.ReleaseFocusOnCommit = playing.NewValue; + TextBox.ReleaseFocusOnCommit = playing.NewValue; }, true); Expanded.BindValueChanged(_ => updateExpandedState(), true); - expandedFromTextboxFocus.BindValueChanged(focus => + expandedFromTextBoxFocus.BindValueChanged(focus => { if (focus.NewValue) updateExpandedState(); @@ -76,25 +76,25 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer switch (e.Action) { case GlobalAction.Back: - if (Textbox.HasFocus) + if (TextBox.HasFocus) { - Schedule(() => Textbox.KillFocus()); + Schedule(() => TextBox.KillFocus()); return true; } break; case GlobalAction.ToggleChatFocus: - if (Textbox.HasFocus) + if (TextBox.HasFocus) { - Schedule(() => Textbox.KillFocus()); + Schedule(() => TextBox.KillFocus()); } else { - expandedFromTextboxFocus.Value = true; + expandedFromTextBoxFocus.Value = true; // schedule required to ensure the textbox has become present from above bindable update. - Schedule(() => Textbox.TakeFocus()); + Schedule(() => TextBox.TakeFocus()); } return true; @@ -109,7 +109,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer private void updateExpandedState() { - if (Expanded.Value || expandedFromTextboxFocus.Value) + if (Expanded.Value || expandedFromTextBoxFocus.Value) { this.FadeIn(300, Easing.OutQuint); this.ResizeHeightTo(height, 500, Easing.OutQuint); diff --git a/osu.Game/Screens/Play/HUD/HealthDisplay.cs b/osu.Game/Screens/Play/HUD/HealthDisplay.cs index 1f0fafa636..94f1b99b37 100644 --- a/osu.Game/Screens/Play/HUD/HealthDisplay.cs +++ b/osu.Game/Screens/Play/HUD/HealthDisplay.cs @@ -17,7 +17,7 @@ namespace osu.Game.Screens.Play.HUD /// public abstract class HealthDisplay : CompositeDrawable { - private readonly Bindable showHealthbar = new Bindable(true); + private readonly Bindable showHealthBar = new Bindable(true); [Resolved] protected HealthProcessor HealthProcessor { get; private set; } @@ -43,10 +43,10 @@ namespace osu.Game.Screens.Play.HUD HealthProcessor.NewJudgement += onNewJudgement; if (hudOverlay != null) - showHealthbar.BindTo(hudOverlay.ShowHealthbar); + showHealthBar.BindTo(hudOverlay.ShowHealthBar); // this probably shouldn't be operating on `this.` - showHealthbar.BindValueChanged(healthBar => this.FadeTo(healthBar.NewValue ? 1 : 0, HUDOverlay.FADE_DURATION, HUDOverlay.FADE_EASING), true); + showHealthBar.BindValueChanged(healthBar => this.FadeTo(healthBar.NewValue ? 1 : 0, HUDOverlay.FADE_DURATION, HUDOverlay.FADE_EASING), true); } private void onNewJudgement(JudgementResult judgement) diff --git a/osu.Game/Screens/Play/HUDOverlay.cs b/osu.Game/Screens/Play/HUDOverlay.cs index b5c4433719..fdb5d418f3 100644 --- a/osu.Game/Screens/Play/HUDOverlay.cs +++ b/osu.Game/Screens/Play/HUDOverlay.cs @@ -46,7 +46,7 @@ namespace osu.Game.Screens.Play public readonly HoldForMenuButton HoldToQuit; public readonly PlayerSettingsOverlay PlayerSettingsOverlay; - public Bindable ShowHealthbar = new Bindable(true); + public Bindable ShowHealthBar = new Bindable(true); private readonly DrawableRuleset drawableRuleset; private readonly IReadOnlyList mods; @@ -258,7 +258,7 @@ namespace osu.Game.Screens.Play protected FailingLayer CreateFailingLayer() => new FailingLayer { - ShowHealth = { BindTarget = ShowHealthbar } + ShowHealth = { BindTarget = ShowHealthBar } }; protected KeyCounterDisplay CreateKeyCounter() => new KeyCounterDisplay diff --git a/osu.Game/Screens/Play/PlayerSettings/PlayerSliderBar.cs b/osu.Game/Screens/Play/PlayerSettings/PlayerSliderBar.cs index 9903a74043..57ffe16f76 100644 --- a/osu.Game/Screens/Play/PlayerSettings/PlayerSliderBar.cs +++ b/osu.Game/Screens/Play/PlayerSettings/PlayerSliderBar.cs @@ -15,12 +15,12 @@ namespace osu.Game.Screens.Play.PlayerSettings { public OsuSliderBar Bar => (OsuSliderBar)Control; - protected override Drawable CreateControl() => new Sliderbar + protected override Drawable CreateControl() => new SliderBar { RelativeSizeAxes = Axes.X }; - private class Sliderbar : OsuSliderBar + private class SliderBar : OsuSliderBar { [BackgroundDependencyLoader] private void load(OsuColour colours) From 5082b0e63f6adda82640d7be7ac944b00541e26d Mon Sep 17 00:00:00 2001 From: Joseph Madamba Date: Thu, 9 Dec 2021 21:15:38 -0800 Subject: [PATCH 11/23] Fix some identifiers using shortened naming --- .../Screens/Ladder/Components/DrawableTournamentMatch.cs | 4 ++-- osu.Game/IO/Legacy/SerializationReader.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs b/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs index 3e950310cf..5729e779c4 100644 --- a/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs +++ b/osu.Game.Tournament/Screens/Ladder/Components/DrawableTournamentMatch.cs @@ -208,10 +208,10 @@ namespace osu.Game.Tournament.Screens.Ladder.Components { if (Match.Round.Value == null) return; - int instaWinAmount = Match.Round.Value.BestOf.Value / 2; + int instantWinAmount = Match.Round.Value.BestOf.Value / 2; Match.Completed.Value = Match.Round.Value.BestOf.Value > 0 - && (Match.Team1Score.Value + Match.Team2Score.Value >= Match.Round.Value.BestOf.Value || Match.Team1Score.Value > instaWinAmount || Match.Team2Score.Value > instaWinAmount); + && (Match.Team1Score.Value + Match.Team2Score.Value >= Match.Round.Value.BestOf.Value || Match.Team1Score.Value > instantWinAmount || Match.Team2Score.Value > instantWinAmount); } protected override void LoadComplete() diff --git a/osu.Game/IO/Legacy/SerializationReader.cs b/osu.Game/IO/Legacy/SerializationReader.cs index 00f90f78e3..f7b3f33e87 100644 --- a/osu.Game/IO/Legacy/SerializationReader.cs +++ b/osu.Game/IO/Legacy/SerializationReader.cs @@ -235,9 +235,9 @@ namespace osu.Game.IO.Legacy if (typeName.Contains("System.Collections.Generic") && typeName.Contains("[[")) { - string[] splitTyps = typeName.Split('['); + string[] splitTypes = typeName.Split('['); - foreach (string typ in splitTyps) + foreach (string typ in splitTypes) { if (typ.Contains("Version")) { From 0bd928b5cdf66f20bc8abee69aad7df65a851098 Mon Sep 17 00:00:00 2001 From: Joseph Madamba Date: Mon, 27 Dec 2021 21:44:19 -0800 Subject: [PATCH 12/23] Fix incorrect naming / apply review --- .../Skinning/Default/DefaultHitExplosion.cs | 6 +++--- osu.Game.Rulesets.Mania/UI/DefaultHitExplosion.cs | 6 +++--- osu.Game/Online/API/Requests/Responses/APIUser.cs | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/osu.Game.Rulesets.Catch/Skinning/Default/DefaultHitExplosion.cs b/osu.Game.Rulesets.Catch/Skinning/Default/DefaultHitExplosion.cs index 905eb059e3..f6b3c3d665 100644 --- a/osu.Game.Rulesets.Catch/Skinning/Default/DefaultHitExplosion.cs +++ b/osu.Game.Rulesets.Catch/Skinning/Default/DefaultHitExplosion.cs @@ -90,9 +90,9 @@ namespace osu.Game.Rulesets.Catch.Skinning.Default .ResizeTo(largeFaint.Size * new Vector2(5, 1), duration, Easing.OutQuint) .FadeOut(duration * 2); - const float angle_variable = 15; // should be less than 45 - directionalGlow1.Rotation = StatelessRNG.NextSingle(-angle_variable, angle_variable, randomSeed, 4); - directionalGlow2.Rotation = StatelessRNG.NextSingle(-angle_variable, angle_variable, randomSeed, 5); + const float angle_variance = 15; // should be less than 45 + directionalGlow1.Rotation = StatelessRNG.NextSingle(-angle_variance, angle_variance, randomSeed, 4); + directionalGlow2.Rotation = StatelessRNG.NextSingle(-angle_variance, angle_variance, randomSeed, 5); this.FadeInFromZero(50).Then().FadeOut(duration, Easing.Out); } diff --git a/osu.Game.Rulesets.Mania/UI/DefaultHitExplosion.cs b/osu.Game.Rulesets.Mania/UI/DefaultHitExplosion.cs index 99dcce2da4..562d7b04c4 100644 --- a/osu.Game.Rulesets.Mania/UI/DefaultHitExplosion.cs +++ b/osu.Game.Rulesets.Mania/UI/DefaultHitExplosion.cs @@ -42,7 +42,7 @@ namespace osu.Game.Rulesets.Mania.UI [BackgroundDependencyLoader] private void load(IScrollingInfo scrollingInfo) { - const float angle_variable = 15; // should be less than 45 + const float angle_variance = 15; // should be less than 45 const float roundness = 80; const float initial_height = 10; @@ -90,7 +90,7 @@ namespace osu.Game.Rulesets.Mania.UI Masking = true, Size = new Vector2(0.01f, initial_height), Blending = BlendingParameters.Additive, - Rotation = RNG.NextSingle(-angle_variable, angle_variable), + Rotation = RNG.NextSingle(-angle_variance, angle_variance), EdgeEffect = new EdgeEffectParameters { Type = EdgeEffectType.Glow, @@ -107,7 +107,7 @@ namespace osu.Game.Rulesets.Mania.UI Masking = true, Size = new Vector2(0.01f, initial_height), Blending = BlendingParameters.Additive, - Rotation = RNG.NextSingle(-angle_variable, angle_variable), + Rotation = RNG.NextSingle(-angle_variance, angle_variance), EdgeEffect = new EdgeEffectParameters { Type = EdgeEffectType.Glow, diff --git a/osu.Game/Online/API/Requests/Responses/APIUser.cs b/osu.Game/Online/API/Requests/Responses/APIUser.cs index ed40e9b498..e4a432b074 100644 --- a/osu.Game/Online/API/Requests/Responses/APIUser.cs +++ b/osu.Game/Online/API/Requests/Responses/APIUser.cs @@ -154,7 +154,7 @@ namespace osu.Game.Online.API.Requests.Responses [JsonProperty(@"beatmap_playcounts_count")] public int BeatmapPlayCountsCount; - [JsonProperty] + [JsonProperty(@"playstyle")] private string[] playStyle { set => PlayStyles = value?.Select(str => Enum.Parse(typeof(APIPlayStyle), str, true)).Cast().ToArray(); From bc39c2a877500e744051c41c3f93432815453250 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Tue, 28 Dec 2021 08:31:27 +0100 Subject: [PATCH 13/23] Revert incorrect property rename --- osu.Game/Online/Rooms/PlaylistItem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Online/Rooms/PlaylistItem.cs b/osu.Game/Online/Rooms/PlaylistItem.cs index 231e214ab9..b8700fd067 100644 --- a/osu.Game/Online/Rooms/PlaylistItem.cs +++ b/osu.Game/Online/Rooms/PlaylistItem.cs @@ -113,7 +113,7 @@ namespace osu.Game.Online.Rooms } public bool ShouldSerializeID() => false; - public bool ShouldSerializeAPIBeatmap() => false; + public bool ShouldSerializeapiBeatmap() => false; public bool Equals(PlaylistItem other) => ID == other?.ID From 63e0492725db617ec50dfbf5baa6428715bb3621 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Tue, 28 Dec 2021 08:37:16 +0100 Subject: [PATCH 14/23] Mark `ShouldSerialize()` methods as implicitly used --- .../Difficulty/OsuDifficultyAttributes.cs | 9 ++++++++- osu.Game/Online/Rooms/PlaylistItem.cs | 13 +++++++++++++ osu.Game/Online/Rooms/Room.cs | 14 ++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Osu/Difficulty/OsuDifficultyAttributes.cs b/osu.Game.Rulesets.Osu/Difficulty/OsuDifficultyAttributes.cs index 128ff772fd..126a9b0183 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/OsuDifficultyAttributes.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/OsuDifficultyAttributes.cs @@ -70,8 +70,15 @@ namespace osu.Game.Rulesets.Osu.Difficulty SliderFactor = values[ATTRIB_ID_SLIDER_FACTOR]; } - // Used implicitly by Newtonsoft.Json to not serialize flashlight property in some cases. + #region Newtonsoft.Json implicit ShouldSerialize() methods + + // The properties in this region are used implicitly by Newtonsoft.Json to not serialise certain fields in some cases. + // They rely on being named exactly the same as the corresponding fields (casing included) and as such should NOT be renamed + // unless the fields are also renamed. + [UsedImplicitly] public bool ShouldSerializeFlashlightRating() => Mods.Any(m => m is ModFlashlight); + + #endregion } } diff --git a/osu.Game/Online/Rooms/PlaylistItem.cs b/osu.Game/Online/Rooms/PlaylistItem.cs index b8700fd067..83a70c405b 100644 --- a/osu.Game/Online/Rooms/PlaylistItem.cs +++ b/osu.Game/Online/Rooms/PlaylistItem.cs @@ -4,6 +4,7 @@ using System; using System.Diagnostics; using System.Linq; +using JetBrains.Annotations; using Newtonsoft.Json; using osu.Framework.Bindables; using osu.Game.Beatmaps; @@ -112,9 +113,21 @@ namespace osu.Game.Online.Rooms } } + #region Newtonsoft.Json implicit ShouldSerialize() methods + + // The properties in this region are used implicitly by Newtonsoft.Json to not serialise certain fields in some cases. + // They rely on being named exactly the same as the corresponding fields (casing included) and as such should NOT be renamed + // unless the fields are also renamed. + + [UsedImplicitly] public bool ShouldSerializeID() => false; + + // ReSharper disable once IdentifierTypo + [UsedImplicitly] public bool ShouldSerializeapiBeatmap() => false; + #endregion + public bool Equals(PlaylistItem other) => ID == other?.ID && BeatmapID == other.BeatmapID diff --git a/osu.Game/Online/Rooms/Room.cs b/osu.Game/Online/Rooms/Room.cs index c87411c3c0..bbe854f2dd 100644 --- a/osu.Game/Online/Rooms/Room.cs +++ b/osu.Game/Online/Rooms/Room.cs @@ -3,6 +3,7 @@ using System; using System.Linq; +using JetBrains.Annotations; using Newtonsoft.Json; using osu.Framework.Allocation; using osu.Framework.Bindables; @@ -211,8 +212,21 @@ namespace osu.Game.Online.Rooms Playlist.RemoveAll(i => i.Expired); } + #region Newtonsoft.Json implicit ShouldSerialize() methods + + // The properties in this region are used implicitly by Newtonsoft.Json to not serialise certain fields in some cases. + // They rely on being named exactly the same as the corresponding fields (casing included) and as such should NOT be renamed + // unless the fields are also renamed. + + [UsedImplicitly] public bool ShouldSerializeRoomID() => false; + + [UsedImplicitly] public bool ShouldSerializeHost() => false; + + [UsedImplicitly] public bool ShouldSerializeEndDate() => false; + + #endregion } } From d74e438f0a02fdb5705d33e92e4fdc24d58fba40 Mon Sep 17 00:00:00 2001 From: Berkan Diler Date: Tue, 28 Dec 2021 15:17:18 +0100 Subject: [PATCH 15/23] Remove unused SharpRaven package reference from osu.iOS.props Seems like a leftover from #6824 --- osu.iOS.props | 1 - 1 file changed, 1 deletion(-) diff --git a/osu.iOS.props b/osu.iOS.props index cccf974d42..63dc889e3c 100644 --- a/osu.iOS.props +++ b/osu.iOS.props @@ -86,7 +86,6 @@ - From 448c6ed515572a667524792761056b13889afe70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Tue, 28 Dec 2021 15:50:43 +0100 Subject: [PATCH 16/23] Generalise `KiaiFlashingSprite` for arbitrary drawables --- .../Skinning/Legacy/KiaiFlashingDrawable.cs | 50 +++++++++++++++ .../Skinning/Legacy/KiaiFlashingSprite.cs | 61 ------------------- .../Skinning/Legacy/LegacyMainCirclePiece.cs | 7 +-- 3 files changed, 53 insertions(+), 65 deletions(-) create mode 100644 osu.Game.Rulesets.Osu/Skinning/Legacy/KiaiFlashingDrawable.cs delete mode 100644 osu.Game.Rulesets.Osu/Skinning/Legacy/KiaiFlashingSprite.cs diff --git a/osu.Game.Rulesets.Osu/Skinning/Legacy/KiaiFlashingDrawable.cs b/osu.Game.Rulesets.Osu/Skinning/Legacy/KiaiFlashingDrawable.cs new file mode 100644 index 0000000000..cd1d05c985 --- /dev/null +++ b/osu.Game.Rulesets.Osu/Skinning/Legacy/KiaiFlashingDrawable.cs @@ -0,0 +1,50 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System; +using osu.Framework.Audio.Track; +using osu.Framework.Graphics; +using osu.Game.Beatmaps.ControlPoints; +using osu.Game.Graphics.Containers; + +namespace osu.Game.Rulesets.Osu.Skinning.Legacy +{ + internal class KiaiFlashingDrawable : BeatSyncedContainer + { + private readonly Drawable flashingDrawable; + + private const float flash_opacity = 0.3f; + + public KiaiFlashingDrawable(Func creationFunc) + { + AutoSizeAxes = Axes.Both; + + Children = new[] + { + creationFunc.Invoke().With(d => + { + d.Anchor = Anchor.Centre; + d.Origin = Anchor.Centre; + }), + flashingDrawable = creationFunc.Invoke().With(d => + { + d.Anchor = Anchor.Centre; + d.Origin = Anchor.Centre; + d.Alpha = 0; + d.Blending = BlendingParameters.Additive; + }) + }; + } + + protected override void OnNewBeat(int beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, ChannelAmplitudes amplitudes) + { + if (!effectPoint.KiaiMode) + return; + + flashingDrawable + .FadeTo(flash_opacity) + .Then() + .FadeOut(timingPoint.BeatLength * 0.75f); + } + } +} diff --git a/osu.Game.Rulesets.Osu/Skinning/Legacy/KiaiFlashingSprite.cs b/osu.Game.Rulesets.Osu/Skinning/Legacy/KiaiFlashingSprite.cs deleted file mode 100644 index 4a1d69ad41..0000000000 --- a/osu.Game.Rulesets.Osu/Skinning/Legacy/KiaiFlashingSprite.cs +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using osu.Framework.Audio.Track; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Sprites; -using osu.Framework.Graphics.Textures; -using osu.Game.Beatmaps.ControlPoints; -using osu.Game.Graphics.Containers; - -namespace osu.Game.Rulesets.Osu.Skinning.Legacy -{ - internal class KiaiFlashingSprite : BeatSyncedContainer - { - private readonly Sprite mainSprite; - private readonly Sprite flashingSprite; - - public Texture Texture - { - set - { - mainSprite.Texture = value; - flashingSprite.Texture = value; - } - } - - private const float flash_opacity = 0.3f; - - public KiaiFlashingSprite() - { - AutoSizeAxes = Axes.Both; - - Children = new Drawable[] - { - mainSprite = new Sprite - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - }, - flashingSprite = new Sprite - { - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Alpha = 0, - Blending = BlendingParameters.Additive, - } - }; - } - - protected override void OnNewBeat(int beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, ChannelAmplitudes amplitudes) - { - if (!effectPoint.KiaiMode) - return; - - flashingSprite - .FadeTo(flash_opacity) - .Then() - .FadeOut(timingPoint.BeatLength * 0.75f); - } - } -} diff --git a/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyMainCirclePiece.cs b/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyMainCirclePiece.cs index d2f84dcf84..9cda85c20c 100644 --- a/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyMainCirclePiece.cs +++ b/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyMainCirclePiece.cs @@ -5,6 +5,7 @@ using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; @@ -72,9 +73,8 @@ namespace osu.Game.Rulesets.Osu.Skinning.Legacy InternalChildren = new[] { - hitCircleSprite = new KiaiFlashingSprite + hitCircleSprite = new KiaiFlashingDrawable(() => new Sprite { Texture = baseTexture }) { - Texture = baseTexture, Anchor = Anchor.Centre, Origin = Anchor.Centre, }, @@ -82,9 +82,8 @@ namespace osu.Game.Rulesets.Osu.Skinning.Legacy { Anchor = Anchor.Centre, Origin = Anchor.Centre, - Child = hitCircleOverlay = new KiaiFlashingSprite + Child = hitCircleOverlay = new KiaiFlashingDrawable(() => new Sprite { Texture = overlayTexture }) { - Texture = overlayTexture, Anchor = Anchor.Centre, Origin = Anchor.Centre, }, From b29c2bf9f317ea770d9dd60d066a3b08b914c1ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Tue, 28 Dec 2021 15:36:30 +0100 Subject: [PATCH 17/23] Add test resources for animated legacy hit circle overlay --- ...overlay@2x.png => hitcircleoverlay-0@2x.png} | Bin .../special-skin/hitcircleoverlay-1@2x.png | Bin 0 -> 40858 bytes 2 files changed, 0 insertions(+), 0 deletions(-) rename osu.Game.Rulesets.Osu.Tests/Resources/special-skin/{hitcircleoverlay@2x.png => hitcircleoverlay-0@2x.png} (100%) create mode 100755 osu.Game.Rulesets.Osu.Tests/Resources/special-skin/hitcircleoverlay-1@2x.png diff --git a/osu.Game.Rulesets.Osu.Tests/Resources/special-skin/hitcircleoverlay@2x.png b/osu.Game.Rulesets.Osu.Tests/Resources/special-skin/hitcircleoverlay-0@2x.png similarity index 100% rename from osu.Game.Rulesets.Osu.Tests/Resources/special-skin/hitcircleoverlay@2x.png rename to osu.Game.Rulesets.Osu.Tests/Resources/special-skin/hitcircleoverlay-0@2x.png diff --git a/osu.Game.Rulesets.Osu.Tests/Resources/special-skin/hitcircleoverlay-1@2x.png b/osu.Game.Rulesets.Osu.Tests/Resources/special-skin/hitcircleoverlay-1@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..3b5e886933d2f7a8803a44304c5439058ef86fa2 GIT binary patch literal 40858 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�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 U^GtX>4gf! Date: Tue, 28 Dec 2021 15:53:54 +0100 Subject: [PATCH 18/23] Add support for animated legacy hit circle overlay --- .../Skinning/Legacy/LegacyMainCirclePiece.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyMainCirclePiece.cs b/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyMainCirclePiece.cs index 9cda85c20c..c6007885be 100644 --- a/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyMainCirclePiece.cs +++ b/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyMainCirclePiece.cs @@ -69,7 +69,6 @@ namespace osu.Game.Rulesets.Osu.Skinning.Legacy // at this point, any further texture fetches should be correctly using the priority source if the base texture was retrieved using it. // the flow above handles the case where a sliderendcircle.png is retrieved from the skin, but sliderendcircleoverlay.png doesn't exist. // expected behaviour in this scenario is not showing the overlay, rather than using hitcircleoverlay.png (potentially from the default/fall-through skin). - Texture overlayTexture = getTextureWithFallback("overlay"); InternalChildren = new[] { @@ -82,7 +81,7 @@ namespace osu.Game.Rulesets.Osu.Skinning.Legacy { Anchor = Anchor.Centre, Origin = Anchor.Centre, - Child = hitCircleOverlay = new KiaiFlashingDrawable(() => new Sprite { Texture = overlayTexture }) + Child = hitCircleOverlay = new KiaiFlashingDrawable(() => getAnimationWithFallback(@"overlay", 1000 / 2d)) { Anchor = Anchor.Centre, Origin = Anchor.Centre, @@ -125,6 +124,21 @@ namespace osu.Game.Rulesets.Osu.Skinning.Legacy return tex ?? skin.GetTexture($"hitcircle{name}"); } + + Drawable getAnimationWithFallback(string name, double frameLength) + { + Drawable animation = null; + + if (!string.IsNullOrEmpty(priorityLookup)) + { + animation = skin.GetAnimation($"{priorityLookup}{name}", true, true, frameLength: frameLength); + + if (!allowFallback) + return animation; + } + + return animation ?? skin.GetAnimation($"hitcircle{name}", true, true, frameLength: frameLength); + } } protected override void LoadComplete() From 408e8d57109ed44498601f02c829d6b4faa8c05d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Dec 2021 22:21:37 +0900 Subject: [PATCH 19/23] Fix null reference causing crash in `KiaiFlashingDrawable` Can occur if there is no fallback graphics available. Previously would work as it was only setting the `Texture`. As reported in https://github.com/ppy/osu/discussions/16281. --- .../Skinning/Legacy/KiaiFlashingDrawable.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Skinning/Legacy/KiaiFlashingDrawable.cs b/osu.Game.Rulesets.Osu/Skinning/Legacy/KiaiFlashingDrawable.cs index cd1d05c985..4ee28d05b5 100644 --- a/osu.Game.Rulesets.Osu/Skinning/Legacy/KiaiFlashingDrawable.cs +++ b/osu.Game.Rulesets.Osu/Skinning/Legacy/KiaiFlashingDrawable.cs @@ -7,6 +7,8 @@ using osu.Framework.Graphics; using osu.Game.Beatmaps.ControlPoints; using osu.Game.Graphics.Containers; +#nullable enable + namespace osu.Game.Rulesets.Osu.Skinning.Legacy { internal class KiaiFlashingDrawable : BeatSyncedContainer @@ -15,18 +17,18 @@ namespace osu.Game.Rulesets.Osu.Skinning.Legacy private const float flash_opacity = 0.3f; - public KiaiFlashingDrawable(Func creationFunc) + public KiaiFlashingDrawable(Func creationFunc) { AutoSizeAxes = Axes.Both; Children = new[] { - creationFunc.Invoke().With(d => + (creationFunc.Invoke() ?? Empty()).With(d => { d.Anchor = Anchor.Centre; d.Origin = Anchor.Centre; }), - flashingDrawable = creationFunc.Invoke().With(d => + flashingDrawable = (creationFunc.Invoke() ?? Empty()).With(d => { d.Anchor = Anchor.Centre; d.Origin = Anchor.Centre; From f53a675ca3e9c04c1ba7378cbd8e1cab72e0e7a8 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Dec 2021 23:35:18 +0900 Subject: [PATCH 20/23] Fix `TestSceneMultiSpectatorLeaderboard` not waiting for user population --- .../Visual/Multiplayer/TestSceneMultiSpectatorLeaderboard.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiSpectatorLeaderboard.cs b/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiSpectatorLeaderboard.cs index a61e505970..543e6a91d0 100644 --- a/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiSpectatorLeaderboard.cs +++ b/osu.Game.Tests/Visual/Multiplayer/TestSceneMultiSpectatorLeaderboard.cs @@ -50,6 +50,7 @@ namespace osu.Game.Tests.Visual.Multiplayer }); AddUntilStep("wait for load", () => leaderboard.IsLoaded); + AddUntilStep("wait for user population", () => leaderboard.ChildrenOfType().Count() == 2); AddStep("add clock sources", () => { From e38e1bb1d7edd5a20ff401309cc1e38eb2eb199d Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Dec 2021 13:22:49 +0900 Subject: [PATCH 21/23] Enable a couple of missing async related inspections --- osu.sln.DotSettings | 2 ++ 1 file changed, 2 insertions(+) diff --git a/osu.sln.DotSettings b/osu.sln.DotSettings index 90bf4f09eb..44d75f265c 100644 --- a/osu.sln.DotSettings +++ b/osu.sln.DotSettings @@ -19,6 +19,7 @@ HINT DO_NOT_SHOW WARNING + WARNING HINT HINT WARNING @@ -231,6 +232,7 @@ HINT DO_NOT_SHOW WARNING + WARNING WARNING WARNING WARNING From 670a30b64bdf1f315898c7a931c0dccc3da7af70 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Thu, 30 Dec 2021 23:08:05 +0900 Subject: [PATCH 22/23] Remove usage of `.Result` in `ArchiveReader` --- osu.Game/IO/Archives/ArchiveReader.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/osu.Game/IO/Archives/ArchiveReader.cs b/osu.Game/IO/Archives/ArchiveReader.cs index f787534e2d..1d8da16c72 100644 --- a/osu.Game/IO/Archives/ArchiveReader.cs +++ b/osu.Game/IO/Archives/ArchiveReader.cs @@ -32,7 +32,18 @@ namespace osu.Game.IO.Archives public abstract IEnumerable Filenames { get; } - public virtual byte[] Get(string name) => GetAsync(name).Result; + public virtual byte[] Get(string name) + { + using (Stream input = GetStream(name)) + { + if (input == null) + return null; + + byte[] buffer = new byte[input.Length]; + input.Read(buffer); + return buffer; + } + } public async Task GetAsync(string name, CancellationToken cancellationToken = default) { From 04d8fd3a58f59909b5ee1800a61f41182c7d0197 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 1 Jan 2022 15:31:50 +0900 Subject: [PATCH 23/23] Improve reliability of `TestStoryboardSkipOutro` Aims to resolve failures as seen at https://github.com/peppy/osu/runs/4677353822?check_suite_focus=true. Have run quite a lot locally with no failures (while removing the skip step 100% fails). --- osu.Game.Tests/Visual/Gameplay/TestSceneStoryboardWithOutro.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Tests/Visual/Gameplay/TestSceneStoryboardWithOutro.cs b/osu.Game.Tests/Visual/Gameplay/TestSceneStoryboardWithOutro.cs index 48a97d54f7..69798dcb82 100644 --- a/osu.Game.Tests/Visual/Gameplay/TestSceneStoryboardWithOutro.cs +++ b/osu.Game.Tests/Visual/Gameplay/TestSceneStoryboardWithOutro.cs @@ -53,8 +53,8 @@ namespace osu.Game.Tests.Visual.Gameplay CreateTest(null); AddUntilStep("completion set by processor", () => Player.ScoreProcessor.HasCompleted.Value); AddStep("skip outro", () => InputManager.Key(osuTK.Input.Key.Space)); + AddAssert("player is no longer current screen", () => !Player.IsCurrentScreen()); AddUntilStep("wait for score shown", () => Player.IsScoreShown); - AddUntilStep("time less than storyboard duration", () => Player.GameplayClockContainer.GameplayClock.CurrentTime < currentStoryboardDuration); } [Test]