Skip to content

Commit 076e193

Browse files
authored
Merge pull request #23 from winnerspiros/hide-spinner-background-hidden-mod-17611171314315578141
Hide spinner background in Hidden mod
2 parents cd6b30d + 1240bca commit 076e193

5 files changed

Lines changed: 43 additions & 8 deletions

File tree

osu.Game.Rulesets.Osu/Mods/OsuModHidden.cs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
1+
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
22
// See the LICENCE file in the repository root for full licence text.
33

44
using System;
@@ -77,8 +77,14 @@ private void applyHiddenState(DrawableHitObject drawableObject, bool increaseVis
7777
}
7878
else if (drawableObject is DrawableSpinner spinner)
7979
{
80-
spinner.Body.OnSkinChanged += () => hideSpinnerApproachCircle(spinner);
80+
spinner.Body.OnSkinChanged += () =>
81+
{
82+
hideSpinnerApproachCircle(spinner);
83+
hideSpinnerBackground(spinner);
84+
};
85+
8186
hideSpinnerApproachCircle(spinner);
87+
hideSpinnerBackground(spinner);
8288
}
8389
}
8490

@@ -130,8 +136,6 @@ private void applyHiddenState(DrawableHitObject drawableObject, bool increaseVis
130136

131137
case DrawableSpinner spinner:
132138
// hide elements we don't care about.
133-
// todo: hide background
134-
135139
using (spinner.BeginAbsoluteSequence(fadeStartTime))
136140
spinner.FadeOut(fadeDuration);
137141

@@ -192,5 +196,15 @@ private static void hideSpinnerApproachCircle(DrawableSpinner spinner)
192196
using (spinner.BeginAbsoluteSequence(spinner.HitObject.StartTime - spinner.HitObject.TimePreempt))
193197
approachCircle.Hide();
194198
}
199+
200+
private static void hideSpinnerBackground(DrawableSpinner spinner)
201+
{
202+
var spinnerBackground = (spinner.Body.Drawable as IHasSpinnerBackground)?.SpinnerBackground;
203+
if (spinnerBackground == null)
204+
return;
205+
206+
using (spinner.BeginAbsoluteSequence(spinner.HitObject.StartTime - spinner.HitObject.TimePreempt))
207+
spinnerBackground.Hide();
208+
}
195209
}
196210
}

osu.Game.Rulesets.Osu/Skinning/Default/DefaultSpinner.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
namespace osu.Game.Rulesets.Osu.Skinning.Default
1616
{
17-
public partial class DefaultSpinner : CompositeDrawable
17+
public partial class DefaultSpinner : CompositeDrawable, IHasSpinnerBackground
1818
{
1919
private DrawableSpinner drawableSpinner = null!;
2020

@@ -23,6 +23,10 @@ public partial class DefaultSpinner : CompositeDrawable
2323
private Container spmContainer = null!;
2424
private OsuSpriteText spmCounter = null!;
2525

26+
private DefaultSpinnerDisc disc = null!;
27+
28+
public Drawable SpinnerBackground => disc.SpinnerBackground;
29+
2630
[Resolved]
2731
private OsuColour colours { get; set; } = null!;
2832

@@ -40,7 +44,7 @@ private void load(DrawableHitObject drawableHitObject)
4044

4145
AddRangeInternal(new Drawable[]
4246
{
43-
new DefaultSpinnerDisc
47+
disc = new DefaultSpinnerDisc
4448
{
4549
RelativeSizeAxes = Axes.Both,
4650
Anchor = Anchor.Centre,

osu.Game.Rulesets.Osu/Skinning/Default/DefaultSpinnerDisc.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public partial class DefaultSpinnerDisc : CompositeDrawable
3939
private SpinnerCentreLayer centre = null!;
4040
private SpinnerBackgroundLayer background = null!;
4141

42+
public Drawable SpinnerBackground => background;
43+
4244
public DefaultSpinnerDisc()
4345
{
4446
// we are slightly bigger than our parent, to clip the top and bottom of the circle
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
2+
// See the LICENCE file in the repository root for full licence text.
3+
4+
using osu.Framework.Graphics;
5+
6+
namespace osu.Game.Rulesets.Osu.Skinning
7+
{
8+
public interface IHasSpinnerBackground
9+
{
10+
Drawable SpinnerBackground { get; }
11+
}
12+
}

osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyOldStyleSpinner.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,17 @@ namespace osu.Game.Rulesets.Osu.Skinning.Legacy
1919
/// <summary>
2020
/// Legacy skinned spinner with one main spinning layer and a background layer.
2121
/// </summary>
22-
public partial class LegacyOldStyleSpinner : LegacySpinner
22+
public partial class LegacyOldStyleSpinner : LegacySpinner, IHasSpinnerBackground
2323
{
2424
private Sprite disc = null!;
2525
private Sprite metreSprite = null!;
2626
private Container metre = null!;
27+
private Sprite background = null!;
2728

2829
private bool spinnerBlink;
2930

31+
public Drawable SpinnerBackground => background;
32+
3033
private const float final_metre_height = 692 * SPRITE_SCALE;
3134

3235
[BackgroundDependencyLoader]
@@ -36,7 +39,7 @@ private void load(ISkinSource source)
3639

3740
AddRangeInternal(new[]
3841
{
39-
new Sprite
42+
background = new Sprite
4043
{
4144
Anchor = Anchor.TopCentre,
4245
Origin = Anchor.Centre,

0 commit comments

Comments
 (0)