2019-06-11 01:17:44 +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.
using osu.Framework.Extensions.Color4Extensions ;
using osu.Framework.Graphics ;
using osu.Framework.Graphics.Containers ;
using osu.Framework.Graphics.Shapes ;
2019-06-11 17:29:42 +08:00
using osu.Game.Beatmaps ;
2019-06-11 01:17:44 +08:00
using osu.Game.Graphics ;
using osu.Game.Graphics.Containers ;
using osuTK.Graphics ;
namespace osu.Game.Overlays.BeatmapSet
{
2019-06-27 10:40:22 +08:00
public class BeatmapAvailability : Container
2019-06-11 01:17:44 +08:00
{
2019-06-11 17:29:42 +08:00
private BeatmapSetInfo beatmapSet ;
2019-06-11 01:17:44 +08:00
2021-10-21 17:53:49 +08:00
private bool downloadDisabled = > BeatmapSet ? . OnlineInfo . Availability . DownloadDisabled ? ? false ;
private bool hasExternalLink = > ! string . IsNullOrEmpty ( BeatmapSet ? . OnlineInfo . Availability . ExternalLink ) ;
2019-06-21 00:09:40 +08:00
2019-06-27 11:33:14 +08:00
private readonly LinkFlowContainer textContainer ;
2019-06-19 06:43:28 +08:00
2019-06-27 10:40:22 +08:00
public BeatmapAvailability ( )
2019-06-11 01:17:44 +08:00
{
2019-06-13 22:32:27 +08:00
RelativeSizeAxes = Axes . X ;
AutoSizeAxes = Axes . Y ;
Padding = new MarginPadding { Top = 10 , Right = 20 } ;
2019-06-11 01:17:44 +08:00
Children = new Drawable [ ]
{
new Box
{
RelativeSizeAxes = Axes . Both ,
2019-06-13 22:32:27 +08:00
Colour = Color4 . Black . Opacity ( 0.6f ) ,
2019-06-11 01:17:44 +08:00
} ,
2019-06-27 11:34:22 +08:00
textContainer = new LinkFlowContainer ( t = > t . Font = OsuFont . GetFont ( size : 14 ) )
2019-06-11 01:17:44 +08:00
{
2019-06-27 11:34:22 +08:00
Direction = FillDirection . Full ,
2019-06-13 22:32:27 +08:00
RelativeSizeAxes = Axes . X ,
AutoSizeAxes = Axes . Y ,
2019-06-19 22:55:36 +08:00
Padding = new MarginPadding ( 10 ) ,
2019-06-11 01:17:44 +08:00
} ,
} ;
2019-06-11 17:29:42 +08:00
}
2019-06-27 11:33:14 +08:00
public BeatmapSetInfo BeatmapSet
{
get = > beatmapSet ;
2019-06-27 11:34:22 +08:00
2019-06-27 11:33:14 +08:00
set
{
if ( value = = beatmapSet )
return ;
beatmapSet = value ;
if ( downloadDisabled | | hasExternalLink )
{
Show ( ) ;
updateText ( ) ;
}
else
Hide ( ) ;
}
}
2019-06-19 08:37:08 +08:00
private void updateText ( )
2019-06-11 17:29:42 +08:00
{
2019-06-27 11:33:14 +08:00
textContainer . Clear ( ) ;
textContainer . AddParagraph ( downloadDisabled
2019-06-11 17:29:42 +08:00
? "This beatmap is currently not available for download."
2019-06-27 11:33:14 +08:00
: "Portions of this beatmap have been removed at the request of the creator or a third-party rights holder." , t = > t . Colour = Color4 . Orange ) ;
2019-06-11 17:29:42 +08:00
2019-06-21 00:09:40 +08:00
if ( hasExternalLink )
2019-06-27 11:33:14 +08:00
{
textContainer . NewParagraph ( ) ;
textContainer . NewParagraph ( ) ;
textContainer . AddLink ( "Check here for more information." , BeatmapSet . OnlineInfo . Availability . ExternalLink , creationParameters : t = > t . Font = OsuFont . GetFont ( size : 10 ) ) ;
}
2019-06-11 01:17:44 +08:00
}
}
}