From db4cd51d020cc768d5131d5e1f47456d47cead94 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 24 Jan 2020 12:24:35 +0300 Subject: [PATCH 01/15] Implement OverlayColourProvider --- osu.Game/Graphics/OsuColour.cs | 51 ----------- osu.Game/Overlays/BeatmapSetOverlay.cs | 1 + osu.Game/Overlays/ChangelogOverlay.cs | 5 ++ osu.Game/Overlays/DirectOverlay.cs | 1 + osu.Game/Overlays/FullscreenOverlay.cs | 17 +++- osu.Game/Overlays/NewsOverlay.cs | 5 ++ osu.Game/Overlays/OverlayColourProvider.cs | 90 +++++++++++++++++++ osu.Game/Overlays/RankingsOverlay.cs | 1 + .../SearchableList/SearchableListOverlay.cs | 8 +- osu.Game/Overlays/SocialOverlay.cs | 1 + osu.Game/Overlays/UserProfileOverlay.cs | 5 ++ 11 files changed, 132 insertions(+), 53 deletions(-) create mode 100644 osu.Game/Overlays/OverlayColourProvider.cs diff --git a/osu.Game/Graphics/OsuColour.cs b/osu.Game/Graphics/OsuColour.cs index 53a40f5613..c8298543a1 100644 --- a/osu.Game/Graphics/OsuColour.cs +++ b/osu.Game/Graphics/OsuColour.cs @@ -3,7 +3,6 @@ using System; using osu.Game.Beatmaps; -using osuTK; using osuTK.Graphics; namespace osu.Game.Graphics @@ -78,46 +77,6 @@ namespace osu.Game.Graphics } } - public Color4 ForOverlayElement(OverlayColourScheme colourScheme, float saturation, float lightness, float opacity = 1) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, opacity)); - - // See https://github.com/ppy/osu-web/blob/4218c288292d7c810b619075471eaea8bbb8f9d8/app/helpers.php#L1463 - private static float getBaseHue(OverlayColourScheme colourScheme) - { - float hue; - - switch (colourScheme) - { - default: - throw new ArgumentException($@"{colourScheme} colour scheme does not provide a hue value in {nameof(getBaseHue)}."); - - case OverlayColourScheme.Red: - hue = 0; - break; - - case OverlayColourScheme.Pink: - hue = 333; - break; - - case OverlayColourScheme.Orange: - hue = 46; - break; - - case OverlayColourScheme.Green: - hue = 115; - break; - - case OverlayColourScheme.Purple: - hue = 255; - break; - - case OverlayColourScheme.Blue: - hue = 200; - break; - } - - return hue / 360f; - } - // See https://github.com/ppy/osu-web/blob/master/resources/assets/less/colors.less public readonly Color4 PurpleLighter = FromHex(@"eeeeff"); public readonly Color4 PurpleLight = FromHex(@"aa88ff"); @@ -220,14 +179,4 @@ namespace osu.Game.Graphics public readonly Color4 ContextMenuGray = FromHex(@"223034"); } - - public enum OverlayColourScheme - { - Red, - Pink, - Orange, - Green, - Purple, - Blue - } } diff --git a/osu.Game/Overlays/BeatmapSetOverlay.cs b/osu.Game/Overlays/BeatmapSetOverlay.cs index 50fb2782d4..e4e928df18 100644 --- a/osu.Game/Overlays/BeatmapSetOverlay.cs +++ b/osu.Game/Overlays/BeatmapSetOverlay.cs @@ -34,6 +34,7 @@ namespace osu.Game.Overlays public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => true; public BeatmapSetOverlay() + : base(OverlayColourScheme.Blue) { OsuScrollContainer scroll; Info info; diff --git a/osu.Game/Overlays/ChangelogOverlay.cs b/osu.Game/Overlays/ChangelogOverlay.cs index 15b0079277..e2186df64c 100644 --- a/osu.Game/Overlays/ChangelogOverlay.cs +++ b/osu.Game/Overlays/ChangelogOverlay.cs @@ -36,6 +36,11 @@ namespace osu.Game.Overlays private List streams; + public ChangelogOverlay() + : base(OverlayColourScheme.Purple) + { + } + [BackgroundDependencyLoader] private void load(AudioManager audio, OsuColour colour) { diff --git a/osu.Game/Overlays/DirectOverlay.cs b/osu.Game/Overlays/DirectOverlay.cs index 9daf55c796..c718ca7a1e 100644 --- a/osu.Game/Overlays/DirectOverlay.cs +++ b/osu.Game/Overlays/DirectOverlay.cs @@ -84,6 +84,7 @@ namespace osu.Game.Overlays } public DirectOverlay() + : base(OverlayColourScheme.Blue) { // osu!direct colours are not part of the standard palette diff --git a/osu.Game/Overlays/FullscreenOverlay.cs b/osu.Game/Overlays/FullscreenOverlay.cs index 0911ee84de..662188cbfd 100644 --- a/osu.Game/Overlays/FullscreenOverlay.cs +++ b/osu.Game/Overlays/FullscreenOverlay.cs @@ -18,8 +18,12 @@ namespace osu.Game.Overlays [Resolved] protected IAPIProvider API { get; private set; } - protected FullscreenOverlay() + private readonly OverlayColourScheme colourScheme; + + protected FullscreenOverlay(OverlayColourScheme colourScheme) { + this.colourScheme = colourScheme; + Waves.FirstWaveColour = OsuColour.Gray(0.4f); Waves.SecondWaveColour = OsuColour.Gray(0.3f); Waves.ThirdWaveColour = OsuColour.Gray(0.2f); @@ -41,6 +45,17 @@ namespace osu.Game.Overlays }; } + private DependencyContainer dependencies; + + protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) => + dependencies = new DependencyContainer(base.CreateChildDependencies(parent)); + + [BackgroundDependencyLoader] + private void load() + { + dependencies.Cache(new OverlayColourProvider(colourScheme)); + } + public override void Show() { if (State.Value == Visibility.Visible) diff --git a/osu.Game/Overlays/NewsOverlay.cs b/osu.Game/Overlays/NewsOverlay.cs index e7471cb21d..6dde300556 100644 --- a/osu.Game/Overlays/NewsOverlay.cs +++ b/osu.Game/Overlays/NewsOverlay.cs @@ -21,6 +21,11 @@ namespace osu.Game.Overlays public readonly Bindable Current = new Bindable(null); + public NewsOverlay() + : base(OverlayColourScheme.Purple) + { + } + [BackgroundDependencyLoader] private void load(OsuColour colours) { diff --git a/osu.Game/Overlays/OverlayColourProvider.cs b/osu.Game/Overlays/OverlayColourProvider.cs new file mode 100644 index 0000000000..1223b8d064 --- /dev/null +++ b/osu.Game/Overlays/OverlayColourProvider.cs @@ -0,0 +1,90 @@ +// 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 osuTK; +using osuTK.Graphics; + +namespace osu.Game.Overlays +{ + public class OverlayColourProvider + { + private readonly OverlayColourScheme colourScheme; + + public OverlayColourProvider(OverlayColourScheme colourScheme) + { + this.colourScheme = colourScheme; + } + + private Color4 convert(float saturation, float lightness) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, 1)); + + // See https://github.com/ppy/osu-web/blob/4218c288292d7c810b619075471eaea8bbb8f9d8/app/helpers.php#L1463 + private static float getBaseHue(OverlayColourScheme colourScheme) + { + float hue; + + switch (colourScheme) + { + default: + throw new ArgumentException($@"{colourScheme} colour scheme does not provide a hue value in {nameof(getBaseHue)}."); + + case OverlayColourScheme.Red: + hue = 0; + break; + + case OverlayColourScheme.Pink: + hue = 333; + break; + + case OverlayColourScheme.Orange: + hue = 46; + break; + + case OverlayColourScheme.Green: + hue = 115; + break; + + case OverlayColourScheme.Purple: + hue = 255; + break; + + case OverlayColourScheme.Blue: + hue = 200; + break; + } + + return hue / 360f; + } + + public Color4 Highlight1 => convert(1, 0.7f); + public Color4 Content1 => convert(0.4f, 1); + public Color4 Content2 => convert(0.4f, 0.9f); + public Color4 Link1 => convert(0.4f, 0.8f); + public Color4 Link2 => convert(0.4f, 0.75f); + public Color4 Link3 => convert(0.4f, 0.7f); + public Color4 Link4 => convert(0.4f, 0.5f); + public Color4 Dark1 => convert(0.2f, 0.35f); + public Color4 Dark2 => convert(0.2f, 0.3f); + public Color4 Dark3 => convert(0.2f, 0.25f); + public Color4 Dark4 => convert(0.2f, 0.20f); + public Color4 Dark5 => convert(0.2f, 0.15f); + public Color4 Dark6 => convert(0.2f, 0.1f); + public Color4 Foreground1 => convert(0.1f, 0.6f); + public Color4 Background1 => convert(0.1f, 0.4f); + public Color4 Background2 => convert(0.1f, 0.3f); + public Color4 Background3 => convert(0.1f, 0.25f); + public Color4 Background4 => convert(0.1f, 0.2f); + public Color4 Background5 => convert(0.1f, 0.15f); + public Color4 Background6 => convert(0.1f, 0.1f); + } + + public enum OverlayColourScheme + { + Red, + Pink, + Orange, + Green, + Purple, + Blue + } +} diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index c8874ef891..2297925e5c 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -36,6 +36,7 @@ namespace osu.Game.Overlays private IAPIProvider api { get; set; } public RankingsOverlay() + : base(OverlayColourScheme.Green) { Children = new Drawable[] { diff --git a/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs b/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs index 5975e94ffc..0783c64c20 100644 --- a/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs +++ b/osu.Game/Overlays/SearchableList/SearchableListOverlay.cs @@ -16,6 +16,11 @@ namespace osu.Game.Overlays.SearchableList public abstract class SearchableListOverlay : FullscreenOverlay { public const float WIDTH_PADDING = 80; + + protected SearchableListOverlay(OverlayColourScheme colourScheme) + : base(colourScheme) + { + } } public abstract class SearchableListOverlay : SearchableListOverlay @@ -35,7 +40,8 @@ namespace osu.Game.Overlays.SearchableList protected abstract SearchableListHeader CreateHeader(); protected abstract SearchableListFilterControl CreateFilterControl(); - protected SearchableListOverlay() + protected SearchableListOverlay(OverlayColourScheme colourScheme) + : base(colourScheme) { Children = new Drawable[] { diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 0c99962def..27bef7145b 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -52,6 +52,7 @@ namespace osu.Game.Overlays } public SocialOverlay() + : base(OverlayColourScheme.Pink) { Waves.FirstWaveColour = OsuColour.FromHex(@"cb5fa0"); Waves.SecondWaveColour = OsuColour.FromHex(@"b04384"); diff --git a/osu.Game/Overlays/UserProfileOverlay.cs b/osu.Game/Overlays/UserProfileOverlay.cs index a34fc619a8..07c0dbed43 100644 --- a/osu.Game/Overlays/UserProfileOverlay.cs +++ b/osu.Game/Overlays/UserProfileOverlay.cs @@ -29,6 +29,11 @@ namespace osu.Game.Overlays public const float CONTENT_X_MARGIN = 70; + public UserProfileOverlay() + : base(OverlayColourScheme.Green) + { + } + public void ShowUser(long userId) => ShowUser(new User { Id = userId }); public void ShowUser(User user, bool fetchOnline = true) From e03a085d7071228941d0f1f20fd90d57806fc32c Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 24 Jan 2020 12:33:34 +0300 Subject: [PATCH 02/15] Make overlay elements use OverlayColourProvider --- .../Overlays/BreadcrumbControlOverlayHeader.cs | 10 ++-------- osu.Game/Overlays/Changelog/ChangelogHeader.cs | 2 -- osu.Game/Overlays/News/NewsHeader.cs | 1 - osu.Game/Overlays/OverlayColourProvider.cs | 2 +- osu.Game/Overlays/OverlayHeader.cs | 14 +++++--------- osu.Game/Overlays/Profile/ProfileHeader.cs | 1 - osu.Game/Overlays/TabControlOverlayHeader.cs | 9 ++------- 7 files changed, 10 insertions(+), 29 deletions(-) diff --git a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs index 2e50c19729..c3f35b4313 100644 --- a/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs +++ b/osu.Game/Overlays/BreadcrumbControlOverlayHeader.cs @@ -4,7 +4,6 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Graphics.UserInterface; -using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; namespace osu.Game.Overlays @@ -15,15 +14,10 @@ namespace osu.Game.Overlays protected override TabControl CreateTabControl() => BreadcrumbControl = new OverlayHeaderBreadcrumbControl(); - protected BreadcrumbControlOverlayHeader(OverlayColourScheme colourScheme) - : base(colourScheme) - { - } - [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - BreadcrumbControl.AccentColour = colours.ForOverlayElement(ColourScheme, 1, 0.75f); + BreadcrumbControl.AccentColour = colourProvider.Highlight1; } public class OverlayHeaderBreadcrumbControl : BreadcrumbControl diff --git a/osu.Game/Overlays/Changelog/ChangelogHeader.cs b/osu.Game/Overlays/Changelog/ChangelogHeader.cs index d5e0890b4d..70a45f2667 100644 --- a/osu.Game/Overlays/Changelog/ChangelogHeader.cs +++ b/osu.Game/Overlays/Changelog/ChangelogHeader.cs @@ -9,7 +9,6 @@ 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.UserInterface; using osu.Game.Online.API.Requests.Responses; @@ -26,7 +25,6 @@ namespace osu.Game.Overlays.Changelog private const string listing_string = "listing"; public ChangelogHeader() - : base(OverlayColourScheme.Purple) { BreadcrumbControl.AddItem(listing_string); BreadcrumbControl.Current.ValueChanged += e => diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index 03dc64b3bd..457c5a19ba 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -23,7 +23,6 @@ namespace osu.Game.Overlays.News public Action ShowFrontPage; public NewsHeader() - : base(OverlayColourScheme.Purple) { BreadcrumbControl.AddItem(front_page_string); diff --git a/osu.Game/Overlays/OverlayColourProvider.cs b/osu.Game/Overlays/OverlayColourProvider.cs index 1223b8d064..e92a231bc1 100644 --- a/osu.Game/Overlays/OverlayColourProvider.cs +++ b/osu.Game/Overlays/OverlayColourProvider.cs @@ -66,7 +66,7 @@ namespace osu.Game.Overlays public Color4 Dark1 => convert(0.2f, 0.35f); public Color4 Dark2 => convert(0.2f, 0.3f); public Color4 Dark3 => convert(0.2f, 0.25f); - public Color4 Dark4 => convert(0.2f, 0.20f); + public Color4 Dark4 => convert(0.2f, 0.2f); public Color4 Dark5 => convert(0.2f, 0.15f); public Color4 Dark6 => convert(0.2f, 0.1f); public Color4 Foreground1 => convert(0.1f, 0.6f); diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index c9547bb5b8..2578f6a3bd 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -25,12 +25,8 @@ namespace osu.Game.Overlays set => background.Height = value; } - protected OverlayColourScheme ColourScheme { get; } - - protected OverlayHeader(OverlayColourScheme colourScheme) + protected OverlayHeader() { - ColourScheme = colourScheme; - RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; @@ -89,11 +85,11 @@ namespace osu.Game.Overlays } [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - titleBackground.Colour = colours.ForOverlayElement(ColourScheme, 0.2f, 0.15f); - title.AccentColour = colours.ForOverlayElement(ColourScheme, 1, 0.7f); - controlBackground.Colour = colours.ForOverlayElement(ColourScheme, 0.2f, 0.2f); + titleBackground.Colour = colourProvider.Dark5; + title.AccentColour = colourProvider.Highlight1; + controlBackground.Colour = colourProvider.Dark4; } protected abstract Drawable CreateBackground(); diff --git a/osu.Game/Overlays/Profile/ProfileHeader.cs b/osu.Game/Overlays/Profile/ProfileHeader.cs index b550d7d823..f8eb03770a 100644 --- a/osu.Game/Overlays/Profile/ProfileHeader.cs +++ b/osu.Game/Overlays/Profile/ProfileHeader.cs @@ -24,7 +24,6 @@ namespace osu.Game.Overlays.Profile private DetailHeaderContainer detailHeaderContainer; public ProfileHeader() - : base(OverlayColourScheme.Green) { BackgroundHeight = 150; diff --git a/osu.Game/Overlays/TabControlOverlayHeader.cs b/osu.Game/Overlays/TabControlOverlayHeader.cs index 8f3aa896ee..0c55b8383b 100644 --- a/osu.Game/Overlays/TabControlOverlayHeader.cs +++ b/osu.Game/Overlays/TabControlOverlayHeader.cs @@ -16,15 +16,10 @@ namespace osu.Game.Overlays protected override TabControl CreateTabControl() => TabControl = new OverlayHeaderTabControl(); - protected TabControlOverlayHeader(OverlayColourScheme colourScheme) - : base(colourScheme) - { - } - [BackgroundDependencyLoader] - private void load(OsuColour colours) + private void load(OverlayColourProvider colourProvider) { - TabControl.AccentColour = colours.ForOverlayElement(ColourScheme, 1, 0.75f); + TabControl.AccentColour = colourProvider.Highlight1; } public class OverlayHeaderTabControl : OverlayTabControl From 59ff3aa800648663d6c30a7db6632380866d9290 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 24 Jan 2020 12:42:48 +0300 Subject: [PATCH 03/15] Fix tests --- osu.Game.Tests/Visual/Online/TestSceneFullscreenOverlay.cs | 1 + osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs | 3 +++ 2 files changed, 4 insertions(+) diff --git a/osu.Game.Tests/Visual/Online/TestSceneFullscreenOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneFullscreenOverlay.cs index fe8437be17..e60adcee34 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneFullscreenOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneFullscreenOverlay.cs @@ -41,6 +41,7 @@ namespace osu.Game.Tests.Visual.Online private class TestFullscreenOverlay : FullscreenOverlay { public TestFullscreenOverlay() + : base(OverlayColourScheme.Pink) { Children = new Drawable[] { diff --git a/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs b/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs index 63b46c991f..f825e4f1e9 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneUserProfileHeader.cs @@ -31,6 +31,9 @@ namespace osu.Game.Tests.Visual.Online typeof(ProfileHeaderButton) }; + [Cached] + private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Green); + [Resolved] private IAPIProvider api { get; set; } From d9af43da4c231e21f03ddadd2a541aa3d1a55132 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Fri, 24 Jan 2020 12:55:51 +0300 Subject: [PATCH 04/15] Remove unused usings --- osu.Game/Overlays/News/NewsHeader.cs | 1 - osu.Game/Overlays/OverlayHeader.cs | 1 - 2 files changed, 2 deletions(-) diff --git a/osu.Game/Overlays/News/NewsHeader.cs b/osu.Game/Overlays/News/NewsHeader.cs index 457c5a19ba..1152d9044b 100644 --- a/osu.Game/Overlays/News/NewsHeader.cs +++ b/osu.Game/Overlays/News/NewsHeader.cs @@ -6,7 +6,6 @@ using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; -using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; using System; diff --git a/osu.Game/Overlays/OverlayHeader.cs b/osu.Game/Overlays/OverlayHeader.cs index 2578f6a3bd..bc58a17401 100644 --- a/osu.Game/Overlays/OverlayHeader.cs +++ b/osu.Game/Overlays/OverlayHeader.cs @@ -7,7 +7,6 @@ using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.UserInterface; -using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; using osuTK.Graphics; From 73e822e08db765e1a3fbc1f1fdea8bab88d029df Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sat, 25 Jan 2020 06:46:54 +0300 Subject: [PATCH 05/15] Make waves colour dependent on overlay colour scheme --- osu.Game/Overlays/ChangelogOverlay.cs | 5 ----- osu.Game/Overlays/DirectOverlay.cs | 7 ------- osu.Game/Overlays/FullscreenOverlay.cs | 14 +++++++------- osu.Game/Overlays/RankingsOverlay.cs | 15 ++------------- osu.Game/Overlays/SocialOverlay.cs | 5 ----- 5 files changed, 9 insertions(+), 37 deletions(-) diff --git a/osu.Game/Overlays/ChangelogOverlay.cs b/osu.Game/Overlays/ChangelogOverlay.cs index e2186df64c..412e29735a 100644 --- a/osu.Game/Overlays/ChangelogOverlay.cs +++ b/osu.Game/Overlays/ChangelogOverlay.cs @@ -44,11 +44,6 @@ namespace osu.Game.Overlays [BackgroundDependencyLoader] private void load(AudioManager audio, OsuColour colour) { - Waves.FirstWaveColour = colour.GreyVioletLight; - Waves.SecondWaveColour = colour.GreyViolet; - Waves.ThirdWaveColour = colour.GreyVioletDark; - Waves.FourthWaveColour = colour.GreyVioletDarker; - Children = new Drawable[] { new Box diff --git a/osu.Game/Overlays/DirectOverlay.cs b/osu.Game/Overlays/DirectOverlay.cs index c718ca7a1e..e4cef319fe 100644 --- a/osu.Game/Overlays/DirectOverlay.cs +++ b/osu.Game/Overlays/DirectOverlay.cs @@ -86,13 +86,6 @@ namespace osu.Game.Overlays public DirectOverlay() : base(OverlayColourScheme.Blue) { - // osu!direct colours are not part of the standard palette - - Waves.FirstWaveColour = OsuColour.FromHex(@"19b0e2"); - Waves.SecondWaveColour = OsuColour.FromHex(@"2280a2"); - Waves.ThirdWaveColour = OsuColour.FromHex(@"005774"); - Waves.FourthWaveColour = OsuColour.FromHex(@"003a4e"); - ScrollFlow.Children = new Drawable[] { resultCountsContainer = new FillFlowContainer diff --git a/osu.Game/Overlays/FullscreenOverlay.cs b/osu.Game/Overlays/FullscreenOverlay.cs index 662188cbfd..c391947ccb 100644 --- a/osu.Game/Overlays/FullscreenOverlay.cs +++ b/osu.Game/Overlays/FullscreenOverlay.cs @@ -6,7 +6,6 @@ using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Effects; -using osu.Game.Graphics; using osu.Game.Graphics.Containers; using osu.Game.Online.API; using osuTK.Graphics; @@ -24,11 +23,6 @@ namespace osu.Game.Overlays { this.colourScheme = colourScheme; - Waves.FirstWaveColour = OsuColour.Gray(0.4f); - Waves.SecondWaveColour = OsuColour.Gray(0.3f); - Waves.ThirdWaveColour = OsuColour.Gray(0.2f); - Waves.FourthWaveColour = OsuColour.Gray(0.1f); - RelativeSizeAxes = Axes.Both; RelativePositionAxes = Axes.Both; Width = 0.85f; @@ -53,7 +47,13 @@ namespace osu.Game.Overlays [BackgroundDependencyLoader] private void load() { - dependencies.Cache(new OverlayColourProvider(colourScheme)); + OverlayColourProvider colourProvider; + dependencies.Cache(colourProvider = new OverlayColourProvider(colourScheme)); + + Waves.FirstWaveColour = colourProvider.Highlight1; + Waves.SecondWaveColour = colourProvider.Link4; + Waves.ThirdWaveColour = colourProvider.Dark3; + Waves.FourthWaveColour = colourProvider.Dark1; } public override void Show() diff --git a/osu.Game/Overlays/RankingsOverlay.cs b/osu.Game/Overlays/RankingsOverlay.cs index 2297925e5c..1ab18b8c15 100644 --- a/osu.Game/Overlays/RankingsOverlay.cs +++ b/osu.Game/Overlays/RankingsOverlay.cs @@ -25,7 +25,6 @@ namespace osu.Game.Overlays private readonly Bindable ruleset = new Bindable(); private readonly BasicScrollContainer scrollFlow; - private readonly Box background; private readonly Container tableContainer; private readonly DimmedLoadingLayer loading; @@ -40,9 +39,10 @@ namespace osu.Game.Overlays { Children = new Drawable[] { - background = new Box + new Box { RelativeSizeAxes = Axes.Both, + Colour = OsuColour.Gray(0.1f), }, scrollFlow = new BasicScrollContainer { @@ -86,17 +86,6 @@ namespace osu.Game.Overlays }; } - [BackgroundDependencyLoader] - private void load(OsuColour colour) - { - Waves.FirstWaveColour = colour.Green; - Waves.SecondWaveColour = colour.GreenLight; - Waves.ThirdWaveColour = colour.GreenDark; - Waves.FourthWaveColour = colour.GreenDarker; - - background.Colour = OsuColour.Gray(0.1f); - } - protected override void LoadComplete() { Country.BindValueChanged(_ => diff --git a/osu.Game/Overlays/SocialOverlay.cs b/osu.Game/Overlays/SocialOverlay.cs index 27bef7145b..9a523bc1bc 100644 --- a/osu.Game/Overlays/SocialOverlay.cs +++ b/osu.Game/Overlays/SocialOverlay.cs @@ -54,11 +54,6 @@ namespace osu.Game.Overlays public SocialOverlay() : base(OverlayColourScheme.Pink) { - Waves.FirstWaveColour = OsuColour.FromHex(@"cb5fa0"); - Waves.SecondWaveColour = OsuColour.FromHex(@"b04384"); - Waves.ThirdWaveColour = OsuColour.FromHex(@"9b2b6e"); - Waves.FourthWaveColour = OsuColour.FromHex(@"6d214d"); - Add(loading = new LoadingAnimation()); Filter.Search.Current.ValueChanged += text => From bd7c137394e5f2f7c4377d575b83b6df8f09f43e Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 26 Jan 2020 18:31:01 +0900 Subject: [PATCH 06/15] Remap osu!mania dual stage key bindings to be more ergonomic --- osu.Game.Rulesets.Mania/ManiaRuleset.cs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/osu.Game.Rulesets.Mania/ManiaRuleset.cs b/osu.Game.Rulesets.Mania/ManiaRuleset.cs index 02c2158383..b7b523a94d 100644 --- a/osu.Game.Rulesets.Mania/ManiaRuleset.cs +++ b/osu.Game.Rulesets.Mania/ManiaRuleset.cs @@ -237,19 +237,19 @@ namespace osu.Game.Rulesets.Mania { LeftKeys = new[] { - InputKey.Number1, - InputKey.Number2, - InputKey.Number3, - InputKey.Number4, + InputKey.Q, + InputKey.W, + InputKey.E, + InputKey.R, }, RightKeys = new[] { - InputKey.Z, InputKey.X, InputKey.C, - InputKey.V + InputKey.V, + InputKey.B }, - SpecialKey = InputKey.Tilde, + SpecialKey = InputKey.S, SpecialAction = ManiaAction.Special1, NormalActionStart = ManiaAction.Key1 }.GenerateKeyBindingsFor(keys, out var nextNormal); @@ -265,12 +265,12 @@ namespace osu.Game.Rulesets.Mania }, RightKeys = new[] { - InputKey.O, - InputKey.P, - InputKey.BracketLeft, - InputKey.BracketRight + InputKey.K, + InputKey.L, + InputKey.Semicolon, + InputKey.Quote }, - SpecialKey = InputKey.BackSlash, + SpecialKey = InputKey.I, SpecialAction = ManiaAction.Special2, NormalActionStart = nextNormal }.GenerateKeyBindingsFor(keys, out _); From 406bc23fdeea4955de909fb4d1cd30371e032ba7 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 12:38:20 +0300 Subject: [PATCH 07/15] Rename incorrect colours --- osu.Game/Overlays/FullscreenOverlay.cs | 2 +- osu.Game/Overlays/OverlayColourProvider.cs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game/Overlays/FullscreenOverlay.cs b/osu.Game/Overlays/FullscreenOverlay.cs index c391947ccb..8a8a53e042 100644 --- a/osu.Game/Overlays/FullscreenOverlay.cs +++ b/osu.Game/Overlays/FullscreenOverlay.cs @@ -51,7 +51,7 @@ namespace osu.Game.Overlays dependencies.Cache(colourProvider = new OverlayColourProvider(colourScheme)); Waves.FirstWaveColour = colourProvider.Highlight1; - Waves.SecondWaveColour = colourProvider.Link4; + Waves.SecondWaveColour = colourProvider.Light4; Waves.ThirdWaveColour = colourProvider.Dark3; Waves.FourthWaveColour = colourProvider.Dark1; } diff --git a/osu.Game/Overlays/OverlayColourProvider.cs b/osu.Game/Overlays/OverlayColourProvider.cs index e92a231bc1..dd756d4b3f 100644 --- a/osu.Game/Overlays/OverlayColourProvider.cs +++ b/osu.Game/Overlays/OverlayColourProvider.cs @@ -59,10 +59,10 @@ namespace osu.Game.Overlays public Color4 Highlight1 => convert(1, 0.7f); public Color4 Content1 => convert(0.4f, 1); public Color4 Content2 => convert(0.4f, 0.9f); - public Color4 Link1 => convert(0.4f, 0.8f); - public Color4 Link2 => convert(0.4f, 0.75f); - public Color4 Link3 => convert(0.4f, 0.7f); - public Color4 Link4 => convert(0.4f, 0.5f); + public Color4 Light1 => convert(0.4f, 0.8f); + public Color4 Light2 => convert(0.4f, 0.75f); + public Color4 Light3 => convert(0.4f, 0.7f); + public Color4 Light4 => convert(0.4f, 0.5f); public Color4 Dark1 => convert(0.2f, 0.35f); public Color4 Dark2 => convert(0.2f, 0.3f); public Color4 Dark3 => convert(0.2f, 0.25f); From 6dee287a82c28a5bdfcc097c9d74f98370b9c691 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 12:39:15 +0300 Subject: [PATCH 08/15] Move private methods below public --- osu.Game/Overlays/OverlayColourProvider.cs | 42 +++++++++++----------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/osu.Game/Overlays/OverlayColourProvider.cs b/osu.Game/Overlays/OverlayColourProvider.cs index dd756d4b3f..b548522538 100644 --- a/osu.Game/Overlays/OverlayColourProvider.cs +++ b/osu.Game/Overlays/OverlayColourProvider.cs @@ -16,6 +16,27 @@ namespace osu.Game.Overlays this.colourScheme = colourScheme; } + public Color4 Highlight1 => convert(1, 0.7f); + public Color4 Content1 => convert(0.4f, 1); + public Color4 Content2 => convert(0.4f, 0.9f); + public Color4 Light1 => convert(0.4f, 0.8f); + public Color4 Light2 => convert(0.4f, 0.75f); + public Color4 Light3 => convert(0.4f, 0.7f); + public Color4 Light4 => convert(0.4f, 0.5f); + public Color4 Dark1 => convert(0.2f, 0.35f); + public Color4 Dark2 => convert(0.2f, 0.3f); + public Color4 Dark3 => convert(0.2f, 0.25f); + public Color4 Dark4 => convert(0.2f, 0.2f); + public Color4 Dark5 => convert(0.2f, 0.15f); + public Color4 Dark6 => convert(0.2f, 0.1f); + public Color4 Foreground1 => convert(0.1f, 0.6f); + public Color4 Background1 => convert(0.1f, 0.4f); + public Color4 Background2 => convert(0.1f, 0.3f); + public Color4 Background3 => convert(0.1f, 0.25f); + public Color4 Background4 => convert(0.1f, 0.2f); + public Color4 Background5 => convert(0.1f, 0.15f); + public Color4 Background6 => convert(0.1f, 0.1f); + private Color4 convert(float saturation, float lightness) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, 1)); // See https://github.com/ppy/osu-web/blob/4218c288292d7c810b619075471eaea8bbb8f9d8/app/helpers.php#L1463 @@ -55,27 +76,6 @@ namespace osu.Game.Overlays return hue / 360f; } - - public Color4 Highlight1 => convert(1, 0.7f); - public Color4 Content1 => convert(0.4f, 1); - public Color4 Content2 => convert(0.4f, 0.9f); - public Color4 Light1 => convert(0.4f, 0.8f); - public Color4 Light2 => convert(0.4f, 0.75f); - public Color4 Light3 => convert(0.4f, 0.7f); - public Color4 Light4 => convert(0.4f, 0.5f); - public Color4 Dark1 => convert(0.2f, 0.35f); - public Color4 Dark2 => convert(0.2f, 0.3f); - public Color4 Dark3 => convert(0.2f, 0.25f); - public Color4 Dark4 => convert(0.2f, 0.2f); - public Color4 Dark5 => convert(0.2f, 0.15f); - public Color4 Dark6 => convert(0.2f, 0.1f); - public Color4 Foreground1 => convert(0.1f, 0.6f); - public Color4 Background1 => convert(0.1f, 0.4f); - public Color4 Background2 => convert(0.1f, 0.3f); - public Color4 Background3 => convert(0.1f, 0.25f); - public Color4 Background4 => convert(0.1f, 0.2f); - public Color4 Background5 => convert(0.1f, 0.15f); - public Color4 Background6 => convert(0.1f, 0.1f); } public enum OverlayColourScheme From 750a4476d8cb91e5984552a53d3f7cccba7de1d1 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 12:41:21 +0300 Subject: [PATCH 09/15] Simplify getBaseHue function --- osu.Game/Overlays/OverlayColourProvider.cs | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/osu.Game/Overlays/OverlayColourProvider.cs b/osu.Game/Overlays/OverlayColourProvider.cs index b548522538..1221de480e 100644 --- a/osu.Game/Overlays/OverlayColourProvider.cs +++ b/osu.Game/Overlays/OverlayColourProvider.cs @@ -42,39 +42,29 @@ namespace osu.Game.Overlays // See https://github.com/ppy/osu-web/blob/4218c288292d7c810b619075471eaea8bbb8f9d8/app/helpers.php#L1463 private static float getBaseHue(OverlayColourScheme colourScheme) { - float hue; - switch (colourScheme) { default: throw new ArgumentException($@"{colourScheme} colour scheme does not provide a hue value in {nameof(getBaseHue)}."); case OverlayColourScheme.Red: - hue = 0; - break; + return 0; case OverlayColourScheme.Pink: - hue = 333; - break; + return 333 / 360f; case OverlayColourScheme.Orange: - hue = 46; - break; + return 46 / 360f; case OverlayColourScheme.Green: - hue = 115; - break; + return 115 / 360f; case OverlayColourScheme.Purple: - hue = 255; - break; + return 255 / 360f; case OverlayColourScheme.Blue: - hue = 200; - break; + return 200 / 360f; } - - return hue / 360f; } } From 8e470678c7d124fab495d4c15be304f598be87aa Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 12:42:23 +0300 Subject: [PATCH 10/15] Rename convert() to getColour() --- osu.Game/Overlays/OverlayColourProvider.cs | 42 +++++++++++----------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/osu.Game/Overlays/OverlayColourProvider.cs b/osu.Game/Overlays/OverlayColourProvider.cs index 1221de480e..9816f313ad 100644 --- a/osu.Game/Overlays/OverlayColourProvider.cs +++ b/osu.Game/Overlays/OverlayColourProvider.cs @@ -16,28 +16,28 @@ namespace osu.Game.Overlays this.colourScheme = colourScheme; } - public Color4 Highlight1 => convert(1, 0.7f); - public Color4 Content1 => convert(0.4f, 1); - public Color4 Content2 => convert(0.4f, 0.9f); - public Color4 Light1 => convert(0.4f, 0.8f); - public Color4 Light2 => convert(0.4f, 0.75f); - public Color4 Light3 => convert(0.4f, 0.7f); - public Color4 Light4 => convert(0.4f, 0.5f); - public Color4 Dark1 => convert(0.2f, 0.35f); - public Color4 Dark2 => convert(0.2f, 0.3f); - public Color4 Dark3 => convert(0.2f, 0.25f); - public Color4 Dark4 => convert(0.2f, 0.2f); - public Color4 Dark5 => convert(0.2f, 0.15f); - public Color4 Dark6 => convert(0.2f, 0.1f); - public Color4 Foreground1 => convert(0.1f, 0.6f); - public Color4 Background1 => convert(0.1f, 0.4f); - public Color4 Background2 => convert(0.1f, 0.3f); - public Color4 Background3 => convert(0.1f, 0.25f); - public Color4 Background4 => convert(0.1f, 0.2f); - public Color4 Background5 => convert(0.1f, 0.15f); - public Color4 Background6 => convert(0.1f, 0.1f); + public Color4 Highlight1 => getColour(1, 0.7f); + public Color4 Content1 => getColour(0.4f, 1); + public Color4 Content2 => getColour(0.4f, 0.9f); + public Color4 Light1 => getColour(0.4f, 0.8f); + public Color4 Light2 => getColour(0.4f, 0.75f); + public Color4 Light3 => getColour(0.4f, 0.7f); + public Color4 Light4 => getColour(0.4f, 0.5f); + public Color4 Dark1 => getColour(0.2f, 0.35f); + public Color4 Dark2 => getColour(0.2f, 0.3f); + public Color4 Dark3 => getColour(0.2f, 0.25f); + public Color4 Dark4 => getColour(0.2f, 0.2f); + public Color4 Dark5 => getColour(0.2f, 0.15f); + public Color4 Dark6 => getColour(0.2f, 0.1f); + public Color4 Foreground1 => getColour(0.1f, 0.6f); + public Color4 Background1 => getColour(0.1f, 0.4f); + public Color4 Background2 => getColour(0.1f, 0.3f); + public Color4 Background3 => getColour(0.1f, 0.25f); + public Color4 Background4 => getColour(0.1f, 0.2f); + public Color4 Background5 => getColour(0.1f, 0.15f); + public Color4 Background6 => getColour(0.1f, 0.1f); - private Color4 convert(float saturation, float lightness) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, 1)); + private Color4 getColour(float saturation, float lightness) => Color4.FromHsl(new Vector4(getBaseHue(colourScheme), saturation, lightness, 1)); // See https://github.com/ppy/osu-web/blob/4218c288292d7c810b619075471eaea8bbb8f9d8/app/helpers.php#L1463 private static float getBaseHue(OverlayColourScheme colourScheme) From 1305634c5263a9e628d4cbd0879d246181225aee Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 14:02:05 +0300 Subject: [PATCH 11/15] Simplify colour provider caching --- osu.Game/Overlays/FullscreenOverlay.cs | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/osu.Game/Overlays/FullscreenOverlay.cs b/osu.Game/Overlays/FullscreenOverlay.cs index 8a8a53e042..b7e6eb2ff7 100644 --- a/osu.Game/Overlays/FullscreenOverlay.cs +++ b/osu.Game/Overlays/FullscreenOverlay.cs @@ -17,11 +17,12 @@ namespace osu.Game.Overlays [Resolved] protected IAPIProvider API { get; private set; } - private readonly OverlayColourScheme colourScheme; + [Cached] + private OverlayColourProvider colourProvider; protected FullscreenOverlay(OverlayColourScheme colourScheme) { - this.colourScheme = colourScheme; + colourProvider = new OverlayColourProvider(colourScheme); RelativeSizeAxes = Axes.Both; RelativePositionAxes = Axes.Both; @@ -39,17 +40,9 @@ namespace osu.Game.Overlays }; } - private DependencyContainer dependencies; - - protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) => - dependencies = new DependencyContainer(base.CreateChildDependencies(parent)); - [BackgroundDependencyLoader] private void load() { - OverlayColourProvider colourProvider; - dependencies.Cache(colourProvider = new OverlayColourProvider(colourScheme)); - Waves.FirstWaveColour = colourProvider.Highlight1; Waves.SecondWaveColour = colourProvider.Light4; Waves.ThirdWaveColour = colourProvider.Dark3; From 49c5d5b23d27d188183930920bc3628cdcf43e65 Mon Sep 17 00:00:00 2001 From: Andrei Zavatski Date: Sun, 26 Jan 2020 14:06:05 +0300 Subject: [PATCH 12/15] Make colour provider readonly --- osu.Game/Overlays/FullscreenOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/FullscreenOverlay.cs b/osu.Game/Overlays/FullscreenOverlay.cs index b7e6eb2ff7..e02f03301b 100644 --- a/osu.Game/Overlays/FullscreenOverlay.cs +++ b/osu.Game/Overlays/FullscreenOverlay.cs @@ -18,7 +18,7 @@ namespace osu.Game.Overlays protected IAPIProvider API { get; private set; } [Cached] - private OverlayColourProvider colourProvider; + private readonly OverlayColourProvider colourProvider; protected FullscreenOverlay(OverlayColourScheme colourScheme) { From 97c80529d5ac0abeb848c56af603cc5033d72d45 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 26 Jan 2020 21:47:40 +0900 Subject: [PATCH 13/15] Adjust wave colours slightly --- osu.Game/Overlays/FullscreenOverlay.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/osu.Game/Overlays/FullscreenOverlay.cs b/osu.Game/Overlays/FullscreenOverlay.cs index e02f03301b..959f6749d2 100644 --- a/osu.Game/Overlays/FullscreenOverlay.cs +++ b/osu.Game/Overlays/FullscreenOverlay.cs @@ -43,10 +43,10 @@ namespace osu.Game.Overlays [BackgroundDependencyLoader] private void load() { - Waves.FirstWaveColour = colourProvider.Highlight1; - Waves.SecondWaveColour = colourProvider.Light4; - Waves.ThirdWaveColour = colourProvider.Dark3; - Waves.FourthWaveColour = colourProvider.Dark1; + Waves.FirstWaveColour = colourProvider.Light4; + Waves.SecondWaveColour = colourProvider.Light3; + Waves.ThirdWaveColour = colourProvider.Dark4; + Waves.FourthWaveColour = colourProvider.Dark3; } public override void Show() From a6124ae499eddbe22c799fc8b1de46f74c560f79 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 27 Jan 2020 08:24:15 +0800 Subject: [PATCH 14/15] fix typo on ScoreProcessor xmldoc --- osu.Game/Rulesets/Scoring/ScoreProcessor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs index 8ccc2af93b..8eafaa88ec 100644 --- a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs +++ b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs @@ -45,7 +45,7 @@ namespace osu.Game.Rulesets.Scoring public readonly Bindable Rank = new Bindable(ScoreRank.X); /// - /// THe highest combo achieved by this score. + /// The highest combo achieved by this score. /// public readonly BindableInt HighestCombo = new BindableInt(); From 15fd8596c238348c45b5ff367b8d6b5fcfc97f21 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Mon, 27 Jan 2020 12:16:00 +0900 Subject: [PATCH 15/15] Fix cursor not hiding for screenshots --- osu.Game/Graphics/ScreenshotManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Graphics/ScreenshotManager.cs b/osu.Game/Graphics/ScreenshotManager.cs index 7f20c30048..3ad36577b5 100644 --- a/osu.Game/Graphics/ScreenshotManager.cs +++ b/osu.Game/Graphics/ScreenshotManager.cs @@ -90,7 +90,7 @@ namespace osu.Game.Graphics { ScheduledDelegate waitDelegate = host.DrawThread.Scheduler.AddDelayed(() => { - if (framesWaited++ < frames_to_wait) + if (framesWaited++ >= frames_to_wait) // ReSharper disable once AccessToDisposedClosure framesWaitedEvent.Set(); }, 10, true);