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.Framework.Graphics.Cursor ;
using osu.Framework.Localisation ;
using osu.Game.Beatmaps ;
2019-02-12 12:04:46 +08:00
using osu.Game.Graphics ;
2018-04-13 17:19:50 +08:00
using osu.Game.Graphics.Containers ;
using osu.Game.Graphics.Sprites ;
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>
public class BeatmapMetadataContainer : OsuHoverContainer , IHasTooltip
{
private readonly BeatmapInfo beatmap ;
public BeatmapMetadataContainer ( BeatmapInfo beatmap )
{
this . beatmap = beatmap ;
AutoSizeAxes = Axes . Both ;
TooltipText = $"{beatmap.Metadata.Artist} - {beatmap.Metadata.Title}" ;
}
public string TooltipText { get ; }
[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 ,
Children = new Drawable [ ]
{
new OsuSpriteText
{
2019-02-28 13:46:52 +08:00
Text = new LocalisedString ( (
$"{beatmap.Metadata.TitleUnicode ?? beatmap.Metadata.Title} [{beatmap.Version}] " ,
2019-02-28 12:31:40 +08:00
$"{beatmap.Metadata.Title ?? beatmap.Metadata.TitleUnicode} [{beatmap.Version}] " ) ) ,
2019-02-12 12:04:46 +08:00
Font = OsuFont . GetFont ( size : 15 , weight : FontWeight . SemiBold , italics : true )
2018-04-13 17:19:50 +08:00
} ,
new OsuSpriteText
{
2018-09-19 13:07:46 +08:00
Text = new LocalisedString ( ( beatmap . Metadata . ArtistUnicode , beatmap . Metadata . Artist ) ) ,
2018-04-13 17:19:50 +08:00
Padding = new MarginPadding { Top = 3 } ,
2019-02-20 15:52:36 +08:00
Font = OsuFont . GetFont ( size : 12 , weight : FontWeight . Regular , italics : true )
2018-04-13 17:19:50 +08:00
} ,
} ,
} ;
}
}
}