Change extension from retrieval to post-processing instead

This commit is contained in:
Salman Ahmed 2023-09-19 03:29:43 +03:00
parent 57dc76b345
commit 291a91be66
6 changed files with 20 additions and 22 deletions

View File

@ -15,8 +15,8 @@ protected override void LoadComplete()
{
base.LoadComplete();
Texture? texture = Skin.GetTextureWithMaxSize("fruit-bananas", banana_max_size);
Texture? overlayTexture = Skin.GetTextureWithMaxSize("fruit-bananas-overlay", banana_max_size);
Texture? texture = Skin.GetTexture("fruit-bananas")?.WithMaximumSize(banana_max_size);
Texture? overlayTexture = Skin.GetTexture("fruit-bananas-overlay")?.WithMaximumSize(banana_max_size);
SetTexture(texture, overlayTexture);
}

View File

@ -20,8 +20,8 @@ protected override void LoadComplete()
{
base.LoadComplete();
Texture? texture = Skin.GetTextureWithMaxSize("fruit-drop", droplet_max_size);
Texture? overlayTexture = Skin.GetTextureWithMaxSize("fruit-drop-overlay", droplet_max_size);
Texture? texture = Skin.GetTexture("fruit-drop")?.WithMaximumSize(droplet_max_size);
Texture? overlayTexture = Skin.GetTexture("fruit-drop-overlay")?.WithMaximumSize(droplet_max_size);
SetTexture(texture, overlayTexture);
}

View File

@ -26,19 +26,19 @@ private void setTexture(FruitVisualRepresentation visualRepresentation)
switch (visualRepresentation)
{
case FruitVisualRepresentation.Pear:
SetTexture(Skin.GetTextureWithMaxSize("fruit-pear", fruit_max_size), Skin.GetTextureWithMaxSize("fruit-pear-overlay", fruit_max_size));
SetTexture(Skin.GetTexture("fruit-pear")?.WithMaximumSize(fruit_max_size), Skin.GetTexture("fruit-pear-overlay")?.WithMaximumSize(fruit_max_size));
break;
case FruitVisualRepresentation.Grape:
SetTexture(Skin.GetTextureWithMaxSize("fruit-grapes", fruit_max_size), Skin.GetTextureWithMaxSize("fruit-grapes-overlay", fruit_max_size));
SetTexture(Skin.GetTexture("fruit-grapes")?.WithMaximumSize(fruit_max_size), Skin.GetTexture("fruit-grapes-overlay")?.WithMaximumSize(fruit_max_size));
break;
case FruitVisualRepresentation.Pineapple:
SetTexture(Skin.GetTextureWithMaxSize("fruit-apple", fruit_max_size), Skin.GetTextureWithMaxSize("fruit-apple-overlay", fruit_max_size));
SetTexture(Skin.GetTexture("fruit-apple")?.WithMaximumSize(fruit_max_size), Skin.GetTexture("fruit-apple-overlay")?.WithMaximumSize(fruit_max_size));
break;
case FruitVisualRepresentation.Raspberry:
SetTexture(Skin.GetTextureWithMaxSize("fruit-orange", fruit_max_size), Skin.GetTextureWithMaxSize("fruit-orange-overlay", fruit_max_size));
SetTexture(Skin.GetTexture("fruit-orange")?.WithMaximumSize(fruit_max_size), Skin.GetTexture("fruit-orange-overlay")?.WithMaximumSize(fruit_max_size));
break;
}
}

View File

@ -70,7 +70,7 @@ private void load()
// expected behaviour in this scenario is not showing the overlay, rather than using hitcircleoverlay.png.
InternalChildren = new[]
{
CircleSprite = new LegacyKiaiFlashingDrawable(() => new Sprite { Texture = skin.GetTextureWithMaxSize(circleName, circle_piece_size) })
CircleSprite = new LegacyKiaiFlashingDrawable(() => new Sprite { Texture = skin.GetTexture(circleName)?.WithMaximumSize(circle_piece_size) })
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,

View File

@ -48,13 +48,13 @@ private void load(ISkinSource skin, OsuColour colours)
Anchor = Anchor.CentreRight,
Origin = Anchor.CentreLeft,
RelativeSizeAxes = Axes.Both,
Texture = skin.GetTexture("taiko-roll-end", new Vector2(128, 256), WrapMode.ClampToEdge, WrapMode.ClampToEdge),
Texture = skin.GetTexture("taiko-roll-end", WrapMode.ClampToEdge, WrapMode.ClampToEdge)?.WithMaximumSize(new Vector2(128, 256)),
FillMode = FillMode.Fit,
},
body = new Sprite
{
RelativeSizeAxes = Axes.Both,
Texture = skin.GetTexture("taiko-roll-middle", new Vector2(2, 256), WrapMode.ClampToEdge, WrapMode.ClampToEdge),
Texture = skin.GetTexture("taiko-roll-middle", WrapMode.ClampToEdge, WrapMode.ClampToEdge)?.WithMaximumSize(new Vector2(2, 256)),
},
headCircle = new LegacyCirclePiece
{

View File

@ -79,9 +79,10 @@ public static Texture[] GetTextures(this ISkin? source, string componentName, Wr
}
// if an animation was not allowed or not found, fall back to a sprite retrieval.
var singleTexture = maxSize != null
? retrievalSource.GetTextureWithMaxSize(componentName, maxSize.Value, wrapModeS, wrapModeT)
: retrievalSource.GetTexture(componentName, wrapModeS, wrapModeT);
var singleTexture = retrievalSource.GetTexture(componentName, wrapModeS, wrapModeT);
if (singleTexture != null && maxSize != null)
singleTexture = singleTexture.WithMaximumSize(maxSize.Value);
return singleTexture != null
? new[] { singleTexture }
@ -91,13 +92,14 @@ IEnumerable<Texture> getTextures(ISkin skin)
{
for (int i = 0; true; i++)
{
var texture = maxSize != null
? skin.GetTextureWithMaxSize(getFrameName(i), maxSize.Value, wrapModeS, wrapModeT)
: skin.GetTexture(getFrameName(i), wrapModeS, wrapModeT);
var texture = skin.GetTexture(getFrameName(i), wrapModeS, wrapModeT);
if (texture == null)
break;
if (maxSize != null)
texture = texture.WithMaximumSize(maxSize.Value);
yield return texture;
}
}
@ -105,12 +107,8 @@ IEnumerable<Texture> getTextures(ISkin skin)
string getFrameName(int frameIndex) => $"{componentName}{animationSeparator}{frameIndex}";
}
public static Texture? GetTextureWithMaxSize(this ISkin source, string componentName, Vector2 maxSize, WrapMode wrapModeS = WrapMode.None, WrapMode wrapModeT = WrapMode.None)
public static Texture WithMaximumSize(this Texture texture, Vector2 maxSize)
{
var texture = source.GetTexture(componentName, wrapModeS, wrapModeT);
if (texture == null)
return texture;
if (texture.DisplayWidth <= maxSize.X && texture.DisplayHeight <= maxSize.Y)
return texture;