From ee13632375ea570a6da28e0926f908d8e3bdc4b9 Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Tue, 18 Feb 2020 13:21:55 +0900 Subject: [PATCH] Fix ogg beatmap/skin samples not loading --- .../Resources/Archives/ogg-beatmap.osz | Bin 0 -> 6428 bytes .../Resources/Archives/ogg-skin.osk | Bin 0 -> 3429 bytes .../Skins/TestSceneBeatmapSkinResources.cs | 37 ++++++++++++++++++ .../Skins/TestSceneSkinResources.cs | 33 ++++++++++++++++ osu.Game/Skinning/LegacySkin.cs | 2 + 5 files changed, 72 insertions(+) create mode 100644 osu.Game.Tests/Resources/Archives/ogg-beatmap.osz create mode 100644 osu.Game.Tests/Resources/Archives/ogg-skin.osk create mode 100644 osu.Game.Tests/Skins/TestSceneBeatmapSkinResources.cs create mode 100644 osu.Game.Tests/Skins/TestSceneSkinResources.cs diff --git a/osu.Game.Tests/Resources/Archives/ogg-beatmap.osz b/osu.Game.Tests/Resources/Archives/ogg-beatmap.osz new file mode 100644 index 0000000000000000000000000000000000000000..f264a8dda23f57f24acdef7b6838b71747f02186 GIT binary patch literal 6428 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 TKSOu2l$P4use+QZPM-b)-C={F literal 0 HcmV?d00001 diff --git a/osu.Game.Tests/Resources/Archives/ogg-skin.osk b/osu.Game.Tests/Resources/Archives/ogg-skin.osk new file mode 100644 index 0000000000000000000000000000000000000000..d7379446aac247b2310c38b3870dfddd1a2ed07b GIT binary patch literal 3429 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 SF}9;xmcw!UuoA_6wEGvU{_X4l literal 0 HcmV?d00001 diff --git a/osu.Game.Tests/Skins/TestSceneBeatmapSkinResources.cs b/osu.Game.Tests/Skins/TestSceneBeatmapSkinResources.cs new file mode 100644 index 0000000000..4d3b73fb32 --- /dev/null +++ b/osu.Game.Tests/Skins/TestSceneBeatmapSkinResources.cs @@ -0,0 +1,37 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using NUnit.Framework; +using osu.Framework.Allocation; +using osu.Framework.Audio.Track; +using osu.Framework.Testing; +using osu.Game.Audio; +using osu.Game.Beatmaps; +using osu.Game.IO.Archives; +using osu.Game.Tests.Resources; +using osu.Game.Tests.Visual; + +namespace osu.Game.Tests.Skins +{ + [HeadlessTest] + public class TestSceneBeatmapSkinResources : OsuTestScene + { + [Resolved] + private BeatmapManager beatmaps { get; set; } + + private WorkingBeatmap beatmap; + + [BackgroundDependencyLoader] + private void load() + { + var imported = beatmaps.Import(new ZipArchiveReader(TestResources.OpenResource("Archives/ogg-beatmap.osz"))).Result; + beatmap = beatmaps.GetWorkingBeatmap(imported.Beatmaps[0]); + } + + [Test] + public void TestRetrieveOggSample() => AddAssert("sample is non-null", () => beatmap.Skin.GetSample(new SampleInfo("sample")) != null); + + [Test] + public void TestRetrieveOggTrack() => AddAssert("track is non-null", () => !(beatmap.Track is TrackVirtual)); + } +} diff --git a/osu.Game.Tests/Skins/TestSceneSkinResources.cs b/osu.Game.Tests/Skins/TestSceneSkinResources.cs new file mode 100644 index 0000000000..107a96292f --- /dev/null +++ b/osu.Game.Tests/Skins/TestSceneSkinResources.cs @@ -0,0 +1,33 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using NUnit.Framework; +using osu.Framework.Allocation; +using osu.Framework.Testing; +using osu.Game.Audio; +using osu.Game.IO.Archives; +using osu.Game.Skinning; +using osu.Game.Tests.Resources; +using osu.Game.Tests.Visual; + +namespace osu.Game.Tests.Skins +{ + [HeadlessTest] + public class TestSceneSkinResources : OsuTestScene + { + [Resolved] + private SkinManager skins { get; set; } + + private ISkin skin; + + [BackgroundDependencyLoader] + private void load() + { + var imported = skins.Import(new ZipArchiveReader(TestResources.OpenResource("Archives/ogg-skin.osk"))).Result; + skin = skins.GetSkin(imported); + } + + [Test] + public void TestRetrieveOggSample() => AddAssert("sample is non-null", () => skin.GetSample(new SampleInfo("sample")) != null); + } +} diff --git a/osu.Game/Skinning/LegacySkin.cs b/osu.Game/Skinning/LegacySkin.cs index 94611317d5..29bcd2e210 100644 --- a/osu.Game/Skinning/LegacySkin.cs +++ b/osu.Game/Skinning/LegacySkin.cs @@ -54,6 +54,8 @@ namespace osu.Game.Skinning { Samples = audioManager?.GetSampleStore(storage); Textures = new TextureStore(new TextureLoaderStore(storage)); + + (storage as ResourceStore)?.AddExtension("ogg"); } }