interface styles: increase padding of overridden healthbar

This commit is contained in:
Adam
2019-04-20 10:39:18 -04:00
committed by Adam
parent adb0efe90c
commit 7d06fd36e6
7 changed files with 136 additions and 1 deletions

View File

@@ -31,11 +31,14 @@ import java.awt.image.BufferedImage;
import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.HealthBar;
import net.runelite.api.HealthBarOverride;
import net.runelite.api.NodeCache;
import net.runelite.api.SpriteID;
import net.runelite.api.SpritePixels;
import net.runelite.api.events.BeforeMenuRender;
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.PostHealthBar;
import net.runelite.api.events.WidgetPositioned;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
@@ -68,6 +71,8 @@ public class InterfaceStylesPlugin extends Plugin
@Inject
private SpriteManager spriteManager;
private HealthBarOverride healthBarOverride;
@Provides
InterfaceStylesConfig provideConfig(ConfigManager configManager)
{
@@ -87,6 +92,7 @@ public class InterfaceStylesPlugin extends Plugin
{
restoreWidgetDimensions();
removeGameframe();
healthBarOverride = null;
client.setHealthBarOverride(null);
});
}
@@ -106,6 +112,25 @@ public class InterfaceStylesPlugin extends Plugin
adjustWidgetDimensions();
}
@Subscribe
public void onPostHealthBar(PostHealthBar postHealthBar)
{
if (healthBarOverride == null || !config.hdHealthBars())
{
return;
}
HealthBar healthBar = postHealthBar.getHealthBar();
SpritePixels frontSprite = healthBar.getHealthBarFrontSprite();
// Check if this is the health bar we are replacing
if (frontSprite == healthBarOverride.getFrontSprite() || frontSprite == healthBarOverride.getFrontSpriteLarge())
{
// Increase padding to show some more green at very low hp percentages
healthBar.setPadding(1);
}
}
private void updateAllOverrides()
{
removeGameframe();
@@ -245,6 +270,10 @@ public class InterfaceStylesPlugin extends Plugin
private void overrideHealthBars()
{
// Reset health bar cache to reset applied padding
NodeCache healthBarCache = client.getHealthBarCache();
healthBarCache.reset();
if (config.hdHealthBars())
{
String fileBase = Skin.AROUND_2010.toString() + "/healthbar/";
@@ -256,10 +285,12 @@ public class InterfaceStylesPlugin extends Plugin
SpritePixels backSpriteLarge = getFileSpritePixels(fileBase + "back_large.png");
HealthBarOverride override = new HealthBarOverride(frontSprite, backSprite, frontSpriteLarge, backSpriteLarge);
healthBarOverride = override;
client.setHealthBarOverride(override);
}
else
{
healthBarOverride = null;
client.setHealthBarOverride(null);
}
}