osu/osu.Game/Skinning/LegacyBeatmapSkin.cs

57 lines
2.4 KiB
C#
Raw Normal View History

// 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.
2018-04-13 09:19:50 +00:00
using osu.Framework.Audio.Sample;
using osu.Framework.Bindables;
2018-04-13 09:19:50 +00:00
using osu.Framework.IO.Stores;
using osu.Game.Audio;
2018-04-13 09:19:50 +00:00
using osu.Game.Beatmaps;
using osu.Game.IO;
2020-04-14 12:33:32 +00:00
using osu.Game.Rulesets.Objects.Legacy;
2018-04-13 09:19:50 +00:00
namespace osu.Game.Skinning
{
public class LegacyBeatmapSkin : LegacySkin
2018-04-13 09:19:50 +00:00
{
protected override bool AllowManiaSkin => false;
protected override bool UseCustomSampleBanks => true;
public LegacyBeatmapSkin(BeatmapInfo beatmap, IResourceStore<byte[]> storage, IStorageResourceProvider resources)
: base(createSkinInfo(beatmap), new LegacySkinResourceStore<BeatmapSetFileInfo>(beatmap.BeatmapSet, storage), resources, beatmap.Path)
2018-04-13 09:19:50 +00:00
{
// Disallow default colours fallback on beatmap skins to allow using parent skin combo colours. (via SkinProvidingContainer)
Configuration.AllowDefaultComboColoursFallback = false;
2018-04-13 09:19:50 +00:00
}
public override IBindable<TValue> GetConfig<TLookup, TValue>(TLookup lookup)
{
switch (lookup)
{
case LegacySkinConfiguration.LegacySetting s when s == LegacySkinConfiguration.LegacySetting.Version:
// For lookup simplicity, ignore beatmap-level versioning completely.
// If it is decided that we need this due to beatmaps somehow using it, the default (1.0 specified in LegacySkinDecoder.CreateTemplateObject)
// needs to be removed else it will cause incorrect skin behaviours. This is due to the config lookup having no context of which skin
// it should be returning the version for.
return null;
}
return base.GetConfig<TLookup, TValue>(lookup);
}
public override ISample GetSample(ISampleInfo sampleInfo)
{
2020-04-14 12:33:32 +00:00
if (sampleInfo is ConvertHitObjectParser.LegacyHitSampleInfo legacy && legacy.CustomSampleBank == 0)
{
2020-04-14 12:33:32 +00:00
// When no custom sample bank is provided, always fall-back to the default samples.
return null;
}
return base.GetSample(sampleInfo);
}
2018-04-13 09:19:50 +00:00
private static SkinInfo createSkinInfo(BeatmapInfo beatmap) =>
new SkinInfo { Name = beatmap.ToString(), Creator = beatmap.Metadata.Author.ToString() };
}
}