mirror of
https://github.com/osukey/osukey.git
synced 2025-08-04 23:24:04 +09:00
Fix all remaining db structure issues
This commit is contained in:
@ -72,7 +72,7 @@ namespace osu.Game.Beatmaps
|
||||
AuthorString = @"Unknown Creator",
|
||||
},
|
||||
Version = @"Normal",
|
||||
Difficulty = new BeatmapDifficulty()
|
||||
BaseDifficulty = new BeatmapDifficulty()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -15,8 +15,6 @@ namespace osu.Game.Beatmaps
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int ID { get; set; }
|
||||
|
||||
public int BeatmapInfoID { get; set; }
|
||||
|
||||
public float DrainRate { get; set; } = DEFAULT_DIFFICULTY;
|
||||
public float CircleSize { get; set; } = DEFAULT_DIFFICULTY;
|
||||
public float OverallDifficulty { get; set; } = DEFAULT_DIFFICULTY;
|
||||
|
@ -20,7 +20,6 @@ namespace osu.Game.Beatmaps
|
||||
public int BeatmapVersion;
|
||||
|
||||
[JsonProperty("id")]
|
||||
[NotMapped]
|
||||
public int? OnlineBeatmapID { get; set; }
|
||||
|
||||
[JsonProperty("beatmapset_id")]
|
||||
@ -36,8 +35,7 @@ namespace osu.Game.Beatmaps
|
||||
|
||||
public int BaseDifficultyID { get; set; }
|
||||
|
||||
[Required]
|
||||
public BeatmapDifficulty Difficulty { get; set; }
|
||||
public BeatmapDifficulty BaseDifficulty { get; set; }
|
||||
|
||||
[NotMapped]
|
||||
public BeatmapMetrics Metrics { get; set; }
|
||||
@ -55,7 +53,6 @@ namespace osu.Game.Beatmaps
|
||||
/// <summary>
|
||||
/// MD5 is kept for legacy support (matching against replays, osu-web-10 etc.).
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
[JsonProperty("file_md5")]
|
||||
public string MD5Hash { get; set; }
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json;
|
||||
@ -16,19 +17,14 @@ namespace osu.Game.Beatmaps
|
||||
[NotMapped]
|
||||
public int? OnlineBeatmapSetID { get; set; }
|
||||
|
||||
public int? BeatmapSetInfoID { get; set; }
|
||||
|
||||
public BeatmapSetInfo BeatmapSetInfo { get; set; }
|
||||
|
||||
public int? BeatmapInfoID { get; set; }
|
||||
|
||||
public BeatmapInfo BeatmapInfo { get; set; }
|
||||
|
||||
public string Title { get; set; }
|
||||
public string TitleUnicode { get; set; }
|
||||
public string Artist { get; set; }
|
||||
public string ArtistUnicode { get; set; }
|
||||
|
||||
public List<BeatmapInfo> Beatmaps { get; set; }
|
||||
public List<BeatmapSetInfo> BeatmapSets { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Helper property to deserialize a username to <see cref="User"/>.
|
||||
/// </summary>
|
||||
|
@ -137,7 +137,7 @@ namespace osu.Game.Beatmaps
|
||||
public IEnumerable<BeatmapSetInfo> BeatmapSets => GetContext().BeatmapSetInfo
|
||||
.Include(s => s.Metadata)
|
||||
.Include(s => s.Beatmaps).ThenInclude(s => s.Ruleset)
|
||||
.Include(s => s.Beatmaps).ThenInclude(b => b.Difficulty)
|
||||
.Include(s => s.Beatmaps).ThenInclude(b => b.BaseDifficulty)
|
||||
.Include(s => s.Beatmaps).ThenInclude(b => b.Metadata)
|
||||
.Include(s => s.Files).ThenInclude(f => f.FileInfo);
|
||||
|
||||
@ -145,6 +145,6 @@ namespace osu.Game.Beatmaps
|
||||
.Include(b => b.BeatmapSet).ThenInclude(s => s.Metadata)
|
||||
.Include(b => b.Metadata)
|
||||
.Include(b => b.Ruleset)
|
||||
.Include(b => b.Difficulty);
|
||||
.Include(b => b.BaseDifficulty);
|
||||
}
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ namespace osu.Game.Beatmaps
|
||||
Objects = CreateBeatmapConverter().Convert(beatmap).HitObjects;
|
||||
|
||||
foreach (var h in Objects)
|
||||
h.ApplyDefaults(beatmap.ControlPointInfo, beatmap.BeatmapInfo.Difficulty);
|
||||
h.ApplyDefaults(beatmap.ControlPointInfo, beatmap.BeatmapInfo.BaseDifficulty);
|
||||
|
||||
PreprocessHitObjects();
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ namespace osu.Game.Beatmaps
|
||||
AuthorString = "no one",
|
||||
},
|
||||
BeatmapSet = new BeatmapSetInfo(),
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
DrainRate = 0,
|
||||
CircleSize = 0,
|
||||
|
@ -49,7 +49,7 @@ namespace osu.Game.Beatmaps.Formats
|
||||
BeatmapInfo = new BeatmapInfo
|
||||
{
|
||||
Metadata = new BeatmapMetadata(),
|
||||
Difficulty = new BeatmapDifficulty(),
|
||||
BaseDifficulty = new BeatmapDifficulty(),
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -196,7 +196,7 @@ namespace osu.Game.Beatmaps.Formats
|
||||
{
|
||||
var pair = splitKeyVal(line, ':');
|
||||
|
||||
var difficulty = beatmap.BeatmapInfo.Difficulty;
|
||||
var difficulty = beatmap.BeatmapInfo.BaseDifficulty;
|
||||
switch (pair.Key)
|
||||
{
|
||||
case @"HPDrainRate":
|
||||
@ -674,7 +674,7 @@ namespace osu.Game.Beatmaps.Formats
|
||||
}
|
||||
|
||||
foreach (var hitObject in beatmap.HitObjects)
|
||||
hitObject.ApplyDefaults(beatmap.ControlPointInfo, beatmap.BeatmapInfo.Difficulty);
|
||||
hitObject.ApplyDefaults(beatmap.ControlPointInfo, beatmap.BeatmapInfo.BaseDifficulty);
|
||||
}
|
||||
|
||||
private KeyValuePair<string, string> splitKeyVal(string line, char separator)
|
||||
|
@ -65,20 +65,22 @@ namespace osu.Game.Database
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
base.OnModelCreating(modelBuilder);
|
||||
|
||||
modelBuilder.Entity<BeatmapInfo>().HasIndex(b => b.MD5Hash);
|
||||
modelBuilder.Entity<BeatmapInfo>().HasIndex(b => b.Hash);
|
||||
|
||||
modelBuilder.Entity<BeatmapSetInfo>().HasIndex(b => b.DeletePending);
|
||||
modelBuilder.Entity<BeatmapSetInfo>().HasIndex(b => b.Hash);
|
||||
|
||||
modelBuilder.Entity<DatabasedKeyBinding>().HasIndex(b => b.Variant);
|
||||
modelBuilder.Entity<DatabasedKeyBinding>().HasIndex(b => b.IntAction);
|
||||
|
||||
modelBuilder.Entity<FileInfo>().HasIndex(b => b.Hash).IsUnique();
|
||||
modelBuilder.Entity<FileInfo>().HasIndex(b => b.ReferenceCount);
|
||||
modelBuilder.Entity<RulesetInfo>().HasIndex(b => b.Name).IsUnique();
|
||||
modelBuilder.Entity<RulesetInfo>().HasIndex(b => b.InstantiationInfo).IsUnique();
|
||||
|
||||
modelBuilder.Entity<RulesetInfo>().HasIndex(b => b.Available);
|
||||
|
||||
modelBuilder.Entity<BeatmapMetadata>().HasOne(m => m.BeatmapSetInfo).WithOne(s => s.Metadata).OnDelete(DeleteBehavior.Cascade);
|
||||
modelBuilder.Entity<BeatmapMetadata>().HasOne(m => m.BeatmapInfo).WithOne(b => b.Metadata).OnDelete(DeleteBehavior.Cascade);
|
||||
modelBuilder.Entity<BeatmapInfo>().HasOne(b => b.BaseDifficulty);
|
||||
}
|
||||
|
||||
private class OsuDbLoggerFactory : ILoggerFactory
|
||||
|
@ -10,7 +10,7 @@ using System;
|
||||
namespace osu.Game.Migrations
|
||||
{
|
||||
[DbContext(typeof(OsuDbContext))]
|
||||
[Migration("20171018125509_InitialCreate")]
|
||||
[Migration("20171019041408_InitialCreate")]
|
||||
partial class InitialCreate
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
@ -26,8 +26,6 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.Property<float>("ApproachRate");
|
||||
|
||||
b.Property<int>("BeatmapInfoID");
|
||||
|
||||
b.Property<float>("CircleSize");
|
||||
|
||||
b.Property<float>("DrainRate");
|
||||
@ -40,9 +38,6 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.HasIndex("BeatmapInfoID")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("BeatmapDifficulty");
|
||||
});
|
||||
|
||||
@ -73,6 +68,10 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.Property<string>("MD5Hash");
|
||||
|
||||
b.Property<int?>("MetadataID");
|
||||
|
||||
b.Property<int?>("OnlineBeatmapID");
|
||||
|
||||
b.Property<string>("Path");
|
||||
|
||||
b.Property<int>("RulesetID");
|
||||
@ -93,12 +92,16 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.HasIndex("BaseDifficultyID");
|
||||
|
||||
b.HasIndex("BeatmapSetInfoID");
|
||||
|
||||
b.HasIndex("Hash");
|
||||
|
||||
b.HasIndex("MD5Hash");
|
||||
|
||||
b.HasIndex("MetadataID");
|
||||
|
||||
b.HasIndex("RulesetID");
|
||||
|
||||
b.ToTable("BeatmapInfo");
|
||||
@ -120,10 +123,6 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.Property<string>("BackgroundFile");
|
||||
|
||||
b.Property<int?>("BeatmapInfoID");
|
||||
|
||||
b.Property<int?>("BeatmapSetInfoID");
|
||||
|
||||
b.Property<int>("PreviewTime");
|
||||
|
||||
b.Property<string>("Source");
|
||||
@ -136,12 +135,6 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.HasIndex("BeatmapInfoID")
|
||||
.IsUnique();
|
||||
|
||||
b.HasIndex("BeatmapSetInfoID")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("BeatmapMetadata");
|
||||
});
|
||||
|
||||
@ -175,6 +168,8 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.Property<string>("Hash");
|
||||
|
||||
b.Property<int?>("MetadataID");
|
||||
|
||||
b.Property<int?>("OnlineBeatmapSetID");
|
||||
|
||||
b.Property<bool>("Protected");
|
||||
@ -185,6 +180,8 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.HasIndex("Hash");
|
||||
|
||||
b.HasIndex("MetadataID");
|
||||
|
||||
b.ToTable("BeatmapSetInfo");
|
||||
});
|
||||
|
||||
@ -246,49 +243,31 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.HasIndex("Available");
|
||||
|
||||
b.HasIndex("InstantiationInfo")
|
||||
.IsUnique();
|
||||
|
||||
b.HasIndex("Name")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("RulesetInfo");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("osu.Game.Beatmaps.BeatmapDifficulty", b =>
|
||||
{
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapInfo")
|
||||
.WithOne("Difficulty")
|
||||
.HasForeignKey("osu.Game.Beatmaps.BeatmapDifficulty", "BeatmapInfoID")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("osu.Game.Beatmaps.BeatmapInfo", b =>
|
||||
{
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapDifficulty", "BaseDifficulty")
|
||||
.WithMany()
|
||||
.HasForeignKey("BaseDifficultyID")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapSetInfo", "BeatmapSet")
|
||||
.WithMany("Beatmaps")
|
||||
.HasForeignKey("BeatmapSetInfoID")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapMetadata", "Metadata")
|
||||
.WithMany("Beatmaps")
|
||||
.HasForeignKey("MetadataID");
|
||||
|
||||
b.HasOne("osu.Game.Rulesets.RulesetInfo", "Ruleset")
|
||||
.WithMany()
|
||||
.HasForeignKey("RulesetID")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("osu.Game.Beatmaps.BeatmapMetadata", b =>
|
||||
{
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapInfo", "BeatmapInfo")
|
||||
.WithOne("Metadata")
|
||||
.HasForeignKey("osu.Game.Beatmaps.BeatmapMetadata", "BeatmapInfoID")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapSetInfo", "BeatmapSetInfo")
|
||||
.WithOne("Metadata")
|
||||
.HasForeignKey("osu.Game.Beatmaps.BeatmapMetadata", "BeatmapSetInfoID")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetFileInfo", b =>
|
||||
{
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapSetInfo")
|
||||
@ -301,6 +280,13 @@ namespace osu.Game.Migrations
|
||||
.HasForeignKey("FileInfoID")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetInfo", b =>
|
||||
{
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapMetadata", "Metadata")
|
||||
.WithMany("BeatmapSets")
|
||||
.HasForeignKey("MetadataID");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
@ -9,19 +9,43 @@ namespace osu.Game.Migrations
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "BeatmapSetInfo",
|
||||
name: "BeatmapDifficulty",
|
||||
columns: table => new
|
||||
{
|
||||
ID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
DeletePending = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
Hash = table.Column<string>(type: "TEXT", nullable: true),
|
||||
OnlineBeatmapSetID = table.Column<int>(type: "INTEGER", nullable: true),
|
||||
Protected = table.Column<bool>(type: "INTEGER", nullable: false)
|
||||
ApproachRate = table.Column<float>(type: "REAL", nullable: false),
|
||||
CircleSize = table.Column<float>(type: "REAL", nullable: false),
|
||||
DrainRate = table.Column<float>(type: "REAL", nullable: false),
|
||||
OverallDifficulty = table.Column<float>(type: "REAL", nullable: false),
|
||||
SliderMultiplier = table.Column<float>(type: "REAL", nullable: false),
|
||||
SliderTickRate = table.Column<float>(type: "REAL", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_BeatmapSetInfo", x => x.ID);
|
||||
table.PrimaryKey("PK_BeatmapDifficulty", x => x.ID);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "BeatmapMetadata",
|
||||
columns: table => new
|
||||
{
|
||||
ID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
Artist = table.Column<string>(type: "TEXT", nullable: true),
|
||||
ArtistUnicode = table.Column<string>(type: "TEXT", nullable: true),
|
||||
AudioFile = table.Column<string>(type: "TEXT", nullable: true),
|
||||
Author = table.Column<string>(type: "TEXT", nullable: true),
|
||||
BackgroundFile = table.Column<string>(type: "TEXT", nullable: true),
|
||||
PreviewTime = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
Source = table.Column<string>(type: "TEXT", nullable: true),
|
||||
Tags = table.Column<string>(type: "TEXT", nullable: true),
|
||||
Title = table.Column<string>(type: "TEXT", nullable: true),
|
||||
TitleUnicode = table.Column<string>(type: "TEXT", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_BeatmapMetadata", x => x.ID);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
@ -69,6 +93,87 @@ namespace osu.Game.Migrations
|
||||
table.PrimaryKey("PK_RulesetInfo", x => x.ID);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "BeatmapSetInfo",
|
||||
columns: table => new
|
||||
{
|
||||
ID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
DeletePending = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
Hash = table.Column<string>(type: "TEXT", nullable: true),
|
||||
MetadataID = table.Column<int>(type: "INTEGER", nullable: true),
|
||||
OnlineBeatmapSetID = table.Column<int>(type: "INTEGER", nullable: true),
|
||||
Protected = table.Column<bool>(type: "INTEGER", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_BeatmapSetInfo", x => x.ID);
|
||||
table.ForeignKey(
|
||||
name: "FK_BeatmapSetInfo_BeatmapMetadata_MetadataID",
|
||||
column: x => x.MetadataID,
|
||||
principalTable: "BeatmapMetadata",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "BeatmapInfo",
|
||||
columns: table => new
|
||||
{
|
||||
ID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
AudioLeadIn = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
BaseDifficultyID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
BeatDivisor = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
BeatmapSetInfoID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
Countdown = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
DistanceSpacing = table.Column<double>(type: "REAL", nullable: false),
|
||||
GridSize = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
Hash = table.Column<string>(type: "TEXT", nullable: true),
|
||||
Hidden = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
LetterboxInBreaks = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
MD5Hash = table.Column<string>(type: "TEXT", nullable: true),
|
||||
MetadataID = table.Column<int>(type: "INTEGER", nullable: true),
|
||||
OnlineBeatmapID = table.Column<int>(type: "INTEGER", nullable: true),
|
||||
Path = table.Column<string>(type: "TEXT", nullable: true),
|
||||
RulesetID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
SpecialStyle = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
StackLeniency = table.Column<float>(type: "REAL", nullable: false),
|
||||
StarDifficulty = table.Column<double>(type: "REAL", nullable: false),
|
||||
StoredBookmarks = table.Column<string>(type: "TEXT", nullable: true),
|
||||
TimelineZoom = table.Column<double>(type: "REAL", nullable: false),
|
||||
Version = table.Column<string>(type: "TEXT", nullable: true),
|
||||
WidescreenStoryboard = table.Column<bool>(type: "INTEGER", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_BeatmapInfo", x => x.ID);
|
||||
table.ForeignKey(
|
||||
name: "FK_BeatmapInfo_BeatmapDifficulty_BaseDifficultyID",
|
||||
column: x => x.BaseDifficultyID,
|
||||
principalTable: "BeatmapDifficulty",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_BeatmapInfo_BeatmapSetInfo_BeatmapSetInfoID",
|
||||
column: x => x.BeatmapSetInfoID,
|
||||
principalTable: "BeatmapSetInfo",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_BeatmapInfo_BeatmapMetadata_MetadataID",
|
||||
column: x => x.MetadataID,
|
||||
principalTable: "BeatmapMetadata",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
table.ForeignKey(
|
||||
name: "FK_BeatmapInfo_RulesetInfo_RulesetID",
|
||||
column: x => x.RulesetID,
|
||||
principalTable: "RulesetInfo",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "BeatmapSetFileInfo",
|
||||
columns: table => new
|
||||
@ -96,116 +201,10 @@ namespace osu.Game.Migrations
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "BeatmapInfo",
|
||||
columns: table => new
|
||||
{
|
||||
ID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
AudioLeadIn = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
BaseDifficultyID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
BeatDivisor = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
BeatmapSetInfoID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
Countdown = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
DistanceSpacing = table.Column<double>(type: "REAL", nullable: false),
|
||||
GridSize = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
Hash = table.Column<string>(type: "TEXT", nullable: true),
|
||||
Hidden = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
LetterboxInBreaks = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
MD5Hash = table.Column<string>(type: "TEXT", nullable: true),
|
||||
Path = table.Column<string>(type: "TEXT", nullable: true),
|
||||
RulesetID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
SpecialStyle = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
StackLeniency = table.Column<float>(type: "REAL", nullable: false),
|
||||
StarDifficulty = table.Column<double>(type: "REAL", nullable: false),
|
||||
StoredBookmarks = table.Column<string>(type: "TEXT", nullable: true),
|
||||
TimelineZoom = table.Column<double>(type: "REAL", nullable: false),
|
||||
Version = table.Column<string>(type: "TEXT", nullable: true),
|
||||
WidescreenStoryboard = table.Column<bool>(type: "INTEGER", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_BeatmapInfo", x => x.ID);
|
||||
table.ForeignKey(
|
||||
name: "FK_BeatmapInfo_BeatmapSetInfo_BeatmapSetInfoID",
|
||||
column: x => x.BeatmapSetInfoID,
|
||||
principalTable: "BeatmapSetInfo",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_BeatmapInfo_RulesetInfo_RulesetID",
|
||||
column: x => x.RulesetID,
|
||||
principalTable: "RulesetInfo",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "BeatmapDifficulty",
|
||||
columns: table => new
|
||||
{
|
||||
ID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
ApproachRate = table.Column<float>(type: "REAL", nullable: false),
|
||||
BeatmapInfoID = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
CircleSize = table.Column<float>(type: "REAL", nullable: false),
|
||||
DrainRate = table.Column<float>(type: "REAL", nullable: false),
|
||||
OverallDifficulty = table.Column<float>(type: "REAL", nullable: false),
|
||||
SliderMultiplier = table.Column<float>(type: "REAL", nullable: false),
|
||||
SliderTickRate = table.Column<float>(type: "REAL", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_BeatmapDifficulty", x => x.ID);
|
||||
table.ForeignKey(
|
||||
name: "FK_BeatmapDifficulty_BeatmapInfo_BeatmapInfoID",
|
||||
column: x => x.BeatmapInfoID,
|
||||
principalTable: "BeatmapInfo",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "BeatmapMetadata",
|
||||
columns: table => new
|
||||
{
|
||||
ID = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
Artist = table.Column<string>(type: "TEXT", nullable: true),
|
||||
ArtistUnicode = table.Column<string>(type: "TEXT", nullable: true),
|
||||
AudioFile = table.Column<string>(type: "TEXT", nullable: true),
|
||||
Author = table.Column<string>(type: "TEXT", nullable: true),
|
||||
BackgroundFile = table.Column<string>(type: "TEXT", nullable: true),
|
||||
BeatmapInfoID = table.Column<int>(type: "INTEGER", nullable: true),
|
||||
BeatmapSetInfoID = table.Column<int>(type: "INTEGER", nullable: true),
|
||||
PreviewTime = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
Source = table.Column<string>(type: "TEXT", nullable: true),
|
||||
Tags = table.Column<string>(type: "TEXT", nullable: true),
|
||||
Title = table.Column<string>(type: "TEXT", nullable: true),
|
||||
TitleUnicode = table.Column<string>(type: "TEXT", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_BeatmapMetadata", x => x.ID);
|
||||
table.ForeignKey(
|
||||
name: "FK_BeatmapMetadata_BeatmapInfo_BeatmapInfoID",
|
||||
column: x => x.BeatmapInfoID,
|
||||
principalTable: "BeatmapInfo",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_BeatmapMetadata_BeatmapSetInfo_BeatmapSetInfoID",
|
||||
column: x => x.BeatmapSetInfoID,
|
||||
principalTable: "BeatmapSetInfo",
|
||||
principalColumn: "ID",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_BeatmapDifficulty_BeatmapInfoID",
|
||||
table: "BeatmapDifficulty",
|
||||
column: "BeatmapInfoID",
|
||||
unique: true);
|
||||
name: "IX_BeatmapInfo_BaseDifficultyID",
|
||||
table: "BeatmapInfo",
|
||||
column: "BaseDifficultyID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_BeatmapInfo_BeatmapSetInfoID",
|
||||
@ -222,23 +221,16 @@ namespace osu.Game.Migrations
|
||||
table: "BeatmapInfo",
|
||||
column: "MD5Hash");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_BeatmapInfo_MetadataID",
|
||||
table: "BeatmapInfo",
|
||||
column: "MetadataID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_BeatmapInfo_RulesetID",
|
||||
table: "BeatmapInfo",
|
||||
column: "RulesetID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_BeatmapMetadata_BeatmapInfoID",
|
||||
table: "BeatmapMetadata",
|
||||
column: "BeatmapInfoID",
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_BeatmapMetadata_BeatmapSetInfoID",
|
||||
table: "BeatmapMetadata",
|
||||
column: "BeatmapSetInfoID",
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_BeatmapSetFileInfo_BeatmapSetInfoID",
|
||||
table: "BeatmapSetFileInfo",
|
||||
@ -259,6 +251,11 @@ namespace osu.Game.Migrations
|
||||
table: "BeatmapSetInfo",
|
||||
column: "Hash");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_BeatmapSetInfo_MetadataID",
|
||||
table: "BeatmapSetInfo",
|
||||
column: "MetadataID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_FileInfo_Hash",
|
||||
table: "FileInfo",
|
||||
@ -284,27 +281,12 @@ namespace osu.Game.Migrations
|
||||
name: "IX_RulesetInfo_Available",
|
||||
table: "RulesetInfo",
|
||||
column: "Available");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_RulesetInfo_InstantiationInfo",
|
||||
table: "RulesetInfo",
|
||||
column: "InstantiationInfo",
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_RulesetInfo_Name",
|
||||
table: "RulesetInfo",
|
||||
column: "Name",
|
||||
unique: true);
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "BeatmapDifficulty");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "BeatmapMetadata");
|
||||
name: "BeatmapInfo");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "BeatmapSetFileInfo");
|
||||
@ -313,16 +295,19 @@ namespace osu.Game.Migrations
|
||||
name: "KeyBinding");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "BeatmapInfo");
|
||||
name: "BeatmapDifficulty");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "FileInfo");
|
||||
name: "RulesetInfo");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "BeatmapSetInfo");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "RulesetInfo");
|
||||
name: "FileInfo");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "BeatmapMetadata");
|
||||
}
|
||||
}
|
||||
}
|
@ -25,8 +25,6 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.Property<float>("ApproachRate");
|
||||
|
||||
b.Property<int>("BeatmapInfoID");
|
||||
|
||||
b.Property<float>("CircleSize");
|
||||
|
||||
b.Property<float>("DrainRate");
|
||||
@ -39,9 +37,6 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.HasIndex("BeatmapInfoID")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("BeatmapDifficulty");
|
||||
});
|
||||
|
||||
@ -72,6 +67,10 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.Property<string>("MD5Hash");
|
||||
|
||||
b.Property<int?>("MetadataID");
|
||||
|
||||
b.Property<int?>("OnlineBeatmapID");
|
||||
|
||||
b.Property<string>("Path");
|
||||
|
||||
b.Property<int>("RulesetID");
|
||||
@ -92,12 +91,16 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.HasIndex("BaseDifficultyID");
|
||||
|
||||
b.HasIndex("BeatmapSetInfoID");
|
||||
|
||||
b.HasIndex("Hash");
|
||||
|
||||
b.HasIndex("MD5Hash");
|
||||
|
||||
b.HasIndex("MetadataID");
|
||||
|
||||
b.HasIndex("RulesetID");
|
||||
|
||||
b.ToTable("BeatmapInfo");
|
||||
@ -119,10 +122,6 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.Property<string>("BackgroundFile");
|
||||
|
||||
b.Property<int?>("BeatmapInfoID");
|
||||
|
||||
b.Property<int?>("BeatmapSetInfoID");
|
||||
|
||||
b.Property<int>("PreviewTime");
|
||||
|
||||
b.Property<string>("Source");
|
||||
@ -135,12 +134,6 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.HasIndex("BeatmapInfoID")
|
||||
.IsUnique();
|
||||
|
||||
b.HasIndex("BeatmapSetInfoID")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("BeatmapMetadata");
|
||||
});
|
||||
|
||||
@ -174,6 +167,8 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.Property<string>("Hash");
|
||||
|
||||
b.Property<int?>("MetadataID");
|
||||
|
||||
b.Property<int?>("OnlineBeatmapSetID");
|
||||
|
||||
b.Property<bool>("Protected");
|
||||
@ -184,6 +179,8 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.HasIndex("Hash");
|
||||
|
||||
b.HasIndex("MetadataID");
|
||||
|
||||
b.ToTable("BeatmapSetInfo");
|
||||
});
|
||||
|
||||
@ -245,49 +242,31 @@ namespace osu.Game.Migrations
|
||||
|
||||
b.HasIndex("Available");
|
||||
|
||||
b.HasIndex("InstantiationInfo")
|
||||
.IsUnique();
|
||||
|
||||
b.HasIndex("Name")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("RulesetInfo");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("osu.Game.Beatmaps.BeatmapDifficulty", b =>
|
||||
{
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapInfo")
|
||||
.WithOne("Difficulty")
|
||||
.HasForeignKey("osu.Game.Beatmaps.BeatmapDifficulty", "BeatmapInfoID")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("osu.Game.Beatmaps.BeatmapInfo", b =>
|
||||
{
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapDifficulty", "BaseDifficulty")
|
||||
.WithMany()
|
||||
.HasForeignKey("BaseDifficultyID")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapSetInfo", "BeatmapSet")
|
||||
.WithMany("Beatmaps")
|
||||
.HasForeignKey("BeatmapSetInfoID")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapMetadata", "Metadata")
|
||||
.WithMany("Beatmaps")
|
||||
.HasForeignKey("MetadataID");
|
||||
|
||||
b.HasOne("osu.Game.Rulesets.RulesetInfo", "Ruleset")
|
||||
.WithMany()
|
||||
.HasForeignKey("RulesetID")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("osu.Game.Beatmaps.BeatmapMetadata", b =>
|
||||
{
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapInfo", "BeatmapInfo")
|
||||
.WithOne("Metadata")
|
||||
.HasForeignKey("osu.Game.Beatmaps.BeatmapMetadata", "BeatmapInfoID")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapSetInfo", "BeatmapSetInfo")
|
||||
.WithOne("Metadata")
|
||||
.HasForeignKey("osu.Game.Beatmaps.BeatmapMetadata", "BeatmapSetInfoID")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetFileInfo", b =>
|
||||
{
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapSetInfo")
|
||||
@ -300,6 +279,13 @@ namespace osu.Game.Migrations
|
||||
.HasForeignKey("FileInfoID")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("osu.Game.Beatmaps.BeatmapSetInfo", b =>
|
||||
{
|
||||
b.HasOne("osu.Game.Beatmaps.BeatmapMetadata", "Metadata")
|
||||
.WithMany("BeatmapSets")
|
||||
.HasForeignKey("MetadataID");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
|
@ -172,11 +172,11 @@ namespace osu.Game.Rulesets.UI
|
||||
|
||||
// Apply difficulty adjustments from mods before using Difficulty.
|
||||
foreach (var mod in Mods.OfType<IApplicableToDifficulty>())
|
||||
mod.ApplyToDifficulty(Beatmap.BeatmapInfo.Difficulty);
|
||||
mod.ApplyToDifficulty(Beatmap.BeatmapInfo.BaseDifficulty);
|
||||
|
||||
// Apply defaults
|
||||
foreach (var h in Beatmap.HitObjects)
|
||||
h.ApplyDefaults(Beatmap.ControlPointInfo, Beatmap.BeatmapInfo.Difficulty);
|
||||
h.ApplyDefaults(Beatmap.ControlPointInfo, Beatmap.BeatmapInfo.BaseDifficulty);
|
||||
|
||||
// Post-process the beatmap
|
||||
processor.PostProcess(Beatmap);
|
||||
|
@ -264,7 +264,7 @@ namespace osu.Game.Screens.Select
|
||||
advanced.Beatmap = new BeatmapInfo
|
||||
{
|
||||
StarDifficulty = 0,
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 0,
|
||||
DrainRate = 0,
|
||||
|
@ -32,17 +32,17 @@ namespace osu.Game.Screens.Select.Details
|
||||
if ((Beatmap?.Ruleset?.ID ?? 0) == 3)
|
||||
{
|
||||
firstValue.Title = "Key Amount";
|
||||
firstValue.Value = (int)Math.Round(Beatmap?.Difficulty?.CircleSize ?? 0);
|
||||
firstValue.Value = (int)Math.Round(Beatmap?.BaseDifficulty?.CircleSize ?? 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
firstValue.Title = "Circle Size";
|
||||
firstValue.Value = Beatmap?.Difficulty?.CircleSize ?? 0;
|
||||
firstValue.Value = Beatmap?.BaseDifficulty?.CircleSize ?? 0;
|
||||
}
|
||||
|
||||
hpDrain.Value = beatmap.Difficulty?.DrainRate ?? 0;
|
||||
accuracy.Value = beatmap.Difficulty?.OverallDifficulty ?? 0;
|
||||
approachRate.Value = beatmap.Difficulty?.ApproachRate ?? 0;
|
||||
hpDrain.Value = beatmap.BaseDifficulty?.DrainRate ?? 0;
|
||||
accuracy.Value = beatmap.BaseDifficulty?.OverallDifficulty ?? 0;
|
||||
approachRate.Value = beatmap.BaseDifficulty?.ApproachRate ?? 0;
|
||||
starDifficulty.Value = (float)beatmap.StarDifficulty;
|
||||
}
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ namespace osu.Game.Tests.Visual
|
||||
Source = "osu!lazer",
|
||||
Tags = "this beatmap has all the metrics",
|
||||
},
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 7,
|
||||
DrainRate = 1,
|
||||
@ -53,7 +53,7 @@ namespace osu.Game.Tests.Visual
|
||||
Source = "osu!lazer",
|
||||
Tags = "this beatmap has ratings metrics but not retries or fails",
|
||||
},
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 6,
|
||||
DrainRate = 9,
|
||||
@ -75,7 +75,7 @@ namespace osu.Game.Tests.Visual
|
||||
Source = "osu!lazer",
|
||||
Tags = "this beatmap has retries and fails but no ratings",
|
||||
},
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 3.7f,
|
||||
DrainRate = 6,
|
||||
@ -98,7 +98,7 @@ namespace osu.Game.Tests.Visual
|
||||
Source = "osu!lazer",
|
||||
Tags = "this beatmap has no metrics",
|
||||
},
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 5,
|
||||
DrainRate = 5,
|
||||
|
@ -65,7 +65,7 @@ namespace osu.Game.Tests.Visual
|
||||
StarDifficulty = 1.36,
|
||||
Version = @"BASIC",
|
||||
Ruleset = mania,
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 4,
|
||||
DrainRate = 6.5f,
|
||||
@ -93,7 +93,7 @@ namespace osu.Game.Tests.Visual
|
||||
StarDifficulty = 2.22,
|
||||
Version = @"NOVICE",
|
||||
Ruleset = mania,
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 4,
|
||||
DrainRate = 7,
|
||||
@ -121,7 +121,7 @@ namespace osu.Game.Tests.Visual
|
||||
StarDifficulty = 3.49,
|
||||
Version = @"ADVANCED",
|
||||
Ruleset = mania,
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 4,
|
||||
DrainRate = 7.5f,
|
||||
@ -149,7 +149,7 @@ namespace osu.Game.Tests.Visual
|
||||
StarDifficulty = 4.24,
|
||||
Version = @"EXHAUST",
|
||||
Ruleset = mania,
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 4,
|
||||
DrainRate = 8,
|
||||
@ -177,7 +177,7 @@ namespace osu.Game.Tests.Visual
|
||||
StarDifficulty = 5.26,
|
||||
Version = @"GRAVITY",
|
||||
Ruleset = mania,
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 4,
|
||||
DrainRate = 8.5f,
|
||||
@ -239,7 +239,7 @@ namespace osu.Game.Tests.Visual
|
||||
StarDifficulty = 1.40,
|
||||
Version = @"yzrin's Kantan",
|
||||
Ruleset = taiko,
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 2,
|
||||
DrainRate = 7,
|
||||
@ -267,7 +267,7 @@ namespace osu.Game.Tests.Visual
|
||||
StarDifficulty = 2.23,
|
||||
Version = @"Futsuu",
|
||||
Ruleset = taiko,
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 2,
|
||||
DrainRate = 6,
|
||||
@ -295,7 +295,7 @@ namespace osu.Game.Tests.Visual
|
||||
StarDifficulty = 3.19,
|
||||
Version = @"Muzukashii",
|
||||
Ruleset = taiko,
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 2,
|
||||
DrainRate = 6,
|
||||
@ -323,7 +323,7 @@ namespace osu.Game.Tests.Visual
|
||||
StarDifficulty = 3.97,
|
||||
Version = @"Charlotte's Oni",
|
||||
Ruleset = taiko,
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 5,
|
||||
DrainRate = 6,
|
||||
@ -351,7 +351,7 @@ namespace osu.Game.Tests.Visual
|
||||
StarDifficulty = 5.08,
|
||||
Version = @"Labyrinth Oni",
|
||||
Ruleset = taiko,
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
CircleSize = 5,
|
||||
DrainRate = 5,
|
||||
|
@ -80,7 +80,7 @@ namespace osu.Game.Tests.Visual
|
||||
Ruleset = rulesets.AvailableRulesets.First(),
|
||||
Path = "normal.osu",
|
||||
Version = "Normal",
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
OverallDifficulty = 3.5f,
|
||||
}
|
||||
@ -91,7 +91,7 @@ namespace osu.Game.Tests.Visual
|
||||
Ruleset = rulesets.AvailableRulesets.First(),
|
||||
Path = "hard.osu",
|
||||
Version = "Hard",
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
OverallDifficulty = 5,
|
||||
}
|
||||
@ -102,7 +102,7 @@ namespace osu.Game.Tests.Visual
|
||||
Ruleset = rulesets.AvailableRulesets.First(),
|
||||
Path = "insane.osu",
|
||||
Version = "Insane",
|
||||
Difficulty = new BeatmapDifficulty
|
||||
BaseDifficulty = new BeatmapDifficulty
|
||||
{
|
||||
OverallDifficulty = 7,
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ namespace osu.Game.Tests.Visual
|
||||
HitObjects = objects,
|
||||
BeatmapInfo = new BeatmapInfo
|
||||
{
|
||||
Difficulty = new BeatmapDifficulty(),
|
||||
BaseDifficulty = new BeatmapDifficulty(),
|
||||
Metadata = new BeatmapMetadata()
|
||||
}
|
||||
};
|
||||
|
@ -281,9 +281,9 @@
|
||||
<Compile Include="Beatmaps\Drawables\BeatmapSetCover.cs" />
|
||||
<Compile Include="Beatmaps\Drawables\BeatmapSetHeader.cs" />
|
||||
<Compile Include="Database\DatabaseContextFactory.cs" />
|
||||
<Compile Include="Migrations\20171018125509_InitialCreate.cs" />
|
||||
<Compile Include="Migrations\20171018125509_InitialCreate.designer.cs">
|
||||
<DependentUpon>20171018125509_InitialCreate.cs</DependentUpon>
|
||||
<Compile Include="Migrations\20171019041408_InitialCreate.cs" />
|
||||
<Compile Include="Migrations\20171019041408_InitialCreate.designer.cs">
|
||||
<DependentUpon>20171019041408_InitialCreate.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Migrations\OsuDbContextModelSnapshot.cs" />
|
||||
<Compile Include="Online\API\Requests\GetBeatmapSetRequest.cs" />
|
||||
|
Reference in New Issue
Block a user