diff --git a/osu.Game/Graphics/UserInterface/KeyCounter.cs b/osu.Game/Graphics/UserInterface/KeyCounter.cs index 095ecc2394..43dbd36d18 100644 --- a/osu.Game/Graphics/UserInterface/KeyCounter.cs +++ b/osu.Game/Graphics/UserInterface/KeyCounter.cs @@ -9,10 +9,11 @@ namespace osu.Game.Graphics.UserInterface { - public abstract class KeyCounter : AutoSizeContainer + public abstract class KeyCounter : Container { private Sprite buttonSprite; private Sprite glowSprite; + private Container textLayer; private SpriteText keySpriteText; private SpriteText countSpriteText; @@ -54,34 +55,43 @@ public override void Load() Texture = Game.Textures.Get(@"KeyCounter/key-up"), Anchor = Anchor.Centre, Origin = Anchor.Centre, + }, + glowSprite = new Sprite + { + Texture = Game.Textures.Get(@"KeyCounter/key-glow"), + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Alpha = 0 + }, + textLayer = new Container + { + Anchor = Anchor.Centre, + Origin = Anchor.Centre, Children = new Drawable[] { - glowSprite = new Sprite + keySpriteText = new SpriteText { - Texture = Game.Textures.Get(@"KeyCounter/key-glow"), + Text = Name, Anchor = Anchor.Centre, Origin = Anchor.Centre, + Position = new Vector2(0, -buttonSprite.Height / 4), + Colour = KeyUpTextColor + }, + countSpriteText = new SpriteText + { + Text = Count.ToString(), + Anchor = Anchor.Centre, + Origin = Anchor.Centre, + Position = new Vector2(0, buttonSprite.Height / 4), + Colour = KeyUpTextColor } } - }, - keySpriteText = new SpriteText - { - Text = Name, - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Position = new Vector2(0, -buttonSprite.Height / 4), - Colour = KeyUpTextColor - }, - countSpriteText = new SpriteText - { - Text = Count.ToString(), - Anchor = Anchor.Centre, - Origin = Anchor.Centre, - Position = new Vector2(0, buttonSprite.Height / 4), - Colour = KeyUpTextColor } }; - glowSprite.Hide(); + //Set this manually because an element with Alpha=0 won't take it size to AutoSizeContainer, + //so the size can be changing between buttonSpirit and glowSpirit. + Height = buttonSprite.Height; + Width = buttonSprite.Width; } private void UpdateGlowSprite() @@ -89,15 +99,13 @@ private void UpdateGlowSprite() //can have a FadeTime property or const if (IsLit) { - glowSprite.Show(); - countSpriteText.FadeColour(KeyDownTextColor, 0); - keySpriteText.FadeColour(KeyDownTextColor, 0); + glowSprite.FadeIn(); + textLayer.FadeColour(KeyDownTextColor, 0); } else { - glowSprite.Hide(); - countSpriteText.FadeColour(KeyUpTextColor, 0); - keySpriteText.FadeColour(KeyUpTextColor, 0); + glowSprite.FadeOut(); + textLayer.FadeColour(KeyUpTextColor, 0); } }