mirror of
https://github.com/ppy/osu.git
synced 2025-02-21 22:12:53 +08:00
Implement OverlayColourProvider
This commit is contained in:
parent
792436890b
commit
db4cd51d02
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osuTK;
|
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.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
|
// See https://github.com/ppy/osu-web/blob/master/resources/assets/less/colors.less
|
||||||
public readonly Color4 PurpleLighter = FromHex(@"eeeeff");
|
public readonly Color4 PurpleLighter = FromHex(@"eeeeff");
|
||||||
public readonly Color4 PurpleLight = FromHex(@"aa88ff");
|
public readonly Color4 PurpleLight = FromHex(@"aa88ff");
|
||||||
@ -220,14 +179,4 @@ namespace osu.Game.Graphics
|
|||||||
|
|
||||||
public readonly Color4 ContextMenuGray = FromHex(@"223034");
|
public readonly Color4 ContextMenuGray = FromHex(@"223034");
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum OverlayColourScheme
|
|
||||||
{
|
|
||||||
Red,
|
|
||||||
Pink,
|
|
||||||
Orange,
|
|
||||||
Green,
|
|
||||||
Purple,
|
|
||||||
Blue
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ namespace osu.Game.Overlays
|
|||||||
public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => true;
|
public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => true;
|
||||||
|
|
||||||
public BeatmapSetOverlay()
|
public BeatmapSetOverlay()
|
||||||
|
: base(OverlayColourScheme.Blue)
|
||||||
{
|
{
|
||||||
OsuScrollContainer scroll;
|
OsuScrollContainer scroll;
|
||||||
Info info;
|
Info info;
|
||||||
|
@ -36,6 +36,11 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
private List<APIUpdateStream> streams;
|
private List<APIUpdateStream> streams;
|
||||||
|
|
||||||
|
public ChangelogOverlay()
|
||||||
|
: base(OverlayColourScheme.Purple)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(AudioManager audio, OsuColour colour)
|
private void load(AudioManager audio, OsuColour colour)
|
||||||
{
|
{
|
||||||
|
@ -84,6 +84,7 @@ namespace osu.Game.Overlays
|
|||||||
}
|
}
|
||||||
|
|
||||||
public DirectOverlay()
|
public DirectOverlay()
|
||||||
|
: base(OverlayColourScheme.Blue)
|
||||||
{
|
{
|
||||||
// osu!direct colours are not part of the standard palette
|
// osu!direct colours are not part of the standard palette
|
||||||
|
|
||||||
|
@ -18,8 +18,12 @@ namespace osu.Game.Overlays
|
|||||||
[Resolved]
|
[Resolved]
|
||||||
protected IAPIProvider API { get; private set; }
|
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.FirstWaveColour = OsuColour.Gray(0.4f);
|
||||||
Waves.SecondWaveColour = OsuColour.Gray(0.3f);
|
Waves.SecondWaveColour = OsuColour.Gray(0.3f);
|
||||||
Waves.ThirdWaveColour = OsuColour.Gray(0.2f);
|
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()
|
public override void Show()
|
||||||
{
|
{
|
||||||
if (State.Value == Visibility.Visible)
|
if (State.Value == Visibility.Visible)
|
||||||
|
@ -21,6 +21,11 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
public readonly Bindable<string> Current = new Bindable<string>(null);
|
public readonly Bindable<string> Current = new Bindable<string>(null);
|
||||||
|
|
||||||
|
public NewsOverlay()
|
||||||
|
: base(OverlayColourScheme.Purple)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OsuColour colours)
|
private void load(OsuColour colours)
|
||||||
{
|
{
|
||||||
|
90
osu.Game/Overlays/OverlayColourProvider.cs
Normal file
90
osu.Game/Overlays/OverlayColourProvider.cs
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. 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
|
||||||
|
}
|
||||||
|
}
|
@ -36,6 +36,7 @@ namespace osu.Game.Overlays
|
|||||||
private IAPIProvider api { get; set; }
|
private IAPIProvider api { get; set; }
|
||||||
|
|
||||||
public RankingsOverlay()
|
public RankingsOverlay()
|
||||||
|
: base(OverlayColourScheme.Green)
|
||||||
{
|
{
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
|
@ -16,6 +16,11 @@ namespace osu.Game.Overlays.SearchableList
|
|||||||
public abstract class SearchableListOverlay : FullscreenOverlay
|
public abstract class SearchableListOverlay : FullscreenOverlay
|
||||||
{
|
{
|
||||||
public const float WIDTH_PADDING = 80;
|
public const float WIDTH_PADDING = 80;
|
||||||
|
|
||||||
|
protected SearchableListOverlay(OverlayColourScheme colourScheme)
|
||||||
|
: base(colourScheme)
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract class SearchableListOverlay<THeader, TTab, TCategory> : SearchableListOverlay
|
public abstract class SearchableListOverlay<THeader, TTab, TCategory> : SearchableListOverlay
|
||||||
@ -35,7 +40,8 @@ namespace osu.Game.Overlays.SearchableList
|
|||||||
protected abstract SearchableListHeader<THeader> CreateHeader();
|
protected abstract SearchableListHeader<THeader> CreateHeader();
|
||||||
protected abstract SearchableListFilterControl<TTab, TCategory> CreateFilterControl();
|
protected abstract SearchableListFilterControl<TTab, TCategory> CreateFilterControl();
|
||||||
|
|
||||||
protected SearchableListOverlay()
|
protected SearchableListOverlay(OverlayColourScheme colourScheme)
|
||||||
|
: base(colourScheme)
|
||||||
{
|
{
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
|
@ -52,6 +52,7 @@ namespace osu.Game.Overlays
|
|||||||
}
|
}
|
||||||
|
|
||||||
public SocialOverlay()
|
public SocialOverlay()
|
||||||
|
: base(OverlayColourScheme.Pink)
|
||||||
{
|
{
|
||||||
Waves.FirstWaveColour = OsuColour.FromHex(@"cb5fa0");
|
Waves.FirstWaveColour = OsuColour.FromHex(@"cb5fa0");
|
||||||
Waves.SecondWaveColour = OsuColour.FromHex(@"b04384");
|
Waves.SecondWaveColour = OsuColour.FromHex(@"b04384");
|
||||||
|
@ -29,6 +29,11 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
public const float CONTENT_X_MARGIN = 70;
|
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(long userId) => ShowUser(new User { Id = userId });
|
||||||
|
|
||||||
public void ShowUser(User user, bool fetchOnline = true)
|
public void ShowUser(User user, bool fetchOnline = true)
|
||||||
|
Loading…
Reference in New Issue
Block a user