Crash on image/panel not found and add TryGet functions for searching
This commit is contained in:
@@ -33,14 +33,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
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;
|
||||
});
|
||||
((string collection, string image) args) => ChromeProvider.GetImage(args.collection, args.image));
|
||||
|
||||
public ImageWidget()
|
||||
{
|
||||
|
||||
@@ -64,10 +64,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
if (!IgnoreChildMouseOver && !hover)
|
||||
hover = Children.Contains(Ui.MouseOverWidget);
|
||||
|
||||
var panel = getPanelCache.Update((IsDisabled(), Depressed, hover, false, IsSelected() || IsHighlighted()));
|
||||
|
||||
if (panel != null)
|
||||
WidgetUtils.DrawPanel(RenderBounds, panel);
|
||||
WidgetUtils.DrawPanel(RenderBounds, getPanelCache.Update((IsDisabled(), Depressed, hover, false, IsSelected() || IsHighlighted())));
|
||||
}
|
||||
|
||||
public override Widget Clone() { return new ScrollItemWidget(this); }
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
{
|
||||
var collectionName = collection + (args.Highlighted ? "-highlighted" : "");
|
||||
var variantImageName = GetStatefulImageName(imageName, args.Disabled, args.Pressed, args.Hover, args.Focused);
|
||||
return ChromeProvider.GetImage(collectionName, variantImageName) ?? ChromeProvider.GetImage(collectionName, imageName);
|
||||
return ChromeProvider.TryGetImage(collectionName, variantImageName) ?? ChromeProvider.GetImage(collectionName, imageName);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
{
|
||||
var collectionName = collection + (args.Highlighted ? "-highlighted" : "");
|
||||
var variantCollectionName = GetStatefulImageName(collectionName, args.Disabled, args.Pressed, args.Hover, args.Focused);
|
||||
return ChromeProvider.GetPanelImages(variantCollectionName) ?? ChromeProvider.GetPanelImages(collectionName);
|
||||
return ChromeProvider.TryGetPanelImages(variantCollectionName) ?? ChromeProvider.GetPanelImages(collectionName);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
|
||||
public static void DrawPanel(string collection, Rectangle bounds)
|
||||
{
|
||||
var sprites = ChromeProvider.GetPanelImages(collection);
|
||||
var sprites = ChromeProvider.TryGetPanelImages(collection);
|
||||
if (sprites != null)
|
||||
DrawPanel(bounds, sprites);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user