1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-14 17:32:54 +08:00

Add initial support for spinner background layer

This commit is contained in:
Dean Herbert 2020-07-29 16:37:23 +09:00
parent d01d1ce3f1
commit e98154b432
5 changed files with 17 additions and 9 deletions

View File

@ -18,6 +18,7 @@ using osu.Game.Rulesets.Objects;
using osu.Framework.Utils; using osu.Framework.Utils;
using osu.Game.Rulesets.Scoring; using osu.Game.Rulesets.Scoring;
using osu.Game.Screens.Ranking; using osu.Game.Screens.Ranking;
using osu.Game.Skinning;
namespace osu.Game.Rulesets.Osu.Objects.Drawables namespace osu.Game.Rulesets.Osu.Objects.Drawables
{ {
@ -34,7 +35,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
private readonly Container mainContainer; private readonly Container mainContainer;
public readonly SpinnerBackground Background; public readonly SkinnableDrawable Background;
private readonly Container circleContainer; private readonly Container circleContainer;
private readonly CirclePiece circle; private readonly CirclePiece circle;
private readonly GlowPiece glow; private readonly GlowPiece glow;
@ -96,7 +97,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
RelativeSizeAxes = Axes.Y, RelativeSizeAxes = Axes.Y,
Children = new[] Children = new[]
{ {
Background = new SpinnerBackground Background = new SkinnableDrawable(new OsuSkinComponent(OsuSkinComponents.SpinnerBackground), _ => new SpinnerFill
{ {
Disc = Disc =
{ {
@ -104,7 +105,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
}, },
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.Centre, Origin = Anchor.Centre,
}, }),
Disc = new SpinnerDisc(Spinner) Disc = new SpinnerDisc(Spinner)
{ {
Scale = Vector2.Zero, Scale = Vector2.Zero,
@ -173,7 +174,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
normalColour = baseColour; normalColour = baseColour;
completeColour = colours.YellowLight; completeColour = colours.YellowLight;
Background.AccentColour = normalColour; if (Background.Drawable is IHasAccentColour accent) accent.AccentColour = normalColour;
Ticks.AccentColour = normalColour; Ticks.AccentColour = normalColour;
Disc.AccentColour = fillColour; Disc.AccentColour = fillColour;
@ -328,7 +329,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
{ {
Disc.FadeAccent(colour, duration); Disc.FadeAccent(colour, duration);
Background.FadeAccent(colour.Darken(1), duration); (Background.Drawable as IHasAccentColour)?.FadeAccent(colour.Darken(1), duration);
Ticks.FadeAccent(colour, duration); Ticks.FadeAccent(colour, duration);
circle.FadeColour(colour, duration); circle.FadeColour(colour, duration);

View File

@ -45,7 +45,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
Children = new Drawable[] Children = new Drawable[]
{ {
background = new SkinnableDrawable(new OsuSkinComponent(OsuSkinComponents.SpinnerDisc), _ => new SpinnerBackground { Alpha = idle_alpha }), background = new SkinnableDrawable(new OsuSkinComponent(OsuSkinComponents.SpinnerDisc), _ => new SpinnerFill { Alpha = idle_alpha }),
}; };
} }

View File

@ -10,7 +10,7 @@ using osuTK.Graphics;
namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
{ {
public class SpinnerBackground : CircularContainer, IHasAccentColour public class SpinnerFill : CircularContainer, IHasAccentColour
{ {
public readonly Box Disc; public readonly Box Disc;
@ -31,7 +31,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Pieces
} }
} }
public SpinnerBackground() public SpinnerFill()
{ {
RelativeSizeAxes = Axes.Both; RelativeSizeAxes = Axes.Both;
Masking = true; Masking = true;

View File

@ -17,6 +17,7 @@ namespace osu.Game.Rulesets.Osu
SliderFollowCircle, SliderFollowCircle,
SliderBall, SliderBall,
SliderBody, SliderBody,
SpinnerDisc SpinnerDisc,
SpinnerBackground
} }
} }

View File

@ -111,6 +111,12 @@ namespace osu.Game.Rulesets.Osu.Skinning
return new Sprite { Texture = Source.GetTexture("spinner-top") }; return new Sprite { Texture = Source.GetTexture("spinner-top") };
return null; return null;
case OsuSkinComponents.SpinnerBackground:
if (Source.GetTexture("spinner-background") != null)
return new Sprite { Texture = Source.GetTexture("spinner-background") };
return null;
} }
return null; return null;