mirror of
https://github.com/osukey/osukey.git
synced 2025-08-03 22:56:36 +09:00
Add hover animations to GameTypePicker and RoomAvailabilityPicker.
This commit is contained in:
@ -10,6 +10,8 @@ using osu.Game.Graphics;
|
||||
using osu.Game.Online.Multiplayer;
|
||||
using osu.Game.Screens.Multi.Components;
|
||||
using OpenTK;
|
||||
using OpenTK.Graphics;
|
||||
using osu.Framework.Input.States;
|
||||
|
||||
namespace osu.Game.Screens.Multi.Screens.Match.Settings
|
||||
{
|
||||
@ -36,7 +38,7 @@ namespace osu.Game.Screens.Multi.Screens.Match.Settings
|
||||
{
|
||||
private const float transition_duration = 200;
|
||||
|
||||
private readonly Container selection;
|
||||
private readonly CircularContainer hover, selection;
|
||||
|
||||
public GameTypePickerItem(GameType value) : base(value)
|
||||
{
|
||||
@ -58,10 +60,24 @@ namespace osu.Game.Screens.Multi.Screens.Match.Settings
|
||||
icon = new DrawableGameType(Value)
|
||||
{
|
||||
Size = new Vector2(height),
|
||||
Margin = new MarginPadding(selection_width),
|
||||
},
|
||||
new Container
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Padding = new MarginPadding(selection_width),
|
||||
Child = hover = new CircularContainer
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Masking = true,
|
||||
Alpha = 0,
|
||||
Child = new Box
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
icon.Margin = new MarginPadding(selection_width);
|
||||
}
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
@ -70,6 +86,18 @@ namespace osu.Game.Screens.Multi.Screens.Match.Settings
|
||||
selection.Colour = colours.Yellow;
|
||||
}
|
||||
|
||||
protected override bool OnHover(InputState state)
|
||||
{
|
||||
hover.FadeTo(0.05f, transition_duration, Easing.OutQuint);
|
||||
return base.OnHover(state);
|
||||
}
|
||||
|
||||
protected override void OnHoverLost(InputState state)
|
||||
{
|
||||
hover.FadeOut(transition_duration, Easing.OutQuint);
|
||||
base.OnHoverLost(state);
|
||||
}
|
||||
|
||||
protected override void OnActivated()
|
||||
{
|
||||
selection.FadeIn(transition_duration, Easing.OutQuint);
|
||||
|
@ -10,6 +10,8 @@ using osu.Game.Graphics;
|
||||
using osu.Game.Graphics.Sprites;
|
||||
using osu.Game.Online.Multiplayer;
|
||||
using OpenTK;
|
||||
using osu.Framework.Input.States;
|
||||
using OpenTK.Graphics;
|
||||
|
||||
namespace osu.Game.Screens.Multi.Screens.Match.Settings
|
||||
{
|
||||
@ -34,7 +36,7 @@ namespace osu.Game.Screens.Multi.Screens.Match.Settings
|
||||
{
|
||||
private const float transition_duration = 200;
|
||||
|
||||
private readonly Box selection;
|
||||
private readonly Box hover, selection;
|
||||
|
||||
public RoomAvailabilityPickerItem(RoomAvailability value) : base(value)
|
||||
{
|
||||
@ -55,6 +57,12 @@ namespace osu.Game.Screens.Multi.Screens.Match.Settings
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Alpha = 0,
|
||||
},
|
||||
hover = new Box
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Colour = Color4.White,
|
||||
Alpha = 0,
|
||||
},
|
||||
new OsuSpriteText
|
||||
{
|
||||
Anchor = Anchor.Centre,
|
||||
@ -71,6 +79,18 @@ namespace osu.Game.Screens.Multi.Screens.Match.Settings
|
||||
selection.Colour = colours.GreenLight;
|
||||
}
|
||||
|
||||
protected override bool OnHover(InputState state)
|
||||
{
|
||||
hover.FadeTo(0.05f, transition_duration, Easing.OutQuint);
|
||||
return base.OnHover(state);
|
||||
}
|
||||
|
||||
protected override void OnHoverLost(InputState state)
|
||||
{
|
||||
hover.FadeOut(transition_duration, Easing.OutQuint);
|
||||
base.OnHoverLost(state);
|
||||
}
|
||||
|
||||
protected override void OnActivated()
|
||||
{
|
||||
selection.FadeIn(transition_duration, Easing.OutQuint);
|
||||
|
Reference in New Issue
Block a user