From c2f39711882817a40a46942ad3c194242625dbaf Mon Sep 17 00:00:00 2001 From: EVAST9919 Date: Fri, 10 Nov 2017 03:01:11 +0300 Subject: [PATCH] Extend Beatmap Set Response --- .../Visual/TestCaseBeatmapSetOverlay.cs | 12 +--- osu.Game/Beatmaps/BeatmapOnlineInfo.cs | 11 ---- osu.Game/Beatmaps/BeatmapSetOnlineInfo.cs | 13 ++--- .../API/Requests/GetBeatmapSetsResponse.cs | 56 +++++++++++++++++++ osu.Game/Overlays/BeatmapSet/BasicStats.cs | 6 +- osu.Game/Overlays/BeatmapSet/Header.cs | 24 ++------ 6 files changed, 72 insertions(+), 50 deletions(-) diff --git a/osu.Game.Tests/Visual/TestCaseBeatmapSetOverlay.cs b/osu.Game.Tests/Visual/TestCaseBeatmapSetOverlay.cs index 1ade0be626..2226dbf9e9 100644 --- a/osu.Game.Tests/Visual/TestCaseBeatmapSetOverlay.cs +++ b/osu.Game.Tests/Visual/TestCaseBeatmapSetOverlay.cs @@ -53,6 +53,7 @@ namespace osu.Game.Tests.Visual Submitted = new DateTime(2016, 2, 10), Ranked = new DateTime(2016, 6, 19), BPM = 236, + HasVideo = true, Covers = new BeatmapSetOnlineCovers { Cover = @"https://assets.ppy.sh/beatmaps/415886/covers/cover.jpg?1465651778", @@ -75,7 +76,6 @@ namespace osu.Game.Tests.Visual OnlineInfo = new BeatmapOnlineInfo { Length = 115000, - HasVideo = false, CircleCount = 265, SliderCount = 71, PlayCount = 47906, @@ -103,7 +103,6 @@ namespace osu.Game.Tests.Visual OnlineInfo = new BeatmapOnlineInfo { Length = 118000, - HasVideo = true, CircleCount = 592, SliderCount = 62, PlayCount = 162021, @@ -131,7 +130,6 @@ namespace osu.Game.Tests.Visual OnlineInfo = new BeatmapOnlineInfo { Length = 118000, - HasVideo = false, CircleCount = 1042, SliderCount = 79, PlayCount = 225178, @@ -159,7 +157,6 @@ namespace osu.Game.Tests.Visual OnlineInfo = new BeatmapOnlineInfo { Length = 118000, - HasVideo = false, CircleCount = 1352, SliderCount = 69, PlayCount = 131545, @@ -187,7 +184,6 @@ namespace osu.Game.Tests.Visual OnlineInfo = new BeatmapOnlineInfo { Length = 118000, - HasVideo = false, CircleCount = 1730, SliderCount = 115, PlayCount = 117673, @@ -227,6 +223,7 @@ namespace osu.Game.Tests.Visual Submitted = new DateTime(2016, 6, 11), Ranked = new DateTime(2016, 7, 12), BPM = 160, + HasVideo = false, Covers = new BeatmapSetOnlineCovers { Cover = @"https://assets.ppy.sh/beatmaps/625493/covers/cover.jpg?1499167472", @@ -249,7 +246,6 @@ namespace osu.Game.Tests.Visual OnlineInfo = new BeatmapOnlineInfo { Length = 193000, - HasVideo = false, CircleCount = 262, SliderCount = 0, PlayCount = 3952, @@ -277,7 +273,6 @@ namespace osu.Game.Tests.Visual OnlineInfo = new BeatmapOnlineInfo { Length = 193000, - HasVideo = false, CircleCount = 464, SliderCount = 0, PlayCount = 4833, @@ -305,7 +300,6 @@ namespace osu.Game.Tests.Visual OnlineInfo = new BeatmapOnlineInfo { Length = 193000, - HasVideo = false, CircleCount = 712, SliderCount = 0, PlayCount = 4405, @@ -333,7 +327,6 @@ namespace osu.Game.Tests.Visual OnlineInfo = new BeatmapOnlineInfo { Length = 193000, - HasVideo = false, CircleCount = 943, SliderCount = 0, PlayCount = 3950, @@ -361,7 +354,6 @@ namespace osu.Game.Tests.Visual OnlineInfo = new BeatmapOnlineInfo { Length = 193000, - HasVideo = false, CircleCount = 1068, SliderCount = 0, PlayCount = 5856, diff --git a/osu.Game/Beatmaps/BeatmapOnlineInfo.cs b/osu.Game/Beatmaps/BeatmapOnlineInfo.cs index 399cabda99..6a988036c5 100644 --- a/osu.Game/Beatmaps/BeatmapOnlineInfo.cs +++ b/osu.Game/Beatmaps/BeatmapOnlineInfo.cs @@ -1,8 +1,6 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using Newtonsoft.Json; - namespace osu.Game.Beatmaps { /// @@ -15,33 +13,24 @@ namespace osu.Game.Beatmaps /// public double Length { get; set; } - /// - /// Whether or not this beatmap has a background video. - /// - public bool HasVideo { get; set; } - /// /// The amount of circles in this beatmap. /// - [JsonProperty(@"count_circles")] public int CircleCount { get; set; } /// /// The amount of sliders in this beatmap. /// - [JsonProperty(@"count_sliders")] public int SliderCount { get; set; } /// /// The amount of plays this beatmap has. /// - [JsonProperty(@"playcount")] public int PlayCount { get; set; } /// /// The amount of passes this beatmap has. /// - [JsonProperty(@"passcount")] public int PassCount { get; set; } } } diff --git a/osu.Game/Beatmaps/BeatmapSetOnlineInfo.cs b/osu.Game/Beatmaps/BeatmapSetOnlineInfo.cs index 27d1f057ca..0518526f29 100644 --- a/osu.Game/Beatmaps/BeatmapSetOnlineInfo.cs +++ b/osu.Game/Beatmaps/BeatmapSetOnlineInfo.cs @@ -2,7 +2,6 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; -using Newtonsoft.Json; namespace osu.Game.Beatmaps { @@ -25,17 +24,20 @@ namespace osu.Game.Beatmaps /// The date this beatmap set was last updated. /// public DateTimeOffset? LastUpdated { get; set; } + + /// + /// Whether or not this beatmap set has a background video. + /// + public bool HasVideo { get; set; } /// /// The different sizes of cover art for this beatmap set. /// - [JsonProperty(@"covers")] public BeatmapSetOnlineCovers Covers { get; set; } /// /// A small sample clip of this beatmap set's song. /// - [JsonProperty(@"previewUrl")] public string Preview { get; set; } /// @@ -46,13 +48,11 @@ namespace osu.Game.Beatmaps /// /// The amount of plays this beatmap set has. /// - [JsonProperty(@"play_count")] public int PlayCount { get; set; } /// /// The amount of people who have favourited this beatmap set. /// - [JsonProperty(@"favourite_count")] public int FavouriteCount { get; set; } } @@ -60,17 +60,14 @@ namespace osu.Game.Beatmaps { public string CoverLowRes { get; set; } - [JsonProperty(@"cover@2x")] public string Cover { get; set; } public string CardLowRes { get; set; } - [JsonProperty(@"card@2x")] public string Card { get; set; } public string ListLowRes { get; set; } - [JsonProperty(@"list@2x")] public string List { get; set; } } } diff --git a/osu.Game/Online/API/Requests/GetBeatmapSetsResponse.cs b/osu.Game/Online/API/Requests/GetBeatmapSetsResponse.cs index f2ca0c1a2f..45f6d84784 100644 --- a/osu.Game/Online/API/Requests/GetBeatmapSetsResponse.cs +++ b/osu.Game/Online/API/Requests/GetBeatmapSetsResponse.cs @@ -6,6 +6,7 @@ using System.Linq; using Newtonsoft.Json; using osu.Game.Beatmaps; using osu.Game.Rulesets; +using System; namespace osu.Game.Online.API.Requests { @@ -23,6 +24,21 @@ namespace osu.Game.Online.API.Requests [JsonProperty(@"favourite_count")] private int favouriteCount { get; set; } + [JsonProperty(@"bpm")] + private double bpm { get; set; } + + [JsonProperty(@"video")] + private bool hasVideo { get; set; } + + [JsonProperty(@"submitted_date")] + private DateTimeOffset submitted { get; set; } + + [JsonProperty(@"ranked_date")] + private DateTimeOffset ranked { get; set; } + + [JsonProperty(@"last_updated")] + private DateTimeOffset lastUpdated { get; set; } + [JsonProperty(@"user_id")] private long creatorId { set { Author.Id = value; } @@ -43,6 +59,11 @@ namespace osu.Game.Online.API.Requests Preview = preview, PlayCount = playCount, FavouriteCount = favouriteCount, + BPM = bpm, + HasVideo = hasVideo, + Submitted = submitted, + Ranked = ranked, + LastUpdated = lastUpdated, }, Beatmaps = beatmaps.Select(b => b.ToBeatmap(rulesets)).ToList(), }; @@ -62,6 +83,30 @@ namespace osu.Game.Online.API.Requests [JsonProperty(@"difficulty_rating")] private double starDifficulty { get; set; } + [JsonProperty(@"drain")] + private float drainRate { get; set; } + + [JsonProperty(@"cs")] + private float circleSize { get; set; } + + [JsonProperty(@"ar")] + private float approachRate { get; set; } + + [JsonProperty(@"accuracy")] + private float overallDifficulty { get; set; } + + [JsonProperty(@"total_length")] + private double length { get; set; } + + [JsonProperty(@"count_circles")] + private int circleCount { get; set; } + + [JsonProperty(@"count_sliders")] + private int sliderCount { get; set; } + + [JsonProperty(@"version")] + private string version { get; set; } + public BeatmapInfo ToBeatmap(RulesetStore rulesets) { return new BeatmapInfo @@ -69,10 +114,21 @@ namespace osu.Game.Online.API.Requests Metadata = this, Ruleset = rulesets.GetRuleset(ruleset), StarDifficulty = starDifficulty, + Version = version, + BaseDifficulty = new BeatmapDifficulty + { + DrainRate = drainRate, + CircleSize = circleSize, + ApproachRate = approachRate, + OverallDifficulty = overallDifficulty, + }, OnlineInfo = new BeatmapOnlineInfo { PlayCount = playCount, PassCount = passCount, + Length = length, + CircleCount = circleCount, + SliderCount = sliderCount, }, }; } diff --git a/osu.Game/Overlays/BeatmapSet/BasicStats.cs b/osu.Game/Overlays/BeatmapSet/BasicStats.cs index 885f9cc219..3ecff85bee 100644 --- a/osu.Game/Overlays/BeatmapSet/BasicStats.cs +++ b/osu.Game/Overlays/BeatmapSet/BasicStats.cs @@ -39,9 +39,9 @@ namespace osu.Game.Overlays.BeatmapSet if (value == beatmap) return; beatmap = value; - length.Value = TimeSpan.FromMilliseconds(beatmap.OnlineInfo.Length).ToString(@"m\:ss"); - circleCount.Value = beatmap.OnlineInfo.CircleCount.ToString("N0"); - sliderCount.Value = beatmap.OnlineInfo.SliderCount.ToString("N0"); + length.Value = TimeSpan.FromSeconds(beatmap.OnlineInfo.Length).ToString(@"m\:ss"); + circleCount.Value = beatmap.OnlineInfo.CircleCount.ToString(); + sliderCount.Value = beatmap.OnlineInfo.SliderCount.ToString(); } } diff --git a/osu.Game/Overlays/BeatmapSet/Header.cs b/osu.Game/Overlays/BeatmapSet/Header.cs index d4514cbaed..96bb613f9f 100644 --- a/osu.Game/Overlays/BeatmapSet/Header.cs +++ b/osu.Game/Overlays/BeatmapSet/Header.cs @@ -26,6 +26,8 @@ namespace osu.Game.Overlays.BeatmapSet private readonly Box tabsBg; private readonly Container coverContainer; private readonly OsuSpriteText title, artist; + private readonly Container noVideoButtons; + private readonly FillFlowContainer videoButtons; private readonly AuthorInfo author; public Details Details; @@ -46,6 +48,9 @@ namespace osu.Game.Overlays.BeatmapSet title.Text = BeatmapSet.Metadata.Title; artist.Text = BeatmapSet.Metadata.Artist; + noVideoButtons.FadeTo(BeatmapSet.OnlineInfo.HasVideo ? 0 : 1, transition_duration); + videoButtons.FadeTo(BeatmapSet.OnlineInfo.HasVideo ? 1 : 0, transition_duration); + cover?.FadeOut(400, Easing.Out); coverContainer.Add(cover = new DelayedLoadWrapper(new BeatmapSetCover(BeatmapSet) { @@ -77,9 +82,6 @@ namespace osu.Game.Overlays.BeatmapSet Radius = 3, Offset = new Vector2(0f, 1f), }; - - Container noVideoButtons; - FillFlowContainer videoButtons; Children = new Drawable[] { new Container @@ -202,21 +204,7 @@ namespace osu.Game.Overlays.BeatmapSet }, }; - Picker.Beatmap.ValueChanged += b => - { - Details.Beatmap = b; - - if (b.OnlineInfo.HasVideo) - { - noVideoButtons.FadeOut(transition_duration); - videoButtons.FadeIn(transition_duration); - } - else - { - noVideoButtons.FadeIn(transition_duration); - videoButtons.FadeOut(transition_duration); - } - }; + Picker.Beatmap.ValueChanged += b => Details.Beatmap = b; } [BackgroundDependencyLoader]