From 6773877a40c532732d92fbbb1b655fd87ce92ef9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Sat, 27 Nov 2021 15:00:06 +0100 Subject: [PATCH] Remove no-longer-used beatmap panels --- .../BeatmapListing/Panels/BeatmapPanel.cs | 216 -------------- .../BeatmapListing/Panels/GridBeatmapPanel.cs | 269 ------------------ .../BeatmapListing/Panels/ListBeatmapPanel.cs | 267 ----------------- 3 files changed, 752 deletions(-) delete mode 100644 osu.Game/Overlays/BeatmapListing/Panels/BeatmapPanel.cs delete mode 100644 osu.Game/Overlays/BeatmapListing/Panels/GridBeatmapPanel.cs delete mode 100644 osu.Game/Overlays/BeatmapListing/Panels/ListBeatmapPanel.cs diff --git a/osu.Game/Overlays/BeatmapListing/Panels/BeatmapPanel.cs b/osu.Game/Overlays/BeatmapListing/Panels/BeatmapPanel.cs deleted file mode 100644 index 34086c214f..0000000000 --- a/osu.Game/Overlays/BeatmapListing/Panels/BeatmapPanel.cs +++ /dev/null @@ -1,216 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using osu.Framework.Allocation; -using osu.Framework.Bindables; -using osu.Framework.Extensions.Color4Extensions; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Cursor; -using osu.Framework.Graphics.Effects; -using osu.Framework.Graphics.Shapes; -using osu.Framework.Graphics.Sprites; -using osu.Framework.Graphics.UserInterface; -using osu.Framework.Input.Events; -using osu.Game.Audio; -using osu.Game.Beatmaps; -using osu.Game.Beatmaps.Drawables; -using osu.Game.Graphics; -using osu.Game.Graphics.Containers; -using osu.Game.Graphics.Sprites; -using osu.Game.Graphics.UserInterface; -using osu.Game.Online.API.Requests.Responses; -using osuTK; -using osuTK.Graphics; - -namespace osu.Game.Overlays.BeatmapListing.Panels -{ - public abstract class BeatmapPanel : OsuClickableContainer, IHasContextMenu - { - public readonly APIBeatmapSet SetInfo; - - private const double hover_transition_time = 400; - private const int maximum_difficulty_icons = 10; - - private Container content; - - public PreviewTrack Preview => PlayButton.Preview; - public IBindable PreviewPlaying => PlayButton?.Playing; - - protected abstract PlayButton PlayButton { get; } - protected abstract Box PreviewBar { get; } - - protected virtual bool FadePlayButton => true; - - protected override Container Content => content; - - protected Action ViewBeatmap; - - protected BeatmapPanel(APIBeatmapSet setInfo) - : base(HoverSampleSet.Submit) - { - Debug.Assert(setInfo.OnlineID > 0); - - SetInfo = setInfo; - } - - private readonly EdgeEffectParameters edgeEffectNormal = new EdgeEffectParameters - { - Type = EdgeEffectType.Shadow, - Offset = new Vector2(0f, 1f), - Radius = 2f, - Colour = Color4.Black.Opacity(0.25f), - }; - - private readonly EdgeEffectParameters edgeEffectHovered = new EdgeEffectParameters - { - Type = EdgeEffectType.Shadow, - Offset = new Vector2(0f, 5f), - Radius = 10f, - Colour = Color4.Black.Opacity(0.3f), - }; - - [BackgroundDependencyLoader(permitNulls: true)] - private void load(BeatmapManager beatmaps, OsuColour colours, BeatmapSetOverlay beatmapSetOverlay) - { - AddInternal(content = new Container - { - RelativeSizeAxes = Axes.Both, - Masking = true, - EdgeEffect = edgeEffectNormal, - Children = new[] - { - CreateBackground(), - new DownloadProgressBar(SetInfo) - { - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - Depth = -1, - }, - } - }); - - Action = ViewBeatmap = () => - { - Debug.Assert(SetInfo.OnlineID > 0); - beatmapSetOverlay?.FetchAndShowBeatmapSet(SetInfo.OnlineID); - }; - } - - protected override void Update() - { - base.Update(); - - if (PreviewPlaying.Value && Preview != null && Preview.TrackLoaded) - { - PreviewBar.Width = (float)(Preview.CurrentTime / Preview.Length); - } - } - - protected override bool OnHover(HoverEvent e) - { - content.TweenEdgeEffectTo(edgeEffectHovered, hover_transition_time, Easing.OutQuint); - content.MoveToY(-4, hover_transition_time, Easing.OutQuint); - if (FadePlayButton) - PlayButton.FadeIn(120, Easing.InOutQuint); - - return base.OnHover(e); - } - - protected override void OnHoverLost(HoverLostEvent e) - { - content.TweenEdgeEffectTo(edgeEffectNormal, hover_transition_time, Easing.OutQuint); - content.MoveToY(0, hover_transition_time, Easing.OutQuint); - if (FadePlayButton && !PreviewPlaying.Value) - PlayButton.FadeOut(120, Easing.InOutQuint); - - base.OnHoverLost(e); - } - - protected override void LoadComplete() - { - base.LoadComplete(); - this.FadeInFromZero(200, Easing.Out); - - PreviewPlaying.ValueChanged += playing => - { - PlayButton.FadeTo(playing.NewValue || IsHovered || !FadePlayButton ? 1 : 0, 120, Easing.InOutQuint); - PreviewBar.FadeTo(playing.NewValue ? 1 : 0, 120, Easing.InOutQuint); - }; - } - - protected List GetDifficultyIcons(OsuColour colours) - { - var icons = new List(); - - if (SetInfo.Beatmaps.Length > maximum_difficulty_icons) - { - foreach (var ruleset in SetInfo.Beatmaps.Select(b => b.Ruleset).Distinct()) - icons.Add(new GroupedDifficultyIcon(SetInfo.Beatmaps.Where(b => b.RulesetID == ruleset.OnlineID).ToList(), ruleset, this is ListBeatmapPanel ? Color4.White : colours.Gray5)); - } - else - { - foreach (var b in SetInfo.Beatmaps.OrderBy(beatmap => beatmap.RulesetID).ThenBy(beatmap => beatmap.StarRating)) - icons.Add(new DifficultyIcon(b)); - } - - return icons; - } - - protected Drawable CreateBackground() => new UpdateableOnlineBeatmapSetCover - { - RelativeSizeAxes = Axes.Both, - OnlineInfo = SetInfo, - }; - - public class Statistic : FillFlowContainer - { - private readonly SpriteText text; - - private int value; - - public int Value - { - get => value; - set - { - this.value = value; - text.Text = Value.ToString(@"N0"); - } - } - - public Statistic(IconUsage icon, int value = 0) - { - Anchor = Anchor.TopRight; - Origin = Anchor.TopRight; - AutoSizeAxes = Axes.Both; - Direction = FillDirection.Horizontal; - Spacing = new Vector2(5f, 0f); - - Children = new Drawable[] - { - text = new OsuSpriteText { Font = OsuFont.GetFont(weight: FontWeight.SemiBold, italics: true) }, - new SpriteIcon - { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - Icon = icon, - Shadow = true, - Size = new Vector2(14), - }, - }; - - Value = value; - } - } - - public MenuItem[] ContextMenuItems => new MenuItem[] - { - new OsuMenuItem("View Beatmap", MenuItemType.Highlighted, ViewBeatmap), - }; - } -} diff --git a/osu.Game/Overlays/BeatmapListing/Panels/GridBeatmapPanel.cs b/osu.Game/Overlays/BeatmapListing/Panels/GridBeatmapPanel.cs deleted file mode 100644 index 770e5af7bd..0000000000 --- a/osu.Game/Overlays/BeatmapListing/Panels/GridBeatmapPanel.cs +++ /dev/null @@ -1,269 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using osu.Framework.Allocation; -using osu.Framework.Extensions.Color4Extensions; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; -using osu.Framework.Graphics.Sprites; -using osu.Framework.Input.Events; -using osu.Framework.Localisation; -using osu.Game.Beatmaps.Drawables; -using osu.Game.Graphics; -using osu.Game.Graphics.Containers; -using osu.Game.Graphics.Sprites; -using osu.Game.Online.API.Requests.Responses; -using osu.Game.Overlays.BeatmapSet; -using osuTK; -using osuTK.Graphics; - -namespace osu.Game.Overlays.BeatmapListing.Panels -{ - public class GridBeatmapPanel : BeatmapPanel - { - private const float horizontal_padding = 10; - private const float vertical_padding = 5; - - private FillFlowContainer bottomPanel, statusContainer, titleContainer, artistContainer; - private PlayButton playButton; - private Box progressBar; - - protected override PlayButton PlayButton => playButton; - protected override Box PreviewBar => progressBar; - - public GridBeatmapPanel(APIBeatmapSet beatmap) - : base(beatmap) - { - Width = 380; - Height = 140 + vertical_padding; // full height of all the elements plus vertical padding (autosize uses the image) - } - - protected override void LoadComplete() - { - base.LoadComplete(); - bottomPanel.LayoutDuration = 200; - bottomPanel.LayoutEasing = Easing.Out; - bottomPanel.Origin = Anchor.BottomLeft; - } - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - Content.CornerRadius = 4; - - AddRange(new Drawable[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = Color4.Black.Opacity(0.5f), - }, - bottomPanel = new FillFlowContainer - { - Anchor = Anchor.BottomLeft, - Origin = Anchor.TopLeft, - Direction = FillDirection.Vertical, - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Spacing = new Vector2(0f, vertical_padding), - Children = new Drawable[] - { - new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Padding = new MarginPadding { Left = horizontal_padding, Right = horizontal_padding }, - Direction = FillDirection.Vertical, - Children = new Drawable[] - { - titleContainer = new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Children = new Drawable[] - { - new OsuSpriteText - { - Text = new RomanisableString(SetInfo.TitleUnicode, SetInfo.Title), - Font = OsuFont.GetFont(size: 18, weight: FontWeight.Bold, italics: true) - }, - } - }, - artistContainer = new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Children = new Drawable[] - { - new OsuSpriteText - { - Text = new RomanisableString(SetInfo.ArtistUnicode, SetInfo.Artist), - Font = OsuFont.GetFont(weight: FontWeight.Bold, italics: true) - } - } - } - }, - }, - new Container - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Children = new Drawable[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - }, - progressBar = new Box - { - Origin = Anchor.BottomLeft, - RelativeSizeAxes = Axes.X, - BypassAutoSizeAxes = Axes.Both, - Size = new Vector2(0, 3), - Alpha = 0, - Colour = colours.Yellow, - }, - new FillFlowContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Direction = FillDirection.Vertical, - Padding = new MarginPadding - { - Top = vertical_padding, - Bottom = vertical_padding, - Left = horizontal_padding, - Right = horizontal_padding, - }, - Children = new Drawable[] - { - new LinkFlowContainer(s => - { - s.Shadow = false; - s.Font = OsuFont.GetFont(size: 14); - }).With(d => - { - d.AutoSizeAxes = Axes.Both; - d.AddText("mapped by ", t => t.Colour = colours.Gray5); - d.AddUserLink(SetInfo.Author); - }), - new Container - { - AutoSizeAxes = Axes.X, - Height = 14, - Children = new[] - { - new OsuSpriteText - { - Text = SetInfo.Source, - Font = OsuFont.GetFont(size: 14), - Shadow = false, - Colour = colours.Gray5, - Alpha = string.IsNullOrEmpty(SetInfo.Source) ? 0f : 1f, - }, - }, - }, - new FillFlowContainer - { - AutoSizeAxes = Axes.X, - Height = 20, - Margin = new MarginPadding { Top = vertical_padding, Bottom = vertical_padding }, - Spacing = new Vector2(3), - Children = GetDifficultyIcons(colours), - }, - }, - }, - new BeatmapPanelDownloadButton(SetInfo) - { - Size = new Vector2(50, 30), - Margin = new MarginPadding(horizontal_padding), - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - }, - }, - }, - }, - }, - new FillFlowContainer - { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Vertical, - Margin = new MarginPadding { Top = vertical_padding, Right = vertical_padding }, - Children = new[] - { - new Statistic(FontAwesome.Solid.PlayCircle, SetInfo.PlayCount), - new Statistic(FontAwesome.Solid.Heart, SetInfo.FavouriteCount), - }, - }, - statusContainer = new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Margin = new MarginPadding { Top = 5, Left = 5 }, - Spacing = new Vector2(5), - }, - playButton = new PlayButton(SetInfo) - { - Margin = new MarginPadding { Top = 5, Left = 10 }, - Size = new Vector2(30), - Alpha = 0, - }, - }); - - if (SetInfo.HasExplicitContent) - { - titleContainer.Add(new ExplicitContentBeatmapPill - { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - Margin = new MarginPadding { Left = 10f, Top = 2f }, - }); - } - - if (SetInfo.TrackId != null) - { - artistContainer.Add(new FeaturedArtistBeatmapPill - { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - Margin = new MarginPadding { Left = 10f, Top = 2f }, - }); - } - - if (SetInfo.HasVideo) - { - statusContainer.Add(new IconPill(FontAwesome.Solid.Film)); - } - - if (SetInfo.HasStoryboard) - { - statusContainer.Add(new IconPill(FontAwesome.Solid.Image)); - } - - statusContainer.Add(new BeatmapSetOnlineStatusPill - { - AutoSizeAxes = Axes.Both, - TextSize = 12, - TextPadding = new MarginPadding { Horizontal = 10, Vertical = 5 }, - Status = SetInfo.Status, - }); - - PreviewPlaying.ValueChanged += _ => updateStatusContainer(); - } - - protected override bool OnHover(HoverEvent e) - { - updateStatusContainer(); - return base.OnHover(e); - } - - protected override void OnHoverLost(HoverLostEvent e) - { - base.OnHoverLost(e); - updateStatusContainer(); - } - - private void updateStatusContainer() => statusContainer.FadeTo(IsHovered || PreviewPlaying.Value ? 0 : 1, 120, Easing.InOutQuint); - } -} diff --git a/osu.Game/Overlays/BeatmapListing/Panels/ListBeatmapPanel.cs b/osu.Game/Overlays/BeatmapListing/Panels/ListBeatmapPanel.cs deleted file mode 100644 index dcd676724a..0000000000 --- a/osu.Game/Overlays/BeatmapListing/Panels/ListBeatmapPanel.cs +++ /dev/null @@ -1,267 +0,0 @@ -// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. -// See the LICENCE file in the repository root for full licence text. - -using osu.Framework.Allocation; -using osu.Framework.Extensions.Color4Extensions; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Colour; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Shapes; -using osu.Framework.Graphics.Sprites; -using osu.Framework.Localisation; -using osu.Game.Beatmaps.Drawables; -using osu.Game.Graphics; -using osu.Game.Graphics.Containers; -using osu.Game.Graphics.Sprites; -using osu.Game.Online.API.Requests.Responses; -using osu.Game.Overlays.BeatmapSet; -using osuTK; -using osuTK.Graphics; - -namespace osu.Game.Overlays.BeatmapListing.Panels -{ - public class ListBeatmapPanel : BeatmapPanel - { - private const float transition_duration = 120; - private const float horizontal_padding = 10; - private const float vertical_padding = 5; - private const float height = 70; - - private FillFlowContainer statusContainer, titleContainer, artistContainer; - protected BeatmapPanelDownloadButton DownloadButton; - private PlayButton playButton; - private Box progressBar; - - protected override bool FadePlayButton => false; - - protected override PlayButton PlayButton => playButton; - protected override Box PreviewBar => progressBar; - - public ListBeatmapPanel(APIBeatmapSet beatmap) - : base(beatmap) - { - RelativeSizeAxes = Axes.X; - Height = height; - } - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - Content.CornerRadius = 5; - - AddRange(new Drawable[] - { - new Box - { - RelativeSizeAxes = Axes.Both, - Colour = ColourInfo.GradientHorizontal(Color4.Black.Opacity(0.25f), Color4.Black.Opacity(0.75f)), - }, - new Container - { - RelativeSizeAxes = Axes.Both, - Padding = new MarginPadding { Top = vertical_padding, Bottom = vertical_padding, Left = horizontal_padding, Right = vertical_padding }, - Children = new Drawable[] - { - new FillFlowContainer - { - Origin = Anchor.CentreLeft, - Anchor = Anchor.CentreLeft, - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - LayoutEasing = Easing.OutQuint, - LayoutDuration = transition_duration, - Spacing = new Vector2(10, 0), - Children = new Drawable[] - { - new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Vertical, - Children = new Drawable[] - { - new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Children = new Drawable[] - { - playButton = new PlayButton(SetInfo) - { - Origin = Anchor.CentreLeft, - Anchor = Anchor.CentreLeft, - Size = new Vector2(height / 3), - FillMode = FillMode.Fit, - Margin = new MarginPadding { Right = 10 }, - }, - new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Vertical, - Children = new Drawable[] - { - titleContainer = new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Children = new[] - { - new OsuSpriteText - { - Text = new RomanisableString(SetInfo.TitleUnicode, SetInfo.Title), - Font = OsuFont.GetFont(size: 18, weight: FontWeight.Bold, italics: true) - }, - } - }, - artistContainer = new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Children = new[] - { - new OsuSpriteText - { - Text = new RomanisableString(SetInfo.ArtistUnicode, SetInfo.Artist), - Font = OsuFont.GetFont(weight: FontWeight.Bold, italics: true) - }, - }, - }, - } - }, - } - }, - new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Children = new Drawable[] - { - statusContainer = new FillFlowContainer - { - AutoSizeAxes = Axes.Both, - Margin = new MarginPadding { Vertical = vertical_padding, Horizontal = 5 }, - Spacing = new Vector2(5), - }, - new FillFlowContainer - { - AutoSizeAxes = Axes.X, - Height = 20, - Margin = new MarginPadding { Top = vertical_padding, Bottom = vertical_padding }, - Spacing = new Vector2(3), - Children = GetDifficultyIcons(colours), - }, - }, - }, - }, - }, - } - }, - new FillFlowContainer - { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Horizontal, - Children = new Drawable[] - { - new Container - { - Anchor = Anchor.CentreRight, - Origin = Anchor.CentreRight, - AutoSizeAxes = Axes.Both, - Child = DownloadButton = new BeatmapPanelDownloadButton(SetInfo) - { - Size = new Vector2(height - vertical_padding * 3), - Margin = new MarginPadding { Left = vertical_padding * 2, Right = vertical_padding }, - }, - }, - new FillFlowContainer - { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - AutoSizeAxes = Axes.Both, - Direction = FillDirection.Vertical, - Children = new Drawable[] - { - new Statistic(FontAwesome.Solid.PlayCircle, SetInfo.PlayCount), - new Statistic(FontAwesome.Solid.Heart, SetInfo.FavouriteCount), - new LinkFlowContainer(s => - { - s.Shadow = false; - s.Font = OsuFont.GetFont(size: 14); - }) - { - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - AutoSizeAxes = Axes.Both, - }.With(d => - { - d.AutoSizeAxes = Axes.Both; - d.AddText("mapped by "); - d.AddUserLink(SetInfo.Author); - }), - new OsuSpriteText - { - Text = SetInfo.Source, - Anchor = Anchor.TopRight, - Origin = Anchor.TopRight, - Font = OsuFont.GetFont(size: 14), - Alpha = string.IsNullOrEmpty(SetInfo.Source) ? 0f : 1f, - }, - }, - }, - }, - }, - }, - }, - progressBar = new Box - { - Anchor = Anchor.BottomLeft, - Origin = Anchor.BottomLeft, - RelativeSizeAxes = Axes.X, - BypassAutoSizeAxes = Axes.Y, - Size = new Vector2(0, 3), - Alpha = 0, - Colour = colours.Yellow, - }, - }); - - if (SetInfo.HasExplicitContent) - { - titleContainer.Add(new ExplicitContentBeatmapPill - { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - Margin = new MarginPadding { Left = 10f, Top = 2f }, - }); - } - - if (SetInfo.TrackId != null) - { - artistContainer.Add(new FeaturedArtistBeatmapPill - { - Anchor = Anchor.CentreLeft, - Origin = Anchor.CentreLeft, - Margin = new MarginPadding { Left = 10f, Top = 2f }, - }); - } - - if (SetInfo.HasVideo) - { - statusContainer.Add(new IconPill(FontAwesome.Solid.Film) { IconSize = new Vector2(20) }); - } - - if (SetInfo.HasStoryboard) - { - statusContainer.Add(new IconPill(FontAwesome.Solid.Image) { IconSize = new Vector2(20) }); - } - - statusContainer.Add(new BeatmapSetOnlineStatusPill - { - AutoSizeAxes = Axes.Both, - TextSize = 12, - TextPadding = new MarginPadding { Horizontal = 10, Vertical = 4 }, - Status = SetInfo.Status, - }); - } - } -}