// Copyright (c) 2007-2018 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using osu.Framework.Allocation; using osu.Framework.Extensions.Color4Extensions; using osu.Framework.Graphics; using osu.Game.Beatmaps; using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; using osuTK.Graphics; namespace osu.Game.Overlays.Direct { public class DownloadProgressBar : DownloadTrackingComposite { private readonly ProgressBar progressBar; public DownloadProgressBar(BeatmapSetInfo beatmapSet) : base(beatmapSet) { AddInternal(progressBar = new ProgressBar { Height = 0, Alpha = 0, }); AutoSizeAxes = Axes.Y; RelativeSizeAxes = Axes.X; } [BackgroundDependencyLoader(true)] private void load(OsuColour colours) { progressBar.FillColour = colours.Blue; progressBar.BackgroundColour = Color4.Black.Opacity(0.7f); progressBar.Current = Progress; State.BindValueChanged(state => { switch (state) { case DownloadState.NotDownloaded: progressBar.Current.Value = 0; progressBar.FadeOut(500); break; case DownloadState.Downloading: progressBar.FadeIn(400, Easing.OutQuint); progressBar.ResizeHeightTo(4, 400, Easing.OutQuint); break; case DownloadState.Downloaded: progressBar.FadeIn(400, Easing.OutQuint); progressBar.ResizeHeightTo(4, 400, Easing.OutQuint); progressBar.Current.Value = 1; progressBar.FillColour = colours.Yellow; break; case DownloadState.LocallyAvailable: progressBar.FadeOut(500); break; } }, true); } } }