osu/osu.Game/Beatmaps/EFBeatmapMetadata.cs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

90 lines
2.9 KiB
C#
Raw Normal View History

// 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 09:19:50 +00:00
using System;
2017-10-19 05:05:11 +00:00
using System.Collections.Generic;
2017-10-04 19:52:12 +00:00
using System.ComponentModel.DataAnnotations.Schema;
using Newtonsoft.Json;
using osu.Framework.Testing;
using osu.Game.Database;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Users;
2018-04-13 09:19:50 +00:00
2017-07-26 04:22:46 +00:00
namespace osu.Game.Beatmaps
{
[ExcludeFromDynamicCompile]
[Serializable]
[Table(@"BeatmapMetadata")]
public class EFBeatmapMetadata : IEquatable<EFBeatmapMetadata>, IHasPrimaryKey, IBeatmapMetadataInfo
{
2017-10-14 05:28:25 +00:00
public int ID { get; set; }
2018-04-13 09:19:50 +00:00
public bool IsManaged => ID > 0;
public string Title { get; set; } = string.Empty;
2021-04-03 04:44:51 +00:00
2021-04-03 04:43:17 +00:00
[JsonProperty("title_unicode")]
public string TitleUnicode { get; set; } = string.Empty;
2021-04-03 04:44:51 +00:00
public string Artist { get; set; } = string.Empty;
2021-04-03 04:44:51 +00:00
2021-04-03 04:43:17 +00:00
[JsonProperty("artist_unicode")]
public string ArtistUnicode { get; set; } = string.Empty;
2018-04-13 09:19:50 +00:00
[JsonIgnore]
public List<EFBeatmapInfo> Beatmaps { get; set; } = new List<EFBeatmapInfo>();
2018-04-13 09:19:50 +00:00
[JsonIgnore]
public List<EFBeatmapSetInfo> BeatmapSets { get; set; } = new List<EFBeatmapSetInfo>();
2018-04-13 09:19:50 +00:00
/// <summary>
/// The author of the beatmaps in this set.
/// </summary>
[JsonIgnore]
public APIUser Author = new APIUser();
/// <summary>
/// Helper property to deserialize a username to <see cref="APIUser"/>.
/// </summary>
[JsonProperty(@"user_id")]
[Column("AuthorID")]
public int AuthorID
{
get => Author.Id; // This should not be used, but is required to make EF work correctly.
set => Author.Id = value;
}
/// <summary>
/// Helper property to deserialize a username to <see cref="APIUser"/>.
/// </summary>
[JsonProperty(@"creator")]
[Column("Author")]
public string AuthorString
{
get => Author.Username; // This should not be used, but is required to make EF work correctly.
set => Author.Username = value;
}
2018-04-13 09:19:50 +00:00
public string Source { get; set; } = string.Empty;
2018-04-13 09:19:50 +00:00
2017-06-07 14:30:52 +00:00
[JsonProperty(@"tags")]
public string Tags { get; set; } = string.Empty;
2019-02-28 04:31:40 +00:00
/// <summary>
/// The time in milliseconds to begin playing the track for preview purposes.
/// If -1, the track should begin playing at 40% of its length.
/// </summary>
public int PreviewTime { get; set; } = -1;
public string AudioFile { get; set; } = string.Empty;
public string BackgroundFile { get; set; } = string.Empty;
2018-04-13 09:19:50 +00:00
public bool Equals(EFBeatmapMetadata other) => ((IBeatmapMetadataInfo)this).Equals(other);
2018-04-13 09:19:50 +00:00
public override string ToString() => this.GetDisplayTitle();
IUser IBeatmapMetadataInfo.Author => Author;
}
}