boosts: right justify compact overlay text
Also replace buff/debuff images with one that is sized 16x16 similar to the small skill icons, so that the text aligns properly too.
This commit is contained in:
@@ -26,13 +26,11 @@ package net.runelite.client.plugins.boosts;
|
|||||||
|
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import lombok.AccessLevel;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.Constants;
|
import net.runelite.api.Constants;
|
||||||
@@ -104,9 +102,6 @@ public class BoostsPlugin extends Plugin
|
|||||||
|
|
||||||
private final Set<Skill> shownSkills = EnumSet.noneOf(Skill.class);
|
private final Set<Skill> shownSkills = EnumSet.noneOf(Skill.class);
|
||||||
|
|
||||||
@Getter(AccessLevel.PACKAGE)
|
|
||||||
private BufferedImage buffed, debuffed;
|
|
||||||
|
|
||||||
private boolean isChangedDown = false;
|
private boolean isChangedDown = false;
|
||||||
private boolean isChangedUp = false;
|
private boolean isChangedUp = false;
|
||||||
private final int[] lastSkillLevels = new int[Skill.values().length - 1];
|
private final int[] lastSkillLevels = new int[Skill.values().length - 1];
|
||||||
@@ -135,12 +130,9 @@ public class BoostsPlugin extends Plugin
|
|||||||
updateShownSkills();
|
updateShownSkills();
|
||||||
Arrays.fill(lastSkillLevels, -1);
|
Arrays.fill(lastSkillLevels, -1);
|
||||||
|
|
||||||
buffed = ImageUtil.loadImageResource(getClass(), "buffed.png");
|
|
||||||
debuffed = ImageUtil.loadImageResource(getClass(), "debuffed.png");
|
|
||||||
|
|
||||||
// Add infoboxes for everything at startup and then determine inside if it will be rendered
|
// Add infoboxes for everything at startup and then determine inside if it will be rendered
|
||||||
infoBoxManager.addInfoBox(new StatChangeIndicator(true, buffed, this, config));
|
infoBoxManager.addInfoBox(new StatChangeIndicator(true, ImageUtil.loadImageResource(getClass(), "buffed.png"), this, config));
|
||||||
infoBoxManager.addInfoBox(new StatChangeIndicator(false, debuffed, this, config));
|
infoBoxManager.addInfoBox(new StatChangeIndicator(false, ImageUtil.loadImageResource(getClass(), "debuffed.png"), this, config));
|
||||||
|
|
||||||
for (final Skill skill : Skill.values())
|
for (final Skill skill : Skill.values())
|
||||||
{
|
{
|
||||||
@@ -165,7 +157,6 @@ public class BoostsPlugin extends Plugin
|
|||||||
isChangedUp = false;
|
isChangedUp = false;
|
||||||
isChangedDown = false;
|
isChangedDown = false;
|
||||||
skillsToDisplay.clear();
|
skillsToDisplay.clear();
|
||||||
buffed = debuffed = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import java.awt.Color;
|
|||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
|
import java.awt.Point;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -37,9 +38,17 @@ import net.runelite.client.game.SkillIconManager;
|
|||||||
import net.runelite.client.ui.overlay.Overlay;
|
import net.runelite.client.ui.overlay.Overlay;
|
||||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||||
import net.runelite.client.ui.overlay.OverlayPriority;
|
import net.runelite.client.ui.overlay.OverlayPriority;
|
||||||
|
import net.runelite.client.ui.overlay.components.TextComponent;
|
||||||
|
import net.runelite.client.util.ImageUtil;
|
||||||
|
|
||||||
class CompactBoostsOverlay extends Overlay
|
class CompactBoostsOverlay extends Overlay
|
||||||
{
|
{
|
||||||
|
private static final int H_PADDING = 2;
|
||||||
|
private static final int V_PADDING = 1;
|
||||||
|
private static final int TEXT_WIDTH = 22;
|
||||||
|
private static final BufferedImage BUFFED = ImageUtil.loadImageResource(CompactBoostsOverlay.class, "buffedsmall.png");
|
||||||
|
private static final BufferedImage DEBUFFED = ImageUtil.loadImageResource(CompactBoostsOverlay.class, "debuffedsmall.png");
|
||||||
|
|
||||||
private final Client client;
|
private final Client client;
|
||||||
private final BoostsConfig config;
|
private final BoostsConfig config;
|
||||||
private final BoostsPlugin plugin;
|
private final BoostsPlugin plugin;
|
||||||
@@ -94,18 +103,18 @@ class CompactBoostsOverlay extends Overlay
|
|||||||
if (time != -1)
|
if (time != -1)
|
||||||
{
|
{
|
||||||
drawBoost(graphics, fontMetrics, fontHeight,
|
drawBoost(graphics, fontMetrics, fontHeight,
|
||||||
plugin.getBuffed(),
|
BUFFED,
|
||||||
time < 10 ? Color.RED.brighter() : Color.WHITE,
|
time < 10 ? Color.RED.brighter() : Color.WHITE,
|
||||||
String.format("%02d", plugin.getChangeTime(time)));
|
Integer.toString(plugin.getChangeTime(time)));
|
||||||
}
|
}
|
||||||
|
|
||||||
time = plugin.getChangeDownTicks();
|
time = plugin.getChangeDownTicks();
|
||||||
if (time != -1)
|
if (time != -1)
|
||||||
{
|
{
|
||||||
drawBoost(graphics, fontMetrics, fontHeight,
|
drawBoost(graphics, fontMetrics, fontHeight,
|
||||||
plugin.getDebuffed(),
|
DEBUFFED,
|
||||||
time < 10 ? Color.RED.brighter() : Color.WHITE,
|
time < 10 ? Color.RED.brighter() : Color.WHITE,
|
||||||
String.format("%02d", plugin.getChangeTime(time)));
|
Integer.toString(plugin.getChangeTime(time)));
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Dimension(maxX, curY);
|
return new Dimension(maxX, curY);
|
||||||
@@ -115,17 +124,23 @@ class CompactBoostsOverlay extends Overlay
|
|||||||
{
|
{
|
||||||
graphics.drawImage(image, 0, curY, null);
|
graphics.drawImage(image, 0, curY, null);
|
||||||
|
|
||||||
// add a little bit of padding to get the text off the side of the image
|
final int stringWidth = fontMetrics.stringWidth(text);
|
||||||
final int x = image.getWidth() + 6;
|
final TextComponent textComponent = new TextComponent();
|
||||||
graphics.setColor(color);
|
textComponent.setColor(color);
|
||||||
graphics.drawString(text, x,
|
textComponent.setText(text);
|
||||||
|
textComponent.setOutline(true);
|
||||||
|
textComponent.setPosition(new Point(
|
||||||
|
image.getWidth()
|
||||||
|
+ H_PADDING // add a little bit of padding to get the text off the side of the image
|
||||||
|
+ (TEXT_WIDTH - stringWidth), // right justify to TEXT_WIDTH
|
||||||
// this really should be y + (image.getHeight() / 2) + (fontHeight / 2), but in practice
|
// this really should be y + (image.getHeight() / 2) + (fontHeight / 2), but in practice
|
||||||
// it is the same
|
// it is the same
|
||||||
curY + fontHeight);
|
curY + fontHeight));
|
||||||
|
textComponent.render(graphics);
|
||||||
|
|
||||||
curY += Math.max(image.getHeight(), fontHeight)
|
curY += Math.max(image.getHeight(), fontHeight)
|
||||||
+ 1; // padding to keep images from touching
|
+ V_PADDING; // padding to keep images from touching
|
||||||
maxX = Math.max(maxX, x + fontMetrics.stringWidth(text));
|
maxX = Math.max(maxX, image.getWidth() + H_PADDING + TEXT_WIDTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getBoostText(int boost, int base, int boosted)
|
private String getBoostText(int boost, int base, int boosted)
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 580 B |
Binary file not shown.
|
After Width: | Height: | Size: 625 B |
Reference in New Issue
Block a user