mirror of https://github.com/ppy/osu
Fix default skin not having resources or providing samples
This commit is contained in:
parent
f6dee13991
commit
4fd89faaa4
|
@ -22,6 +22,8 @@ namespace osu.Game.Skinning
|
||||||
{
|
{
|
||||||
public class DefaultSkin : Skin
|
public class DefaultSkin : Skin
|
||||||
{
|
{
|
||||||
|
private readonly IStorageResourceProvider resources;
|
||||||
|
|
||||||
public DefaultSkin(IStorageResourceProvider resources)
|
public DefaultSkin(IStorageResourceProvider resources)
|
||||||
: this(SkinInfo.Default, resources)
|
: this(SkinInfo.Default, resources)
|
||||||
{
|
{
|
||||||
|
@ -31,12 +33,23 @@ public DefaultSkin(IStorageResourceProvider resources)
|
||||||
public DefaultSkin(SkinInfo skin, IStorageResourceProvider resources)
|
public DefaultSkin(SkinInfo skin, IStorageResourceProvider resources)
|
||||||
: base(skin, resources)
|
: base(skin, resources)
|
||||||
{
|
{
|
||||||
|
this.resources = resources;
|
||||||
Configuration = new DefaultSkinConfiguration();
|
Configuration = new DefaultSkinConfiguration();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Texture GetTexture(string componentName, WrapMode wrapModeS, WrapMode wrapModeT) => null;
|
public override Texture GetTexture(string componentName, WrapMode wrapModeS, WrapMode wrapModeT) => null;
|
||||||
|
|
||||||
public override ISample GetSample(ISampleInfo sampleInfo) => null;
|
public override ISample GetSample(ISampleInfo sampleInfo)
|
||||||
|
{
|
||||||
|
foreach (var lookup in sampleInfo.LookupNames)
|
||||||
|
{
|
||||||
|
var sample = resources.AudioManager.Samples.Get(lookup);
|
||||||
|
if (sample != null)
|
||||||
|
return sample;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public override Drawable GetDrawableComponent(ISkinComponent component)
|
public override Drawable GetDrawableComponent(ISkinComponent component)
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,7 +39,7 @@ public class SkinManager : ArchiveModelManager<SkinInfo, SkinFileInfo>, ISkinSou
|
||||||
|
|
||||||
private readonly IResourceStore<byte[]> legacyDefaultResources;
|
private readonly IResourceStore<byte[]> legacyDefaultResources;
|
||||||
|
|
||||||
public readonly Bindable<Skin> CurrentSkin = new Bindable<Skin>(new DefaultSkin(null));
|
public readonly Bindable<Skin> CurrentSkin = new Bindable<Skin>();
|
||||||
public readonly Bindable<SkinInfo> CurrentSkinInfo = new Bindable<SkinInfo>(SkinInfo.Default) { Default = SkinInfo.Default };
|
public readonly Bindable<SkinInfo> CurrentSkinInfo = new Bindable<SkinInfo>(SkinInfo.Default) { Default = SkinInfo.Default };
|
||||||
|
|
||||||
public override IEnumerable<string> HandledExtensions => new[] { ".osk" };
|
public override IEnumerable<string> HandledExtensions => new[] { ".osk" };
|
||||||
|
@ -56,6 +56,8 @@ public SkinManager(Storage storage, DatabaseContextFactory contextFactory, GameH
|
||||||
|
|
||||||
this.legacyDefaultResources = legacyDefaultResources;
|
this.legacyDefaultResources = legacyDefaultResources;
|
||||||
|
|
||||||
|
CurrentSkin.Value = new DefaultSkin(this);
|
||||||
|
|
||||||
CurrentSkinInfo.ValueChanged += skin => CurrentSkin.Value = GetSkin(skin.NewValue);
|
CurrentSkinInfo.ValueChanged += skin => CurrentSkin.Value = GetSkin(skin.NewValue);
|
||||||
CurrentSkin.ValueChanged += skin =>
|
CurrentSkin.ValueChanged += skin =>
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue