1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-15 12:42:56 +08:00

Enable NRT in RulesetResourcesSkin

This commit is contained in:
Salman Ahmed 2021-06-23 09:52:00 +03:00
parent 0db06c727b
commit 2e6800f586

View File

@ -1,6 +1,8 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // 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. // See the LICENCE file in the repository root for full licence text.
#nullable enable
using System; using System;
using osu.Framework.Audio; using osu.Framework.Audio;
using osu.Framework.Audio.Sample; using osu.Framework.Audio.Sample;
@ -20,26 +22,29 @@ namespace osu.Game.Skinning
/// </summary> /// </summary>
public class RulesetResourcesSkin : ISkin public class RulesetResourcesSkin : ISkin
{ {
private readonly TextureStore rulesetTextures; private readonly TextureStore? textures;
private readonly ISampleStore rulesetSamples; private readonly ISampleStore? samples;
public RulesetResourcesSkin(Ruleset ruleset, GameHost host, AudioManager audio) public RulesetResourcesSkin(Ruleset ruleset, GameHost host, AudioManager audio)
{ {
IResourceStore<byte[]> rulesetResources = ruleset.CreateResourceStore(); IResourceStore<byte[]>? resources = ruleset.CreateResourceStore();
rulesetTextures = new TextureStore(host.CreateTextureLoaderStore(new NamespacedResourceStore<byte[]>(rulesetResources, @"Textures"))); if (resources != null)
rulesetSamples = audio.GetSampleStore(new NamespacedResourceStore<byte[]>(rulesetResources, @"Samples")); {
textures = new TextureStore(host.CreateTextureLoaderStore(new NamespacedResourceStore<byte[]>(resources, @"Textures")));
samples = audio.GetSampleStore(new NamespacedResourceStore<byte[]>(resources, @"Samples"));
}
} }
public Drawable GetDrawableComponent(ISkinComponent component) => null; public Drawable? GetDrawableComponent(ISkinComponent component) => null;
public Texture GetTexture(string componentName, WrapMode wrapModeS, WrapMode wrapModeT) => rulesetTextures.Get(componentName, wrapModeS, wrapModeT); public Texture? GetTexture(string componentName, WrapMode wrapModeS, WrapMode wrapModeT) => textures?.Get(componentName, wrapModeS, wrapModeT);
public ISample GetSample(ISampleInfo sampleInfo) public ISample? GetSample(ISampleInfo sampleInfo)
{ {
foreach (var lookup in sampleInfo.LookupNames) foreach (var lookup in sampleInfo.LookupNames)
{ {
ISample sample = rulesetSamples.Get(lookup); ISample? sample = samples?.Get(lookup);
if (sample != null) if (sample != null)
return sample; return sample;
} }
@ -47,7 +52,7 @@ namespace osu.Game.Skinning
return null; return null;
} }
public IBindable<TValue> GetConfig<TLookup, TValue>(TLookup lookup) => null; public IBindable<TValue>? GetConfig<TLookup, TValue>(TLookup lookup) => null;
#region Disposal #region Disposal
@ -72,8 +77,8 @@ namespace osu.Game.Skinning
isDisposed = true; isDisposed = true;
rulesetTextures?.Dispose(); textures?.Dispose();
rulesetSamples?.Dispose(); samples?.Dispose();
} }
#endregion #endregion