mirror of
https://github.com/ppy/osu.git
synced 2024-12-14 19:22:54 +08:00
Add basic structure for buttons
This commit is contained in:
parent
f79c9e7f7e
commit
0faa26fc13
@ -9,6 +9,7 @@ using osu.Framework.Graphics.Shapes;
|
|||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Input.Events;
|
using osu.Framework.Input.Events;
|
||||||
using osu.Framework.Localisation;
|
using osu.Framework.Localisation;
|
||||||
|
using osu.Game.Beatmaps.Drawables.Cards.Buttons;
|
||||||
using osu.Game.Beatmaps.Drawables.Cards.Statistics;
|
using osu.Game.Beatmaps.Drawables.Cards.Statistics;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
@ -21,6 +22,7 @@ using osuTK;
|
|||||||
using osu.Game.Overlays.BeatmapListing.Panels;
|
using osu.Game.Overlays.BeatmapListing.Panels;
|
||||||
using osu.Game.Resources.Localisation.Web;
|
using osu.Game.Resources.Localisation.Web;
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
|
using DownloadButton = osu.Game.Beatmaps.Drawables.Cards.Buttons.DownloadButton;
|
||||||
|
|
||||||
namespace osu.Game.Beatmaps.Drawables.Cards
|
namespace osu.Game.Beatmaps.Drawables.Cards
|
||||||
{
|
{
|
||||||
@ -35,7 +37,9 @@ namespace osu.Game.Beatmaps.Drawables.Cards
|
|||||||
private readonly APIBeatmapSet beatmapSet;
|
private readonly APIBeatmapSet beatmapSet;
|
||||||
|
|
||||||
private UpdateableOnlineBeatmapSetCover leftCover;
|
private UpdateableOnlineBeatmapSetCover leftCover;
|
||||||
private FillFlowContainer iconArea;
|
private FillFlowContainer leftIconArea;
|
||||||
|
|
||||||
|
private Container rightButtonArea;
|
||||||
|
|
||||||
private Container mainContent;
|
private Container mainContent;
|
||||||
private BeatmapCardContentBackground mainContentBackground;
|
private BeatmapCardContentBackground mainContentBackground;
|
||||||
@ -79,7 +83,7 @@ namespace osu.Game.Beatmaps.Drawables.Cards
|
|||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
OnlineInfo = beatmapSet
|
OnlineInfo = beatmapSet
|
||||||
},
|
},
|
||||||
iconArea = new FillFlowContainer
|
leftIconArea = new FillFlowContainer
|
||||||
{
|
{
|
||||||
Margin = new MarginPadding(5),
|
Margin = new MarginPadding(5),
|
||||||
AutoSizeAxes = Axes.Both,
|
AutoSizeAxes = Axes.Both,
|
||||||
@ -88,6 +92,27 @@ namespace osu.Game.Beatmaps.Drawables.Cards
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
rightButtonArea = new Container
|
||||||
|
{
|
||||||
|
Name = @"Right (button) area",
|
||||||
|
Width = 30,
|
||||||
|
RelativeSizeAxes = Axes.Y,
|
||||||
|
Origin = Anchor.TopRight,
|
||||||
|
Anchor = Anchor.TopRight,
|
||||||
|
Child = new FillFlowContainer<BeatmapCardIconButton>
|
||||||
|
{
|
||||||
|
AutoSizeAxes = Axes.Both,
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
Direction = FillDirection.Vertical,
|
||||||
|
Spacing = new Vector2(0, 14),
|
||||||
|
Children = new BeatmapCardIconButton[]
|
||||||
|
{
|
||||||
|
new FavouriteButton(beatmapSet),
|
||||||
|
new DownloadButton(beatmapSet)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
mainContent = new Container
|
mainContent = new Container
|
||||||
{
|
{
|
||||||
Name = @"Main content",
|
Name = @"Main content",
|
||||||
@ -226,10 +251,10 @@ namespace osu.Game.Beatmaps.Drawables.Cards
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (beatmapSet.HasVideo)
|
if (beatmapSet.HasVideo)
|
||||||
iconArea.Add(new IconPill(FontAwesome.Solid.Film));
|
leftIconArea.Add(new IconPill(FontAwesome.Solid.Film));
|
||||||
|
|
||||||
if (beatmapSet.HasStoryboard)
|
if (beatmapSet.HasStoryboard)
|
||||||
iconArea.Add(new IconPill(FontAwesome.Solid.Image));
|
leftIconArea.Add(new IconPill(FontAwesome.Solid.Image));
|
||||||
|
|
||||||
if (beatmapSet.HasExplicitContent)
|
if (beatmapSet.HasExplicitContent)
|
||||||
{
|
{
|
||||||
@ -306,6 +331,7 @@ namespace osu.Game.Beatmaps.Drawables.Cards
|
|||||||
|
|
||||||
leftCover.FadeColour(IsHovered ? OsuColour.Gray(0.2f) : Color4.White, TRANSITION_DURATION, Easing.OutQuint);
|
leftCover.FadeColour(IsHovered ? OsuColour.Gray(0.2f) : Color4.White, TRANSITION_DURATION, Easing.OutQuint);
|
||||||
statisticsContainer.FadeTo(IsHovered ? 1 : 0, TRANSITION_DURATION, Easing.OutQuint);
|
statisticsContainer.FadeTo(IsHovered ? 1 : 0, TRANSITION_DURATION, Easing.OutQuint);
|
||||||
|
rightButtonArea.FadeTo(IsHovered ? 1 : 0, TRANSITION_DURATION, Easing.OutQuint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
// 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 osu.Framework.Allocation;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Sprites;
|
||||||
|
using osu.Game.Graphics.Containers;
|
||||||
|
using osu.Game.Overlays;
|
||||||
|
using osuTK;
|
||||||
|
|
||||||
|
namespace osu.Game.Beatmaps.Drawables.Cards.Buttons
|
||||||
|
{
|
||||||
|
public abstract class BeatmapCardIconButton : OsuHoverContainer
|
||||||
|
{
|
||||||
|
protected readonly SpriteIcon Icon;
|
||||||
|
|
||||||
|
private float size;
|
||||||
|
|
||||||
|
public new float Size
|
||||||
|
{
|
||||||
|
get => size;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
size = value;
|
||||||
|
Icon.Size = new Vector2(size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected BeatmapCardIconButton()
|
||||||
|
{
|
||||||
|
Add(Icon = new SpriteIcon());
|
||||||
|
|
||||||
|
AutoSizeAxes = Axes.Both;
|
||||||
|
Size = 12;
|
||||||
|
}
|
||||||
|
|
||||||
|
[BackgroundDependencyLoader]
|
||||||
|
private void load(OverlayColourProvider colourProvider)
|
||||||
|
{
|
||||||
|
Anchor = Origin = Anchor.Centre;
|
||||||
|
|
||||||
|
IdleColour = colourProvider.Light1;
|
||||||
|
HoverColour = colourProvider.Content1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
22
osu.Game/Beatmaps/Drawables/Cards/Buttons/DownloadButton.cs
Normal file
22
osu.Game/Beatmaps/Drawables/Cards/Buttons/DownloadButton.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// 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 osu.Framework.Graphics.Sprites;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
|
|
||||||
|
namespace osu.Game.Beatmaps.Drawables.Cards.Buttons
|
||||||
|
{
|
||||||
|
public class DownloadButton : BeatmapCardIconButton
|
||||||
|
{
|
||||||
|
private readonly APIBeatmapSet beatmapSet;
|
||||||
|
|
||||||
|
public DownloadButton(APIBeatmapSet beatmapSet)
|
||||||
|
{
|
||||||
|
this.beatmapSet = beatmapSet;
|
||||||
|
|
||||||
|
Icon.Icon = FontAwesome.Solid.FileDownload;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: implement behaviour
|
||||||
|
}
|
||||||
|
}
|
22
osu.Game/Beatmaps/Drawables/Cards/Buttons/FavouriteButton.cs
Normal file
22
osu.Game/Beatmaps/Drawables/Cards/Buttons/FavouriteButton.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// 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 osu.Framework.Graphics.Sprites;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
|
|
||||||
|
namespace osu.Game.Beatmaps.Drawables.Cards.Buttons
|
||||||
|
{
|
||||||
|
public class FavouriteButton : BeatmapCardIconButton
|
||||||
|
{
|
||||||
|
private readonly APIBeatmapSet beatmapSet;
|
||||||
|
|
||||||
|
public FavouriteButton(APIBeatmapSet beatmapSet)
|
||||||
|
{
|
||||||
|
this.beatmapSet = beatmapSet;
|
||||||
|
|
||||||
|
Icon.Icon = FontAwesome.Regular.Heart;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: implement behaviour
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user