Use CachedTransform in ImageWidget

This commit is contained in:
Gustas
2022-09-13 15:19:45 +03:00
committed by abcdefg30
parent 1536530f78
commit d95c6e821c

View File

@@ -31,6 +31,16 @@ namespace OpenRA.Mods.Common.Widgets
readonly Lazy<TooltipContainerWidget> tooltipContainer; readonly Lazy<TooltipContainerWidget> tooltipContainer;
public Func<string> GetTooltipText; public Func<string> GetTooltipText;
readonly CachedTransform<(string, string), Sprite> getImageCache = new CachedTransform<(string, string), Sprite>(
((string collection, string image) args) =>
{
var sprite = ChromeProvider.GetImage(args.collection, args.image);
if (sprite == null)
throw new ArgumentException($"Sprite {args.collection}/{args.image} was not found.");
return sprite;
});
public ImageWidget() public ImageWidget()
{ {
GetImageName = () => ImageName; GetImageName = () => ImageName;
@@ -60,13 +70,7 @@ namespace OpenRA.Mods.Common.Widgets
public override void Draw() public override void Draw()
{ {
var name = GetImageName(); var sprite = getImageCache.Update((GetImageCollection(), GetImageName()));
var collection = GetImageCollection();
var sprite = ChromeProvider.GetImage(collection, name);
if (sprite == null)
throw new ArgumentException($"Sprite {collection}/{name} was not found.");
WidgetUtils.DrawSprite(sprite, RenderOrigin); WidgetUtils.DrawSprite(sprite, RenderOrigin);
} }