status bars: fix npe if sprites aren't loaded yet
This commit is contained in:
@@ -29,9 +29,9 @@ import java.awt.Color;
|
|||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Image;
|
import java.awt.Image;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
import java.util.EnumMap;
|
import java.util.EnumMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.MenuEntry;
|
import net.runelite.api.MenuEntry;
|
||||||
@@ -39,8 +39,8 @@ import net.runelite.api.Point;
|
|||||||
import net.runelite.api.Prayer;
|
import net.runelite.api.Prayer;
|
||||||
import net.runelite.api.Skill;
|
import net.runelite.api.Skill;
|
||||||
import net.runelite.api.SpriteID;
|
import net.runelite.api.SpriteID;
|
||||||
import net.runelite.api.Varbits;
|
|
||||||
import net.runelite.api.VarPlayer;
|
import net.runelite.api.VarPlayer;
|
||||||
|
import net.runelite.api.Varbits;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
import net.runelite.client.game.AlternateSprites;
|
import net.runelite.client.game.AlternateSprites;
|
||||||
@@ -86,10 +86,10 @@ class StatusBarsOverlay extends Overlay
|
|||||||
private final SpriteManager spriteManager;
|
private final SpriteManager spriteManager;
|
||||||
|
|
||||||
private final Image prayerIcon;
|
private final Image prayerIcon;
|
||||||
|
private final Image heartDisease;
|
||||||
|
private final Image heartPoison;
|
||||||
|
private final Image heartVenom;
|
||||||
private Image heartIcon;
|
private Image heartIcon;
|
||||||
private Image heartDisease;
|
|
||||||
private Image heartPoison;
|
|
||||||
private Image heartVenom;
|
|
||||||
private Image specialIcon;
|
private Image specialIcon;
|
||||||
private Image energyIcon;
|
private Image energyIcon;
|
||||||
private final Map<BarMode, BarRenderer> barRenderers = new EnumMap<>(BarMode.class);
|
private final Map<BarMode, BarRenderer> barRenderers = new EnumMap<>(BarMode.class);
|
||||||
@@ -106,6 +106,10 @@ class StatusBarsOverlay extends Overlay
|
|||||||
this.spriteManager = spriteManager;
|
this.spriteManager = spriteManager;
|
||||||
|
|
||||||
prayerIcon = ImageUtil.resizeCanvas(ImageUtil.resizeImage(skillIconManager.getSkillImage(Skill.PRAYER, true), IMAGE_SIZE, IMAGE_SIZE), ICON_DIMENSIONS.width, ICON_DIMENSIONS.height);
|
prayerIcon = ImageUtil.resizeCanvas(ImageUtil.resizeImage(skillIconManager.getSkillImage(Skill.PRAYER, true), IMAGE_SIZE, IMAGE_SIZE), ICON_DIMENSIONS.width, ICON_DIMENSIONS.height);
|
||||||
|
heartDisease = ImageUtil.resizeCanvas(ImageUtil.loadImageResource(AlternateSprites.class, AlternateSprites.DISEASE_HEART), ICON_DIMENSIONS.width, ICON_DIMENSIONS.height);
|
||||||
|
heartPoison = ImageUtil.resizeCanvas(ImageUtil.loadImageResource(AlternateSprites.class, AlternateSprites.POISON_HEART), ICON_DIMENSIONS.width, ICON_DIMENSIONS.height);
|
||||||
|
heartVenom = ImageUtil.resizeCanvas(ImageUtil.loadImageResource(AlternateSprites.class, AlternateSprites.VENOM_HEART), ICON_DIMENSIONS.width, ICON_DIMENSIONS.height);
|
||||||
|
|
||||||
initRenderers();
|
initRenderers();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,16 +325,28 @@ class StatusBarsOverlay extends Overlay
|
|||||||
|
|
||||||
private void buildIcons()
|
private void buildIcons()
|
||||||
{
|
{
|
||||||
if (heartIcon != null && heartDisease != null && heartPoison != null && heartVenom != null && energyIcon != null && specialIcon != null)
|
if (heartIcon == null)
|
||||||
{
|
{
|
||||||
return;
|
heartIcon = loadAndResize(SpriteID.MINIMAP_ORB_HITPOINTS_ICON);
|
||||||
|
}
|
||||||
|
if (energyIcon == null)
|
||||||
|
{
|
||||||
|
energyIcon = loadAndResize(SpriteID.MINIMAP_ORB_WALK_ICON);
|
||||||
|
}
|
||||||
|
if (specialIcon == null)
|
||||||
|
{
|
||||||
|
specialIcon = loadAndResize(SpriteID.MINIMAP_ORB_SPECIAL_ICON);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private BufferedImage loadAndResize(int spriteId)
|
||||||
|
{
|
||||||
|
BufferedImage image = spriteManager.getSprite(spriteId, 0);
|
||||||
|
if (image == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
heartIcon = ImageUtil.resizeCanvas(Objects.requireNonNull(spriteManager.getSprite(SpriteID.MINIMAP_ORB_HITPOINTS_ICON, 0)), ICON_DIMENSIONS.width, ICON_DIMENSIONS.height);
|
return ImageUtil.resizeCanvas(image, ICON_DIMENSIONS.width, ICON_DIMENSIONS.height);
|
||||||
heartDisease = ImageUtil.resizeCanvas(ImageUtil.loadImageResource(AlternateSprites.class, AlternateSprites.DISEASE_HEART), ICON_DIMENSIONS.width, ICON_DIMENSIONS.height);
|
|
||||||
heartPoison = ImageUtil.resizeCanvas(ImageUtil.loadImageResource(AlternateSprites.class, AlternateSprites.POISON_HEART), ICON_DIMENSIONS.width, ICON_DIMENSIONS.height);
|
|
||||||
heartVenom = ImageUtil.resizeCanvas(ImageUtil.loadImageResource(AlternateSprites.class, AlternateSprites.VENOM_HEART), ICON_DIMENSIONS.width, ICON_DIMENSIONS.height);
|
|
||||||
energyIcon = ImageUtil.resizeCanvas(Objects.requireNonNull(spriteManager.getSprite(SpriteID.MINIMAP_ORB_WALK_ICON, 0)), ICON_DIMENSIONS.width, ICON_DIMENSIONS.height);
|
|
||||||
specialIcon = ImageUtil.resizeCanvas(Objects.requireNonNull(spriteManager.getSprite(SpriteID.MINIMAP_ORB_SPECIAL_ICON, 0)), ICON_DIMENSIONS.width, ICON_DIMENSIONS.height);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user