mirror of
https://github.com/ppy/osu.git
synced 2026-05-17 03:52:35 +08:00
bd4ed49c06
* Add failing test coverage for layered hit samples not playing in mania when beatmap is converted Adding the `osu.Game.Rulesets.Osu` reference to the mania test project is required so that `HitObjectSampleTest` base logic doesn't die on https://github.com/ppy/osu/blob/f0aeeeea966f06add12cf2bca3dd48dac8573e82/osu.Game/Tests/Beatmaps/HitObjectSampleTest.cs#L88-L91 * Fix layered hit sounds not playing on converted beatmaps in mania Compare https://github.com/peppy/osu-stable-reference/blob/f9e58b4864a10f801393199e7652b2192c7342c3/osu!/GameplayElements/HitObjects/HitObject.cs#L476-L477. In case of converted beatmaps, the last condition there (`BeatmapManager.Current.PlayMode != PlayModes.OsuMania`) fails, and thus layered hitsounds are allowed to play. * Add failing test coverage for mania beatmap conversion assigning wrong samples to spinners * Fix mania beatmap conversion assigning wrong samples to spinners A spinner is never `IHasRepeats`. It was a dead condition, leading to the hitobject generating fallback `NodeSamples`, which in particular feature a silent tail which stable doesn't do. Noticeably, stable also appears to force the head of the generated hold note to have no addition sounds: https://github.com/peppy/osu-stable-reference/blob/f9e58b4864a10f801393199e7652b2192c7342c3/osu!/GameplayElements/HitObjects/Mania/SpinnerMania.cs#L86-L89 * Add failing test coverage for file hit sample not falling back to plain samples if file missing * Allow `FileHitSampleInfo` to fall back to standard samples if the file is not found (or not allowed to be looked up) I'm honestly not 100% as to how closely this matches stable because I reached the point wherein I'd rather not look at stable code anymore, so as long as this passes tests I'm fine to wait for someone else to report new breakage. * Use alternative workaround for lack of osu! ruleset assembly in mania test project * Fix encode stability test failures
64 lines
2.2 KiB
C#
64 lines
2.2 KiB
C#
// 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.
|
|
|
|
using System.Reflection;
|
|
using NUnit.Framework;
|
|
using osu.Framework.IO.Stores;
|
|
using osu.Game.Tests.Beatmaps;
|
|
|
|
namespace osu.Game.Rulesets.Mania.Tests
|
|
{
|
|
public partial class TestSceneManiaHitObjectSamples : HitObjectSampleTest
|
|
{
|
|
protected override Ruleset CreatePlayerRuleset() => new ManiaRuleset();
|
|
protected override IResourceStore<byte[]> RulesetResources => new DllResourceStore(Assembly.GetAssembly(typeof(TestSceneManiaHitObjectSamples)));
|
|
|
|
/// <summary>
|
|
/// Tests that when a normal sample bank is used, the normal hitsound will be looked up.
|
|
/// </summary>
|
|
[Test]
|
|
public void TestManiaHitObjectNormalSampleBank()
|
|
{
|
|
const string expected_sample = "normal-hitnormal2";
|
|
|
|
SetupSkins(expected_sample, expected_sample);
|
|
|
|
CreateTestWithBeatmap("mania-hitobject-beatmap-normal-sample-bank.osu");
|
|
|
|
AssertBeatmapLookup(expected_sample);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests that when a custom sample bank is used, layered hitsounds are not played
|
|
/// (only the sample from the custom bank is looked up).
|
|
/// </summary>
|
|
[Test]
|
|
public void TestManiaHitObjectCustomSampleBank()
|
|
{
|
|
const string expected_sample = "normal-hitwhistle2";
|
|
const string unwanted_sample = "normal-hitnormal2";
|
|
|
|
SetupSkins(expected_sample, unwanted_sample);
|
|
|
|
CreateTestWithBeatmap("mania-hitobject-beatmap-custom-sample-bank.osu");
|
|
|
|
AssertBeatmapLookup(expected_sample);
|
|
AssertNoLookup(unwanted_sample);
|
|
}
|
|
|
|
[Test]
|
|
public void TestConvertHitObjectCustomSampleBank()
|
|
{
|
|
const string beatmap_sample = "normal-hitwhistle2";
|
|
const string user_skin_sample = "normal-hitnormal";
|
|
|
|
SetupSkins(beatmap_sample, user_skin_sample);
|
|
|
|
CreateTestWithBeatmap("convert-beatmap-custom-sample-bank.osu");
|
|
|
|
AssertBeatmapLookup(beatmap_sample);
|
|
AssertUserLookup(user_skin_sample);
|
|
}
|
|
}
|
|
}
|