2019-01-24 16:43:03 +08:00
|
|
|
|
// 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 17:19:50 +08:00
|
|
|
|
|
2020-04-13 19:00:06 +08:00
|
|
|
|
using osu.Framework.Audio.Sample;
|
2020-04-06 18:36:04 +08:00
|
|
|
|
using osu.Framework.Bindables;
|
2018-04-13 17:19:50 +08:00
|
|
|
|
using osu.Framework.IO.Stores;
|
2020-04-13 19:00:06 +08:00
|
|
|
|
using osu.Game.Audio;
|
2018-04-13 17:19:50 +08:00
|
|
|
|
using osu.Game.Beatmaps;
|
2020-12-21 14:14:32 +08:00
|
|
|
|
using osu.Game.IO;
|
2020-04-14 20:33:32 +08:00
|
|
|
|
using osu.Game.Rulesets.Objects.Legacy;
|
2018-04-13 17:19:50 +08:00
|
|
|
|
|
|
|
|
|
namespace osu.Game.Skinning
|
|
|
|
|
{
|
2020-09-01 00:29:46 +08:00
|
|
|
|
public class LegacyBeatmapSkin : LegacySkin
|
2018-04-13 17:19:50 +08:00
|
|
|
|
{
|
2020-03-31 09:14:36 +08:00
|
|
|
|
protected override bool AllowManiaSkin => false;
|
2020-07-29 05:52:09 +08:00
|
|
|
|
protected override bool UseCustomSampleBanks => true;
|
2020-03-31 09:14:36 +08:00
|
|
|
|
|
2020-12-21 14:14:32 +08:00
|
|
|
|
public LegacyBeatmapSkin(BeatmapInfo beatmap, IResourceStore<byte[]> storage, IStorageResourceProvider resources)
|
|
|
|
|
: base(createSkinInfo(beatmap), new LegacySkinResourceStore<BeatmapSetFileInfo>(beatmap.BeatmapSet, storage), resources, beatmap.Path)
|
2018-04-13 17:19:50 +08:00
|
|
|
|
{
|
2019-11-07 20:55:34 +08:00
|
|
|
|
// Disallow default colours fallback on beatmap skins to allow using parent skin combo colours. (via SkinProvidingContainer)
|
|
|
|
|
Configuration.AllowDefaultComboColoursFallback = false;
|
2018-04-13 17:19:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
2020-04-06 18:36:04 +08:00
|
|
|
|
public override IBindable<TValue> GetConfig<TLookup, TValue>(TLookup lookup)
|
|
|
|
|
{
|
|
|
|
|
switch (lookup)
|
|
|
|
|
{
|
|
|
|
|
case LegacySkinConfiguration.LegacySetting s when s == LegacySkinConfiguration.LegacySetting.Version:
|
2020-05-12 10:08:30 +08:00
|
|
|
|
// For lookup simplicity, ignore beatmap-level versioning completely.
|
2020-04-06 18:36:04 +08:00
|
|
|
|
|
2020-05-12 10:08:30 +08:00
|
|
|
|
// 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.
|
2020-04-06 18:36:04 +08:00
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return base.GetConfig<TLookup, TValue>(lookup);
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-13 19:00:06 +08:00
|
|
|
|
public override SampleChannel GetSample(ISampleInfo sampleInfo)
|
|
|
|
|
{
|
2020-04-14 20:33:32 +08:00
|
|
|
|
if (sampleInfo is ConvertHitObjectParser.LegacyHitSampleInfo legacy && legacy.CustomSampleBank == 0)
|
2020-04-13 19:00:06 +08:00
|
|
|
|
{
|
2020-04-14 20:33:32 +08:00
|
|
|
|
// When no custom sample bank is provided, always fall-back to the default samples.
|
2020-04-13 19:00:06 +08:00
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return base.GetSample(sampleInfo);
|
|
|
|
|
}
|
|
|
|
|
|
2018-04-13 17:19:50 +08:00
|
|
|
|
private static SkinInfo createSkinInfo(BeatmapInfo beatmap) =>
|
|
|
|
|
new SkinInfo { Name = beatmap.ToString(), Creator = beatmap.Metadata.Author.ToString() };
|
|
|
|
|
}
|
|
|
|
|
}
|