mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 20:22:55 +08:00
Move nested class to bottom of file
This commit is contained in:
parent
0bda9e4b79
commit
f48e017ac9
@ -468,6 +468,44 @@ namespace osu.Game.Skinning
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IEnumerable<string> getLegacyLookupNames(HitSampleInfo hitSample)
|
||||||
|
{
|
||||||
|
var lookupNames = hitSample.LookupNames.SelectMany(getFallbackNames);
|
||||||
|
|
||||||
|
if (!UseCustomSampleBanks && !string.IsNullOrEmpty(hitSample.Suffix))
|
||||||
|
{
|
||||||
|
// for compatibility with stable, exclude the lookup names with the custom sample bank suffix, if they are not valid for use in this skin.
|
||||||
|
// using .EndsWith() is intentional as it ensures parity in all edge cases
|
||||||
|
// (see LegacyTaikoSampleInfo for an example of one - prioritising the taiko prefix should still apply, but the sample bank should not).
|
||||||
|
lookupNames = lookupNames.Where(name => !name.EndsWith(hitSample.Suffix, StringComparison.Ordinal));
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var l in lookupNames)
|
||||||
|
yield return l;
|
||||||
|
|
||||||
|
// also for compatibility, try falling back to non-bank samples (so-called "universal" samples) as the last resort.
|
||||||
|
// going forward specifying banks shall always be required, even for elements that wouldn't require it on stable,
|
||||||
|
// which is why this is done locally here.
|
||||||
|
yield return hitSample.Name;
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerable<string> getFallbackNames(string componentName)
|
||||||
|
{
|
||||||
|
// May be something like "Gameplay/osu/approachcircle" from lazer, or "Arrows/note1" from a user skin.
|
||||||
|
yield return componentName;
|
||||||
|
|
||||||
|
// Fall back to using the last piece for components coming from lazer (e.g. "Gameplay/osu/approachcircle" -> "approachcircle").
|
||||||
|
string lastPiece = componentName.Split('/').Last();
|
||||||
|
yield return componentName.StartsWith("Gameplay/taiko/", StringComparison.Ordinal) ? "taiko-" + lastPiece : lastPiece;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Dispose(bool isDisposing)
|
||||||
|
{
|
||||||
|
base.Dispose(isDisposing);
|
||||||
|
Textures?.Dispose();
|
||||||
|
Samples?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A sample wrapper which keeps a reference to the contained skin to avoid finalizer garbage collection of the managing SampleStore.
|
/// A sample wrapper which keeps a reference to the contained skin to avoid finalizer garbage collection of the managing SampleStore.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -538,43 +576,5 @@ namespace osu.Game.Skinning
|
|||||||
|
|
||||||
public IBindable<double> AggregateTempo => sample.AggregateTempo;
|
public IBindable<double> AggregateTempo => sample.AggregateTempo;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<string> getLegacyLookupNames(HitSampleInfo hitSample)
|
|
||||||
{
|
|
||||||
var lookupNames = hitSample.LookupNames.SelectMany(getFallbackNames);
|
|
||||||
|
|
||||||
if (!UseCustomSampleBanks && !string.IsNullOrEmpty(hitSample.Suffix))
|
|
||||||
{
|
|
||||||
// for compatibility with stable, exclude the lookup names with the custom sample bank suffix, if they are not valid for use in this skin.
|
|
||||||
// using .EndsWith() is intentional as it ensures parity in all edge cases
|
|
||||||
// (see LegacyTaikoSampleInfo for an example of one - prioritising the taiko prefix should still apply, but the sample bank should not).
|
|
||||||
lookupNames = lookupNames.Where(name => !name.EndsWith(hitSample.Suffix, StringComparison.Ordinal));
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var l in lookupNames)
|
|
||||||
yield return l;
|
|
||||||
|
|
||||||
// also for compatibility, try falling back to non-bank samples (so-called "universal" samples) as the last resort.
|
|
||||||
// going forward specifying banks shall always be required, even for elements that wouldn't require it on stable,
|
|
||||||
// which is why this is done locally here.
|
|
||||||
yield return hitSample.Name;
|
|
||||||
}
|
|
||||||
|
|
||||||
private IEnumerable<string> getFallbackNames(string componentName)
|
|
||||||
{
|
|
||||||
// May be something like "Gameplay/osu/approachcircle" from lazer, or "Arrows/note1" from a user skin.
|
|
||||||
yield return componentName;
|
|
||||||
|
|
||||||
// Fall back to using the last piece for components coming from lazer (e.g. "Gameplay/osu/approachcircle" -> "approachcircle").
|
|
||||||
string lastPiece = componentName.Split('/').Last();
|
|
||||||
yield return componentName.StartsWith("Gameplay/taiko/", StringComparison.Ordinal) ? "taiko-" + lastPiece : lastPiece;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void Dispose(bool isDisposing)
|
|
||||||
{
|
|
||||||
base.Dispose(isDisposing);
|
|
||||||
Textures?.Dispose();
|
|
||||||
Samples?.Dispose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user