mirror of
https://github.com/ppy/osu.git
synced 2025-02-16 18:23:20 +08:00
Improve logic for CSB transfer
This commit is contained in:
parent
58a7313091
commit
6935221463
@ -8,6 +8,7 @@ using osu.Framework.Logging;
|
|||||||
using osu.Game.Audio;
|
using osu.Game.Audio;
|
||||||
using osu.Game.Beatmaps.ControlPoints;
|
using osu.Game.Beatmaps.ControlPoints;
|
||||||
using osu.Game.IO;
|
using osu.Game.IO;
|
||||||
|
using osu.Game.Rulesets.Objects.Legacy;
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Beatmaps.Formats
|
namespace osu.Game.Beatmaps.Formats
|
||||||
@ -168,8 +169,11 @@ namespace osu.Game.Beatmaps.Formats
|
|||||||
{
|
{
|
||||||
var baseInfo = base.ApplyTo(hitSampleInfo);
|
var baseInfo = base.ApplyTo(hitSampleInfo);
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(baseInfo.Suffix) && CustomSampleBank > 0)
|
if (baseInfo is ConvertHitObjectParser.LegacyHitSampleInfo legacy
|
||||||
baseInfo.Suffix = CustomSampleBank.ToString();
|
&& legacy.CustomSampleBank == 0)
|
||||||
|
{
|
||||||
|
legacy.CustomSampleBank = CustomSampleBank;
|
||||||
|
}
|
||||||
|
|
||||||
return baseInfo;
|
return baseInfo;
|
||||||
}
|
}
|
||||||
|
@ -409,26 +409,46 @@ namespace osu.Game.Rulesets.Objects.Legacy
|
|||||||
public SampleBankInfo Clone() => (SampleBankInfo)MemberwiseClone();
|
public SampleBankInfo Clone() => (SampleBankInfo)MemberwiseClone();
|
||||||
}
|
}
|
||||||
|
|
||||||
private class LegacyHitSampleInfo : HitSampleInfo
|
internal class LegacyHitSampleInfo : HitSampleInfo
|
||||||
{
|
{
|
||||||
|
private int customSampleBank;
|
||||||
|
|
||||||
public int CustomSampleBank
|
public int CustomSampleBank
|
||||||
{
|
{
|
||||||
|
get => customSampleBank;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
|
customSampleBank = value;
|
||||||
|
|
||||||
|
// A 0 custom sample bank should cause LegacyBeatmapSkin to always fall back to the user skin. This is done by giving a null suffix.
|
||||||
if (value > 0)
|
if (value > 0)
|
||||||
Suffix = value.ToString();
|
Suffix = value.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override IEnumerable<string> LookupNames
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// The lookup should only contain the suffix for custom sample bank 2 and beyond.
|
||||||
|
// For custom sample bank 1 and 0, the lookup should not contain the suffix as only the lookup source (beatmap or user skin) is changed.
|
||||||
|
if (CustomSampleBank >= 2)
|
||||||
|
yield return $"{Bank}-{Name}{Suffix}";
|
||||||
|
|
||||||
|
yield return $"{Bank}-{Name}";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class FileHitSampleInfo : HitSampleInfo
|
private class FileHitSampleInfo : LegacyHitSampleInfo
|
||||||
{
|
{
|
||||||
public string Filename;
|
public string Filename;
|
||||||
|
|
||||||
public FileHitSampleInfo()
|
public FileHitSampleInfo()
|
||||||
{
|
{
|
||||||
// Has no effect since LookupNames is overridden, however prompts LegacyBeatmapSkin to not fallback.
|
// Make sure that the LegacyBeatmapSkin does not fall back to the user skin.
|
||||||
Suffix = "0";
|
// Note that this does not change the lookup names, as they are overridden locally.
|
||||||
|
CustomSampleBank = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override IEnumerable<string> LookupNames => new[]
|
public override IEnumerable<string> LookupNames => new[]
|
||||||
|
Loading…
Reference in New Issue
Block a user