osu/osu.Game/Online/API/Requests/Responses/APIBeatmapSet.cs

91 lines
2.7 KiB
C#
Raw Normal View History

2018-04-13 09:19:50 +00:00
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using System;
2018-04-13 09:19:50 +00:00
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using osu.Game.Beatmaps;
using osu.Game.Rulesets;
namespace osu.Game.Online.API.Requests.Responses
2018-04-13 09:19:50 +00:00
{
public class APIBeatmapSet : BeatmapMetadata // todo: this is a bit wrong...
2018-04-13 09:19:50 +00:00
{
[JsonProperty(@"covers")]
private BeatmapSetOnlineCovers covers { get; set; }
private int? onlineBeatmapSetID;
[JsonProperty(@"id")]
public int? OnlineBeatmapSetID
{
get { return onlineBeatmapSetID; }
set { onlineBeatmapSetID = value > 0 ? value : null; }
}
2018-04-13 09:19:50 +00:00
[JsonProperty(@"preview_url")]
private string preview { get; set; }
[JsonProperty(@"play_count")]
private int playCount { get; set; }
[JsonProperty(@"favourite_count")]
private int favouriteCount { get; set; }
[JsonProperty(@"bpm")]
private double bpm { get; set; }
[JsonProperty(@"video")]
private bool hasVideo { get; set; }
2018-05-31 15:09:19 +00:00
[JsonProperty(@"storyboard")]
private bool hasStoryboard { get; set; }
2018-04-13 09:19:50 +00:00
[JsonProperty(@"status")]
private BeatmapSetOnlineStatus status { 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")]
2018-06-08 03:04:33 +00:00
private long creatorId
{
2018-04-13 09:19:50 +00:00
set { Author.Id = value; }
}
[JsonProperty(@"beatmaps")]
2018-06-08 03:04:33 +00:00
private IEnumerable<APIBeatmap> beatmaps { get; set; }
2018-04-13 09:19:50 +00:00
public BeatmapSetInfo ToBeatmapSet(RulesetStore rulesets)
{
return new BeatmapSetInfo
{
OnlineBeatmapSetID = OnlineBeatmapSetID,
Metadata = this,
OnlineInfo = new BeatmapSetOnlineInfo
{
Covers = covers,
Preview = preview,
PlayCount = playCount,
FavouriteCount = favouriteCount,
BPM = bpm,
Status = status,
HasVideo = hasVideo,
2018-05-31 15:09:19 +00:00
HasStoryboard = hasStoryboard,
2018-04-13 09:19:50 +00:00
Submitted = submitted,
Ranked = ranked,
LastUpdated = lastUpdated,
},
Beatmaps = beatmaps?.Select(b => b.ToBeatmap(rulesets)).ToList(),
};
}
}
}