2019-01-24 16:43:03 +08:00
// 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.
2018-04-13 17:19:50 +08:00
using osu.Framework.Allocation ;
using osu.Framework.Graphics ;
using osu.Framework.Graphics.Containers ;
using osu.Game.Beatmaps ;
using osu.Game.Graphics.Containers ;
2018-07-05 20:00:23 +08:00
2018-04-13 17:19:50 +08:00
namespace osu.Game.Overlays.Profile.Sections
{
/// <summary>
/// Display artist/title/mapper information, commonly used as the left portion of a profile or score display row (see <see cref="DrawableProfileRow"/>).
/// </summary>
2019-07-15 18:09:21 +08:00
public abstract class BeatmapMetadataContainer : OsuHoverContainer
2018-04-13 17:19:50 +08:00
{
private readonly BeatmapInfo beatmap ;
2019-07-15 18:09:21 +08:00
protected BeatmapMetadataContainer ( BeatmapInfo beatmap )
2018-04-13 17:19:50 +08:00
{
this . beatmap = beatmap ;
AutoSizeAxes = Axes . Both ;
TooltipText = $"{beatmap.Metadata.Artist} - {beatmap.Metadata.Title}" ;
}
[BackgroundDependencyLoader(true)]
2018-09-19 13:07:46 +08:00
private void load ( BeatmapSetOverlay beatmapSetOverlay )
2018-04-13 17:19:50 +08:00
{
Action = ( ) = >
{
2018-07-05 20:00:23 +08:00
if ( beatmap . OnlineBeatmapID ! = null )
2018-07-10 15:02:13 +08:00
beatmapSetOverlay ? . FetchAndShowBeatmap ( beatmap . OnlineBeatmapID . Value ) ;
2018-07-05 20:00:23 +08:00
else if ( beatmap . BeatmapSet ? . OnlineBeatmapSetID ! = null )
beatmapSetOverlay ? . FetchAndShowBeatmapSet ( beatmap . BeatmapSet . OnlineBeatmapSetID . Value ) ;
2018-04-13 17:19:50 +08:00
} ;
Child = new FillFlowContainer
{
AutoSizeAxes = Axes . Both ,
2019-07-15 18:09:21 +08:00
Children = CreateText ( beatmap ) ,
2018-04-13 17:19:50 +08:00
} ;
}
2019-07-15 18:09:21 +08:00
protected abstract Drawable [ ] CreateText ( BeatmapInfo beatmap ) ;
2018-04-13 17:19:50 +08:00
}
}