diff --git a/osu.Game.Tests/Beatmaps/IO/LegacyBeatmapExporterTest.cs b/osu.Game.Tests/Beatmaps/IO/LegacyBeatmapExporterTest.cs index 16d2947ce2..af41dc4edd 100644 --- a/osu.Game.Tests/Beatmaps/IO/LegacyBeatmapExporterTest.cs +++ b/osu.Game.Tests/Beatmaps/IO/LegacyBeatmapExporterTest.cs @@ -122,6 +122,29 @@ namespace osu.Game.Tests.Beatmaps.IO () => Is.EqualTo(384).Within(0.00001)); } + [Test] + public void TestBackgroundSpecificationPreserved() + { + IWorkingBeatmap beatmap = null!; + MemoryStream outStream = null!; + + // Ensure importer encoding is correct + AddStep("import beatmap", () => beatmap = importBeatmapFromArchives(@"241526 Soleily - Renatus.osz")); + AddAssert("beatmap background is correct", () => beatmap.BeatmapInfo.Metadata.BackgroundFile, () => Is.EqualTo("machinetop_background.jpg")); + + // Ensure exporter legacy conversion is correct + AddStep("export", () => + { + outStream = new MemoryStream(); + + new LegacyBeatmapExporter(LocalStorage) + .ExportToStream((BeatmapSetInfo)beatmap.BeatmapInfo.BeatmapSet!, outStream, null); + }); + + AddStep("import beatmap again", () => beatmap = importBeatmapFromStream(outStream)); + AddAssert("beatmap background is still correct", () => beatmap.BeatmapInfo.Metadata.BackgroundFile, () => Is.EqualTo("machinetop_background.jpg")); + } + [Test] public void TestExportStability() { diff --git a/osu.Game/Database/LegacyBeatmapExporter.cs b/osu.Game/Database/LegacyBeatmapExporter.cs index beb50ec4c8..aa07057aa8 100644 --- a/osu.Game/Database/LegacyBeatmapExporter.cs +++ b/osu.Game/Database/LegacyBeatmapExporter.cs @@ -74,6 +74,8 @@ namespace osu.Game.Database using var storyboardStreamReader = new LineBufferedReader(storyboardStream); var beatmapStoryboard = new LegacyStoryboardDecoder().Decode(storyboardStreamReader); + beatmapStoryboard.Beatmap = beatmapContent; + beatmapStoryboard.BeatmapInfo = beatmapInfo; MutateBeatmap(model, playableBeatmap); diff --git a/osu.Game/Storyboards/Storyboard.cs b/osu.Game/Storyboards/Storyboard.cs index d3c10aa162..5bee6c8a06 100644 --- a/osu.Game/Storyboards/Storyboard.cs +++ b/osu.Game/Storyboards/Storyboard.cs @@ -18,7 +18,7 @@ namespace osu.Game.Storyboards private readonly Dictionary layers = new Dictionary(); public IEnumerable Layers => layers.Values; - public BeatmapInfo BeatmapInfo = new BeatmapInfo(); + public BeatmapInfo BeatmapInfo { get; set; } = new BeatmapInfo(); public IBeatmap Beatmap { get; set; } = new Beatmap(); ///