From 7e45dfd7f2c82458b78b5901844bd2098b6a09ee Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Sun, 6 May 2018 19:58:31 +0200 Subject: [PATCH] Update all overlays to support new PanelComponent - Move all PanelComponents declarations to be persisted - Use new LineComponent and ImageComponent classes and add them to PanelComponent Signed-off-by: Tomas Slusny --- .../plugins/agility/LapCounterOverlay.java | 20 +- .../attackstyles/AttackStylesOverlay.java | 7 +- .../barrows/BarrowsBrotherSlainOverlay.java | 14 +- .../BlastFurnaceCofferOverlay.java | 12 +- .../blastfurnace/BlastFurnaceOverlay.java | 10 +- .../client/plugins/boosts/BoostsOverlay.java | 31 +- .../plugins/cerberus/CerberusOverlay.java | 17 +- .../cluescrolls/ClueScrollOverlay.java | 2 +- .../cluescrolls/clues/AnagramClue.java | 24 +- .../plugins/cluescrolls/clues/CipherClue.java | 24 +- .../cluescrolls/clues/CoordinateClue.java | 10 +- .../cluescrolls/clues/CrypticClue.java | 31 +- .../plugins/cluescrolls/clues/EmoteClue.java | 393 +++++++++++++++++- .../cluescrolls/clues/FairyRingClue.java | 15 +- .../plugins/cluescrolls/clues/MapClue.java | 21 +- .../plugins/devtools/LocationOverlay.java | 34 +- .../plugins/fightcave/FightCaveOverlay.java | 10 +- .../plugins/fishing/FishingOverlay.java | 19 +- .../motherlode/MotherlodeGemOverlay.java | 36 +- .../plugins/motherlode/MotherlodeOverlay.java | 21 +- .../motherlode/MotherlodeSackOverlay.java | 30 +- .../nightmarezone/NightmareZoneOverlay.java | 14 +- .../client/plugins/raids/RaidsOverlay.java | 28 +- .../plugins/raids/RaidsPointsOverlay.java | 27 +- .../plugins/teamcapes/TeamCapesOverlay.java | 16 +- .../tithefarm/TitheFarmSackOverlay.java | 22 +- .../woodcutting/WoodcuttingOverlay.java | 19 +- .../plugins/xpglobes/XpGlobesOverlay.java | 34 +- 28 files changed, 690 insertions(+), 251 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/agility/LapCounterOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/agility/LapCounterOverlay.java index a47a0ce563..ad707b685d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/agility/LapCounterOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/agility/LapCounterOverlay.java @@ -32,6 +32,7 @@ import javax.inject.Inject; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; public class LapCounterOverlay extends Overlay @@ -73,19 +74,18 @@ public class LapCounterOverlay extends Overlay return null; } - panelComponent.getLines().clear(); - - panelComponent.getLines().add(new PanelComponent.Line( - "Total Laps", - Integer.toString(session.getTotalLaps()) - )); + panelComponent.getChildren().clear(); + panelComponent.getChildren().add(LineComponent.builder() + .left("Total Laps") + .right(Integer.toString(session.getTotalLaps())) + .build()); if (session.getLapsTillLevel() > 0) { - panelComponent.getLines().add(new PanelComponent.Line( - "Laps till level", - Integer.toString(session.getLapsTillLevel()) - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Laps till level") + .right(Integer.toString(session.getLapsTillLevel())) + .build()); } return panelComponent.render(graphics); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/AttackStylesOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/AttackStylesOverlay.java index f576ca9744..56e7a25564 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/AttackStylesOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/AttackStylesOverlay.java @@ -34,8 +34,6 @@ import net.runelite.client.ui.overlay.components.PanelComponent; public class AttackStylesOverlay extends Overlay { - private static final int COMPONENT_WIDTH = 80; - private final AttackStylesPlugin plugin; private final AttackStylesConfig config; private final PanelComponent panelComponent = new PanelComponent(); @@ -56,10 +54,11 @@ public class AttackStylesOverlay extends Overlay if (warnedSkillSelected || config.alwaysShowStyle()) { final String attackStyleString = plugin.getAttackStyle().getName(); - panelComponent.setTitleColor(warnedSkillSelected ? Color.RED : Color.WHITE); panelComponent.setTitle(attackStyleString); - panelComponent.setWidth(COMPONENT_WIDTH); + panelComponent.setPreferredSize(new Dimension( + graphics.getFontMetrics().stringWidth(attackStyleString) + 10, + 0)); return panelComponent.render(graphics); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsBrotherSlainOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsBrotherSlainOverlay.java index 3ee4c6e4ba..4e8eeec66a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsBrotherSlainOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsBrotherSlainOverlay.java @@ -34,6 +34,7 @@ import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; public class BarrowsBrotherSlainOverlay extends Overlay @@ -66,17 +67,16 @@ public class BarrowsBrotherSlainOverlay extends Overlay barrowsBrothers.setHidden(true); } - panelComponent.getLines().clear(); + panelComponent.getChildren().clear(); for (BarrowsBrothers brother : BarrowsBrothers.values()) { String slain = client.getVar(brother.getKilledVarbit()) > 0 ? "✓" : ""; - panelComponent.getLines().add(new PanelComponent.Line( - brother.getName(), - Color.WHITE, - slain, - slain.isEmpty() ? Color.WHITE : Color.GREEN - )); + panelComponent.getChildren().add(LineComponent.builder() + .left(brother.getName()) + .right(slain) + .rightColor(slain.isEmpty() ? Color.WHITE : Color.GREEN) + .build()); } return panelComponent.render(graphics); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/BlastFurnaceCofferOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/BlastFurnaceCofferOverlay.java index e1d3a111b2..ef5c76c0d4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/BlastFurnaceCofferOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/BlastFurnaceCofferOverlay.java @@ -33,6 +33,7 @@ import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.util.StackFormatter; @@ -60,17 +61,18 @@ class BlastFurnaceCofferOverlay extends Overlay Widget sack = client.getWidget(WidgetInfo.BLAST_FURNACE_COFFER); - panelComponent.getLines().clear(); + panelComponent.getChildren().clear(); if (sack != null) { sack.setHidden(true); - panelComponent.getLines().add(new PanelComponent.Line( - "Coffer:", - StackFormatter.quantityToStackSize(client.getVar(BLAST_FURNACE_COFFER)) + " gp" - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Coffer:") + .right(StackFormatter.quantityToStackSize(client.getVar(BLAST_FURNACE_COFFER)) + " gp") + .build()); } + return panelComponent.render(graphics); } } \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/BlastFurnaceOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/BlastFurnaceOverlay.java index 691e98f3ac..146770ea4d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/BlastFurnaceOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/BlastFurnaceOverlay.java @@ -32,13 +32,14 @@ import net.runelite.api.Client; import net.runelite.client.game.ItemManager; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; -import net.runelite.client.ui.overlay.components.ImagePanelComponent; +import net.runelite.client.ui.overlay.components.ImageComponent; +import net.runelite.client.ui.overlay.components.PanelComponent; class BlastFurnaceOverlay extends Overlay { private final Client client; private final BlastFurnacePlugin plugin; - private final ImagePanelComponent imagePanelComponent = new ImagePanelComponent(); + private final PanelComponent imagePanelComponent = new PanelComponent(); @Inject private ItemManager itemManager; @@ -49,6 +50,7 @@ class BlastFurnaceOverlay extends Overlay setPosition(OverlayPosition.TOP_LEFT); this.plugin = plugin; this.client = client; + imagePanelComponent.setOrientation(PanelComponent.Orientation.HORIZONTAL); } @Override @@ -59,7 +61,7 @@ class BlastFurnaceOverlay extends Overlay return null; } - imagePanelComponent.getImages().clear(); + imagePanelComponent.getChildren().clear(); for (BarsOres varbit : BarsOres.values()) { @@ -70,7 +72,7 @@ class BlastFurnaceOverlay extends Overlay continue; } - imagePanelComponent.getImages().add(getImage(varbit.getItemID(), amount)); + imagePanelComponent.getChildren().add(new ImageComponent(getImage(varbit.getItemID(), amount))); } return imagePanelComponent.render(graphics); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsOverlay.java index 1b51345445..364d2e97b3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsOverlay.java @@ -36,6 +36,7 @@ import net.runelite.client.game.SkillIconManager; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.infobox.InfoBoxManager; @@ -47,6 +48,7 @@ class BoostsOverlay extends Overlay private final Client client; private final BoostsConfig config; private final InfoBoxManager infoBoxManager; + private final PanelComponent panelComponent = new PanelComponent(); @Inject private BoostsPlugin plugin; @@ -54,8 +56,6 @@ class BoostsOverlay extends Overlay @Inject private SkillIconManager iconManager; - private PanelComponent panelComponent; - private boolean overlayActive; @Inject @@ -71,9 +71,9 @@ class BoostsOverlay extends Overlay @Override public Dimension render(Graphics2D graphics) { - panelComponent = new PanelComponent(); - Instant lastChange = plugin.getLastChange(); + panelComponent.getChildren().clear(); + if (!config.displayIndicators() && config.displayNextChange() && lastChange != null @@ -82,12 +82,10 @@ class BoostsOverlay extends Overlay int nextChange = plugin.getChangeTime(); if (nextChange > 0) { - panelComponent.getLines().add(new PanelComponent.Line( - "Next change in", - Color.WHITE, - String.valueOf(nextChange), - Color.WHITE - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Next change in") + .right(String.valueOf(nextChange)) + .build()); } } @@ -148,16 +146,15 @@ class BoostsOverlay extends Overlay } } - panelComponent.getLines().add(new PanelComponent.Line( - skill.getName(), - Color.WHITE, - str, - strColor - )); + panelComponent.getChildren().add(LineComponent.builder() + .left(skill.getName()) + .right(str) + .rightColor(strColor) + .build()); } } - return panelComponent.getLines().isEmpty() ? null : panelComponent.render(graphics); + return panelComponent.render(graphics); } private Color getTextColor(int boost) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cerberus/CerberusOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/cerberus/CerberusOverlay.java index 67e675f964..e1f6766fc1 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cerberus/CerberusOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cerberus/CerberusOverlay.java @@ -32,7 +32,8 @@ import lombok.extern.slf4j.Slf4j; import net.runelite.client.game.SkillIconManager; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; -import net.runelite.client.ui.overlay.components.ImagePanelComponent; +import net.runelite.client.ui.overlay.components.ImageComponent; +import net.runelite.client.ui.overlay.components.PanelComponent; @Slf4j @Singleton @@ -40,6 +41,7 @@ public class CerberusOverlay extends Overlay { private final CerberusPlugin plugin; private final SkillIconManager iconManager; + private final PanelComponent panelComponent = new PanelComponent(); @Inject CerberusOverlay(final CerberusPlugin plugin, final SkillIconManager iconManager) @@ -57,8 +59,9 @@ public class CerberusOverlay extends Overlay return null; } - final ImagePanelComponent imagePanelComponent = new ImagePanelComponent(); - imagePanelComponent.setTitle("Ghost order"); + panelComponent.getChildren().clear(); + panelComponent.setOrientation(PanelComponent.Orientation.HORIZONTAL); + panelComponent.setTitle("Ghost order"); // Ghosts are already sorted plugin.getGhosts().stream() @@ -66,11 +69,11 @@ public class CerberusOverlay extends Overlay .limit(CerberusGhost.values().length) .forEach(npc -> CerberusGhost .fromNPC(npc) - .ifPresent(ghost -> imagePanelComponent - .getImages() - .add(iconManager.getSkillImage(ghost.getType())))); + .ifPresent(ghost -> panelComponent + .getChildren() + .add(new ImageComponent(iconManager.getSkillImage(ghost.getType()))))); - return imagePanelComponent.render(graphics); + return panelComponent.render(graphics); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollOverlay.java index c3bcc2f1ba..49e4c76558 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollOverlay.java @@ -59,7 +59,7 @@ public class ClueScrollOverlay extends Overlay return null; } - panelComponent.getLines().clear(); + panelComponent.getChildren().clear(); clue.makeOverlayHint(panelComponent, plugin); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/AnagramClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/AnagramClue.java index b11d652dfc..fa875d2935 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/AnagramClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/AnagramClue.java @@ -36,6 +36,7 @@ import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.CLUE_SCROLL_IMAGE; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMAGE_Z_OFFSET; import net.runelite.client.ui.overlay.OverlayUtil; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; @Getter @@ -167,18 +168,25 @@ public class AnagramClue extends ClueScroll implements TextClueScroll, NpcClueSc public void makeOverlayHint(PanelComponent panelComponent, ClueScrollPlugin plugin) { panelComponent.setTitle("Anagram Clue"); - panelComponent.setWidth(150); + panelComponent.getChildren().add(LineComponent.builder().left("NPC:").build()); + panelComponent.getChildren().add(LineComponent.builder() + .left(getNpc()) + .leftColor(TITLED_CONTENT_COLOR) + .build()); - panelComponent.getLines().add(new PanelComponent.Line("NPC:")); - panelComponent.getLines().add(new PanelComponent.Line(getNpc(), TITLED_CONTENT_COLOR)); - - panelComponent.getLines().add(new PanelComponent.Line("Area:")); - panelComponent.getLines().add(new PanelComponent.Line(true, getArea(), TITLED_CONTENT_COLOR)); + panelComponent.getChildren().add(LineComponent.builder().left("Area:").build()); + panelComponent.getChildren().add(LineComponent.builder() + .left(getArea()) + .leftColor(TITLED_CONTENT_COLOR) + .build()); if (getAnswer() != null) { - panelComponent.getLines().add(new PanelComponent.Line("Answer:")); - panelComponent.getLines().add(new PanelComponent.Line(true, getAnswer(), TITLED_CONTENT_COLOR)); + panelComponent.getChildren().add(LineComponent.builder().left("Answer:").build()); + panelComponent.getChildren().add(LineComponent.builder() + .left(getAnswer()) + .leftColor(TITLED_CONTENT_COLOR) + .build()); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CipherClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CipherClue.java index 822c0fde76..2dfd2ac2a6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CipherClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CipherClue.java @@ -36,6 +36,7 @@ import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.CLUE_SCROLL_IMAGE; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMAGE_Z_OFFSET; import net.runelite.client.ui.overlay.OverlayUtil; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; @Getter @@ -76,18 +77,25 @@ public class CipherClue extends ClueScroll implements TextClueScroll, NpcClueScr public void makeOverlayHint(PanelComponent panelComponent, ClueScrollPlugin plugin) { panelComponent.setTitle("Cipher Clue"); - panelComponent.setWidth(150); + panelComponent.getChildren().add(LineComponent.builder().left("NPC:").build()); + panelComponent.getChildren().add(LineComponent.builder() + .left(getNpc()) + .leftColor(TITLED_CONTENT_COLOR) + .build()); - panelComponent.getLines().add(new PanelComponent.Line("NPC:")); - panelComponent.getLines().add(new PanelComponent.Line(getNpc(), TITLED_CONTENT_COLOR)); - - panelComponent.getLines().add(new PanelComponent.Line("Area:")); - panelComponent.getLines().add(new PanelComponent.Line(true, getArea(), TITLED_CONTENT_COLOR)); + panelComponent.getChildren().add(LineComponent.builder().left("Area:").build()); + panelComponent.getChildren().add(LineComponent.builder() + .left(getArea()) + .leftColor(TITLED_CONTENT_COLOR) + .build()); if (getAnswer() != null) { - panelComponent.getLines().add(new PanelComponent.Line("Answer:")); - panelComponent.getLines().add(new PanelComponent.Line(true, getAnswer(), TITLED_CONTENT_COLOR)); + panelComponent.getChildren().add(LineComponent.builder().left("Answer:").build()); + panelComponent.getChildren().add(LineComponent.builder() + .left(getAnswer()) + .leftColor(TITLED_CONTENT_COLOR) + .build()); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java index 2d78eb06e4..d9f9171e67 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java @@ -33,6 +33,7 @@ import net.runelite.api.coords.WorldPoint; import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.SPADE_IMAGE; import net.runelite.client.ui.overlay.OverlayUtil; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; @Getter @@ -46,12 +47,9 @@ public class CoordinateClue extends ClueScroll implements TextClueScroll, Locati public void makeOverlayHint(PanelComponent panelComponent, ClueScrollPlugin plugin) { panelComponent.setTitle("Coordinate Clue"); - panelComponent.setWidth(135); - - panelComponent.getLines().add(new PanelComponent.Line("Travel to the marked")); - panelComponent.getLines().add(new PanelComponent.Line("out destination to see")); - panelComponent.getLines().add(new PanelComponent.Line("a marker for where")); - panelComponent.getLines().add(new PanelComponent.Line("you should dig.")); + panelComponent.getChildren().add(LineComponent.builder() + .left("Travel to the marked out destination to see a marker for where you should dig.") + .build()); } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java index 800738ac19..dd9aa42e60 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java @@ -44,6 +44,7 @@ import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLI import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLICKBOX_HOVER_BORDER_COLOR; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMAGE_Z_OFFSET; import net.runelite.client.ui.overlay.OverlayUtil; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; @Getter @@ -338,15 +339,19 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc public void makeOverlayHint(PanelComponent panelComponent, ClueScrollPlugin plugin) { panelComponent.setTitle("Cryptic Clue"); - panelComponent.setWidth(150); - - panelComponent.getLines().add(new PanelComponent.Line("Clue:")); - panelComponent.getLines().add(new PanelComponent.Line(true, getText(), TITLED_CONTENT_COLOR)); + panelComponent.getChildren().add(LineComponent.builder().left("Clue:").build()); + panelComponent.getChildren().add(LineComponent.builder() + .left(getText()) + .leftColor(TITLED_CONTENT_COLOR) + .build()); if (getNpc() != null) { - panelComponent.getLines().add(new PanelComponent.Line("NPC:")); - panelComponent.getLines().add(new PanelComponent.Line(getNpc(), TITLED_CONTENT_COLOR)); + panelComponent.getChildren().add(LineComponent.builder().left("NPC:").build()); + panelComponent.getChildren().add(LineComponent.builder() + .left(getNpc()) + .leftColor(TITLED_CONTENT_COLOR) + .build()); } if (objectId != -1) @@ -355,13 +360,19 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc if (object != null) { - panelComponent.getLines().add(new PanelComponent.Line("Object:")); - panelComponent.getLines().add(new PanelComponent.Line(object.getName(), TITLED_CONTENT_COLOR)); + panelComponent.getChildren().add(LineComponent.builder().left("Object:").build()); + panelComponent.getChildren().add(LineComponent.builder() + .left(object.getName()) + .leftColor(TITLED_CONTENT_COLOR) + .build()); } } - panelComponent.getLines().add(new PanelComponent.Line("Solution:")); - panelComponent.getLines().add(new PanelComponent.Line(true, getSolution(), TITLED_CONTENT_COLOR)); + panelComponent.getChildren().add(LineComponent.builder().left("Solution:").build()); + panelComponent.getChildren().add(LineComponent.builder() + .left(getSolution()) + .leftColor(TITLED_CONTENT_COLOR) + .build()); } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java index fa78a2197b..0dbd99d977 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java @@ -41,7 +41,336 @@ import static net.runelite.api.EquipmentInventorySlot.RING; import static net.runelite.api.EquipmentInventorySlot.SHIELD; import static net.runelite.api.EquipmentInventorySlot.WEAPON; import net.runelite.api.Item; -import static net.runelite.api.ItemID.*; +import static net.runelite.api.ItemID.ABYSSAL_WHIP; +import static net.runelite.api.ItemID.ADAMANT_2H_SWORD; +import static net.runelite.api.ItemID.ADAMANT_BOOTS; +import static net.runelite.api.ItemID.ADAMANT_DAGGER; +import static net.runelite.api.ItemID.ADAMANT_FULL_HELM; +import static net.runelite.api.ItemID.ADAMANT_HALBERD; +import static net.runelite.api.ItemID.ADAMANT_MED_HELM; +import static net.runelite.api.ItemID.ADAMANT_PLATEBODY; +import static net.runelite.api.ItemID.ADAMANT_PLATELEGS; +import static net.runelite.api.ItemID.ADAMANT_PLATESKIRT; +import static net.runelite.api.ItemID.ADAMANT_SQ_SHIELD; +import static net.runelite.api.ItemID.ADAMANT_SWORD; +import static net.runelite.api.ItemID.AHRIMS_HOOD_0; +import static net.runelite.api.ItemID.AHRIMS_HOOD_100; +import static net.runelite.api.ItemID.AHRIMS_ROBESKIRT_0; +import static net.runelite.api.ItemID.AHRIMS_ROBESKIRT_100; +import static net.runelite.api.ItemID.AHRIMS_ROBETOP_0; +import static net.runelite.api.ItemID.AHRIMS_ROBETOP_100; +import static net.runelite.api.ItemID.AHRIMS_STAFF_0; +import static net.runelite.api.ItemID.AHRIMS_STAFF_100; +import static net.runelite.api.ItemID.AIR_TIARA; +import static net.runelite.api.ItemID.AMULET_OF_GLORY; +import static net.runelite.api.ItemID.AMULET_OF_GLORY1; +import static net.runelite.api.ItemID.AMULET_OF_GLORY2; +import static net.runelite.api.ItemID.AMULET_OF_GLORY3; +import static net.runelite.api.ItemID.AMULET_OF_GLORY4; +import static net.runelite.api.ItemID.AMULET_OF_GLORY5; +import static net.runelite.api.ItemID.AMULET_OF_GLORY6; +import static net.runelite.api.ItemID.AMULET_OF_POWER; +import static net.runelite.api.ItemID.AMULET_OF_STRENGTH; +import static net.runelite.api.ItemID.AMULET_OF_THE_DAMNED; +import static net.runelite.api.ItemID.ANCIENT_CROZIER; +import static net.runelite.api.ItemID.ANCIENT_MITRE; +import static net.runelite.api.ItemID.ANCIENT_STOLE; +import static net.runelite.api.ItemID.ARCLIGHT; +import static net.runelite.api.ItemID.ARMADYL_CROZIER; +import static net.runelite.api.ItemID.ARMADYL_MITRE; +import static net.runelite.api.ItemID.ARMADYL_STOLE; +import static net.runelite.api.ItemID.BANDOS_BOOTS; +import static net.runelite.api.ItemID.BANDOS_CLOAK; +import static net.runelite.api.ItemID.BANDOS_CROZIER; +import static net.runelite.api.ItemID.BANDOS_GODSWORD; +import static net.runelite.api.ItemID.BANDOS_MITRE; +import static net.runelite.api.ItemID.BANDOS_PLATEBODY; +import static net.runelite.api.ItemID.BANDOS_STOLE; +import static net.runelite.api.ItemID.BARROWS_GLOVES; +import static net.runelite.api.ItemID.BLACK_AXE; +import static net.runelite.api.ItemID.BLACK_BOATER; +import static net.runelite.api.ItemID.BLACK_CAPE; +import static net.runelite.api.ItemID.BLACK_DHIDE_BODY; +import static net.runelite.api.ItemID.BLACK_DHIDE_CHAPS; +import static net.runelite.api.ItemID.BLACK_DHIDE_VAMB; +import static net.runelite.api.ItemID.BLACK_DRAGON_MASK; +import static net.runelite.api.ItemID.BLACK_PLATEBODY; +import static net.runelite.api.ItemID.BLACK_SALAMANDER; +import static net.runelite.api.ItemID.BLACK_SLAYER_HELMET; +import static net.runelite.api.ItemID.BLACK_SLAYER_HELMET_I; +import static net.runelite.api.ItemID.BLUE_BOATER; +import static net.runelite.api.ItemID.BLUE_BOOTS; +import static net.runelite.api.ItemID.BLUE_DHIDE_BODY; +import static net.runelite.api.ItemID.BLUE_DHIDE_CHAPS; +import static net.runelite.api.ItemID.BLUE_DHIDE_VAMB; +import static net.runelite.api.ItemID.BLUE_ROBE_TOP; +import static net.runelite.api.ItemID.BLUE_WIZARD_HAT; +import static net.runelite.api.ItemID.BOBS_PURPLE_SHIRT; +import static net.runelite.api.ItemID.BOBS_RED_SHIRT; +import static net.runelite.api.ItemID.BODY_TIARA; +import static net.runelite.api.ItemID.BONE_DAGGER; +import static net.runelite.api.ItemID.BONE_SPEAR; +import static net.runelite.api.ItemID.BOOK_OF_BALANCE; +import static net.runelite.api.ItemID.BOOK_OF_DARKNESS; +import static net.runelite.api.ItemID.BOOK_OF_LAW; +import static net.runelite.api.ItemID.BOOK_OF_WAR; +import static net.runelite.api.ItemID.BRINE_SABRE; +import static net.runelite.api.ItemID.BRONZE_2H_SWORD; +import static net.runelite.api.ItemID.BRONZE_AXE; +import static net.runelite.api.ItemID.BRONZE_CHAINBODY; +import static net.runelite.api.ItemID.BRONZE_DAGGER; +import static net.runelite.api.ItemID.BRONZE_FULL_HELM; +import static net.runelite.api.ItemID.BRONZE_PLATELEGS; +import static net.runelite.api.ItemID.BRONZE_SPEAR; +import static net.runelite.api.ItemID.BRONZE_SQ_SHIELD; +import static net.runelite.api.ItemID.BROWN_APRON; +import static net.runelite.api.ItemID.BROWN_HEADBAND; +import static net.runelite.api.ItemID.BRUISE_BLUE_SNELM_3343; +import static net.runelite.api.ItemID.CAPE_OF_LEGENDS; +import static net.runelite.api.ItemID.CASTLE_WARS_BRACELET3; +import static net.runelite.api.ItemID.CLIMBING_BOOTS; +import static net.runelite.api.ItemID.COIF; +import static net.runelite.api.ItemID.COMBAT_BRACELET; +import static net.runelite.api.ItemID.CREAM_ROBE_TOP; +import static net.runelite.api.ItemID.DEATH_TIARA; +import static net.runelite.api.ItemID.DESERT_SHIRT; +import static net.runelite.api.ItemID.DHAROKS_GREATAXE_0; +import static net.runelite.api.ItemID.DHAROKS_GREATAXE_100; +import static net.runelite.api.ItemID.DHAROKS_HELM_0; +import static net.runelite.api.ItemID.DHAROKS_HELM_100; +import static net.runelite.api.ItemID.DHAROKS_PLATEBODY_0; +import static net.runelite.api.ItemID.DHAROKS_PLATEBODY_100; +import static net.runelite.api.ItemID.DHAROKS_PLATELEGS_0; +import static net.runelite.api.ItemID.DHAROKS_PLATELEGS_100; +import static net.runelite.api.ItemID.DIAMOND_BRACELET; +import static net.runelite.api.ItemID.DIAMOND_RING; +import static net.runelite.api.ItemID.DRAGONSTONE_AMULET; +import static net.runelite.api.ItemID.DRAGONSTONE_RING; +import static net.runelite.api.ItemID.DRAGON_2H_SWORD; +import static net.runelite.api.ItemID.DRAGON_AXE; +import static net.runelite.api.ItemID.DRAGON_BATTLEAXE; +import static net.runelite.api.ItemID.DRAGON_BOOTS; +import static net.runelite.api.ItemID.DRAGON_CHAINBODY_3140; +import static net.runelite.api.ItemID.DRAGON_DEFENDER; +import static net.runelite.api.ItemID.DRAGON_MED_HELM; +import static net.runelite.api.ItemID.DRAGON_NECKLACE; +import static net.runelite.api.ItemID.DRAGON_PICKAXE; +import static net.runelite.api.ItemID.DRAGON_PLATESKIRT; +import static net.runelite.api.ItemID.DRAGON_SPEAR; +import static net.runelite.api.ItemID.DRAGON_SQ_SHIELD; +import static net.runelite.api.ItemID.EARTH_RUNE; +import static net.runelite.api.ItemID.ELEMENTAL_SHIELD; +import static net.runelite.api.ItemID.EMERALD_AMULET; +import static net.runelite.api.ItemID.EMERALD_RING; +import static net.runelite.api.ItemID.FIRE_BATTLESTAFF; +import static net.runelite.api.ItemID.FIRE_CAPE; +import static net.runelite.api.ItemID.FLARED_TROUSERS; +import static net.runelite.api.ItemID.GOLD_NECKLACE; +import static net.runelite.api.ItemID.GOLD_RING; +import static net.runelite.api.ItemID.GRANITE_SHIELD; +import static net.runelite.api.ItemID.GREEN_BOATER; +import static net.runelite.api.ItemID.GREEN_BOOTS; +import static net.runelite.api.ItemID.GREEN_DHIDE_BODY; +import static net.runelite.api.ItemID.GREEN_DHIDE_CHAPS; +import static net.runelite.api.ItemID.GREEN_HAT; +import static net.runelite.api.ItemID.GREEN_HEADBAND; +import static net.runelite.api.ItemID.GREEN_ROBE_BOTTOMS; +import static net.runelite.api.ItemID.GREEN_ROBE_TOP; +import static net.runelite.api.ItemID.GREEN_SLAYER_HELMET; +import static net.runelite.api.ItemID.GREEN_SLAYER_HELMET_I; +import static net.runelite.api.ItemID.GUTHANS_CHAINSKIRT_0; +import static net.runelite.api.ItemID.GUTHANS_CHAINSKIRT_100; +import static net.runelite.api.ItemID.GUTHANS_HELM_0; +import static net.runelite.api.ItemID.GUTHANS_HELM_100; +import static net.runelite.api.ItemID.GUTHANS_PLATEBODY_0; +import static net.runelite.api.ItemID.GUTHANS_PLATEBODY_100; +import static net.runelite.api.ItemID.GUTHANS_WARSPEAR_0; +import static net.runelite.api.ItemID.GUTHANS_WARSPEAR_100; +import static net.runelite.api.ItemID.GUTHIX_MITRE; +import static net.runelite.api.ItemID.GUTHIX_STOLE; +import static net.runelite.api.ItemID.HAM_BOOTS; +import static net.runelite.api.ItemID.HAM_ROBE; +import static net.runelite.api.ItemID.HARDLEATHER_BODY; +import static net.runelite.api.ItemID.HELM_OF_NEITIZNOT; +import static net.runelite.api.ItemID.HOLY_BOOK; +import static net.runelite.api.ItemID.IBANS_STAFF; +import static net.runelite.api.ItemID.IBANS_STAFF_U; +import static net.runelite.api.ItemID.IRON_2H_SWORD; +import static net.runelite.api.ItemID.IRON_CHAINBODY; +import static net.runelite.api.ItemID.IRON_FULL_HELM; +import static net.runelite.api.ItemID.IRON_KITESHIELD; +import static net.runelite.api.ItemID.IRON_MED_HELM; +import static net.runelite.api.ItemID.IRON_PICKAXE; +import static net.runelite.api.ItemID.IRON_PLATEBODY; +import static net.runelite.api.ItemID.IRON_PLATELEGS; +import static net.runelite.api.ItemID.IRON_PLATESKIRT; +import static net.runelite.api.ItemID.IRON_SCIMITAR; +import static net.runelite.api.ItemID.IRON_WARHAMMER; +import static net.runelite.api.ItemID.KARILS_COIF_0; +import static net.runelite.api.ItemID.KARILS_COIF_100; +import static net.runelite.api.ItemID.KARILS_CROSSBOW_0; +import static net.runelite.api.ItemID.KARILS_CROSSBOW_100; +import static net.runelite.api.ItemID.KARILS_LEATHERSKIRT_0; +import static net.runelite.api.ItemID.KARILS_LEATHERSKIRT_100; +import static net.runelite.api.ItemID.KARILS_LEATHERTOP_0; +import static net.runelite.api.ItemID.KARILS_LEATHERTOP_100; +import static net.runelite.api.ItemID.LAVA_BATTLESTAFF; +import static net.runelite.api.ItemID.LEATHER_BOOTS; +import static net.runelite.api.ItemID.LEATHER_CHAPS; +import static net.runelite.api.ItemID.LEATHER_COWL; +import static net.runelite.api.ItemID.LEATHER_GLOVES; +import static net.runelite.api.ItemID.LONGBOW; +import static net.runelite.api.ItemID.MAGIC_LONGBOW; +import static net.runelite.api.ItemID.MAPLE_LONGBOW; +import static net.runelite.api.ItemID.MAPLE_SHORTBOW; +import static net.runelite.api.ItemID.MENAPHITE_PURPLE_HAT; +import static net.runelite.api.ItemID.MENAPHITE_PURPLE_ROBE; +import static net.runelite.api.ItemID.MENAPHITE_PURPLE_TOP; +import static net.runelite.api.ItemID.MIND_SHIELD; +import static net.runelite.api.ItemID.MITHRIL_CHAINBODY; +import static net.runelite.api.ItemID.MITHRIL_FULL_HELM; +import static net.runelite.api.ItemID.MITHRIL_MED_HELM; +import static net.runelite.api.ItemID.MITHRIL_PICKAXE; +import static net.runelite.api.ItemID.MITHRIL_PLATEBODY; +import static net.runelite.api.ItemID.MITHRIL_PLATELEGS; +import static net.runelite.api.ItemID.MITHRIL_PLATESKIRT; +import static net.runelite.api.ItemID.MITHRIL_SCIMITAR; +import static net.runelite.api.ItemID.MYSTIC_FIRE_STAFF; +import static net.runelite.api.ItemID.MYSTIC_GLOVES; +import static net.runelite.api.ItemID.MYSTIC_HAT; +import static net.runelite.api.ItemID.MYSTIC_ROBE_BOTTOM; +import static net.runelite.api.ItemID.MYSTIC_ROBE_BOTTOM_DARK; +import static net.runelite.api.ItemID.MYSTIC_ROBE_TOP; +import static net.runelite.api.ItemID.MYSTIC_ROBE_TOP_DARK; +import static net.runelite.api.ItemID.NEW_CRYSTAL_BOW_I; +import static net.runelite.api.ItemID.OAK_LONGBOW; +import static net.runelite.api.ItemID.OAK_SHORTBOW; +import static net.runelite.api.ItemID.OBSIDIAN_CAPE; +import static net.runelite.api.ItemID.ORANGE_BOATER; +import static net.runelite.api.ItemID.PHARAOHS_SCEPTRE_3; +import static net.runelite.api.ItemID.PINK_BOATER; +import static net.runelite.api.ItemID.PINK_ROBE_TOP; +import static net.runelite.api.ItemID.PINK_SKIRT; +import static net.runelite.api.ItemID.PIRATE_BANDANA; +import static net.runelite.api.ItemID.PIRATE_BANDANA_7124; +import static net.runelite.api.ItemID.PIRATE_BANDANA_7130; +import static net.runelite.api.ItemID.PIRATE_BANDANA_7136; +import static net.runelite.api.ItemID.PROSELYTE_HAUBERK; +import static net.runelite.api.ItemID.PURPLE_BOATER; +import static net.runelite.api.ItemID.PURPLE_GLOVES; +import static net.runelite.api.ItemID.PURPLE_SLAYER_HELMET; +import static net.runelite.api.ItemID.PURPLE_SLAYER_HELMET_I; +import static net.runelite.api.ItemID.RED_BOATER; +import static net.runelite.api.ItemID.RED_DHIDE_CHAPS; +import static net.runelite.api.ItemID.RED_HEADBAND; +import static net.runelite.api.ItemID.RED_SLAYER_HELMET; +import static net.runelite.api.ItemID.RED_SLAYER_HELMET_I; +import static net.runelite.api.ItemID.RING_OF_DUELING1; +import static net.runelite.api.ItemID.RING_OF_DUELING2; +import static net.runelite.api.ItemID.RING_OF_DUELING3; +import static net.runelite.api.ItemID.RING_OF_DUELING4; +import static net.runelite.api.ItemID.RING_OF_DUELING5; +import static net.runelite.api.ItemID.RING_OF_DUELING6; +import static net.runelite.api.ItemID.RING_OF_DUELING7; +import static net.runelite.api.ItemID.RING_OF_DUELING8; +import static net.runelite.api.ItemID.RING_OF_FORGING; +import static net.runelite.api.ItemID.RING_OF_LIFE; +import static net.runelite.api.ItemID.RING_OF_WEALTH; +import static net.runelite.api.ItemID.RING_OF_WEALTH_1; +import static net.runelite.api.ItemID.RING_OF_WEALTH_2; +import static net.runelite.api.ItemID.RING_OF_WEALTH_3; +import static net.runelite.api.ItemID.RING_OF_WEALTH_4; +import static net.runelite.api.ItemID.RING_OF_WEALTH_5; +import static net.runelite.api.ItemID.ROLLING_PIN; +import static net.runelite.api.ItemID.RUBY_AMULET; +import static net.runelite.api.ItemID.RUBY_RING; +import static net.runelite.api.ItemID.RUNE_AXE; +import static net.runelite.api.ItemID.RUNE_BOOTS; +import static net.runelite.api.ItemID.RUNE_CROSSBOW; +import static net.runelite.api.ItemID.RUNE_FULL_HELM; +import static net.runelite.api.ItemID.RUNE_HALBERD; +import static net.runelite.api.ItemID.RUNE_HELM_H1; +import static net.runelite.api.ItemID.RUNE_HELM_H5; +import static net.runelite.api.ItemID.RUNE_KITESHIELD; +import static net.runelite.api.ItemID.RUNE_LONGSWORD; +import static net.runelite.api.ItemID.RUNE_PICKAXE; +import static net.runelite.api.ItemID.RUNE_PLATEBODY; +import static net.runelite.api.ItemID.RUNE_PLATELEGS; +import static net.runelite.api.ItemID.RUNE_PLATESKIRT; +import static net.runelite.api.ItemID.RUNE_SHIELD_H1; +import static net.runelite.api.ItemID.RUNE_SHIELD_H2; +import static net.runelite.api.ItemID.RUNE_SHIELD_H3; +import static net.runelite.api.ItemID.RUNE_SHIELD_H4; +import static net.runelite.api.ItemID.RUNE_SHIELD_H5; +import static net.runelite.api.ItemID.RUNE_SPEAR; +import static net.runelite.api.ItemID.RUNE_WARHAMMER; +import static net.runelite.api.ItemID.SAPPHIRE_AMULET; +import static net.runelite.api.ItemID.SAPPHIRE_NECKLACE; +import static net.runelite.api.ItemID.SAPPHIRE_RING; +import static net.runelite.api.ItemID.SARADOMIN_CROZIER; +import static net.runelite.api.ItemID.SARADOMIN_MITRE; +import static net.runelite.api.ItemID.SARADOMIN_STOLE; +import static net.runelite.api.ItemID.SEERCULL; +import static net.runelite.api.ItemID.SHADOW_SWORD; +import static net.runelite.api.ItemID.SILVER_SICKLE; +import static net.runelite.api.ItemID.SLAYER_HELMET; +import static net.runelite.api.ItemID.SLAYER_HELMET_I; +import static net.runelite.api.ItemID.SLED_4084; +import static net.runelite.api.ItemID.SNAKESKIN_BOOTS; +import static net.runelite.api.ItemID.SNAKESKIN_CHAPS; +import static net.runelite.api.ItemID.SPINED_CHAPS; +import static net.runelite.api.ItemID.SPLITBARK_BODY; +import static net.runelite.api.ItemID.SPLITBARK_LEGS; +import static net.runelite.api.ItemID.SPOTTED_CAPE; +import static net.runelite.api.ItemID.SPOTTED_CAPE_10073; +import static net.runelite.api.ItemID.STAFF; +import static net.runelite.api.ItemID.STAFF_OF_AIR; +import static net.runelite.api.ItemID.STAFF_OF_WATER; +import static net.runelite.api.ItemID.STEEL_AXE; +import static net.runelite.api.ItemID.STEEL_FULL_HELM; +import static net.runelite.api.ItemID.STEEL_KITESHIELD; +import static net.runelite.api.ItemID.STEEL_LONGSWORD; +import static net.runelite.api.ItemID.STEEL_MACE; +import static net.runelite.api.ItemID.STEEL_MED_HELM; +import static net.runelite.api.ItemID.STEEL_PICKAXE; +import static net.runelite.api.ItemID.STEEL_PLATEBODY; +import static net.runelite.api.ItemID.STEEL_PLATESKIRT; +import static net.runelite.api.ItemID.STEEL_SQ_SHIELD; +import static net.runelite.api.ItemID.STUDDED_BODY; +import static net.runelite.api.ItemID.STUDDED_CHAPS; +import static net.runelite.api.ItemID.TEAM1_CAPE; +import static net.runelite.api.ItemID.TEAM50_CAPE; +import static net.runelite.api.ItemID.TIARA; +import static net.runelite.api.ItemID.TOKTZKETXIL; +import static net.runelite.api.ItemID.TOKTZXILUL; +import static net.runelite.api.ItemID.TORAGS_HAMMERS_0; +import static net.runelite.api.ItemID.TORAGS_HAMMERS_100; +import static net.runelite.api.ItemID.TORAGS_HELM_0; +import static net.runelite.api.ItemID.TORAGS_HELM_100; +import static net.runelite.api.ItemID.TORAGS_PLATEBODY_0; +import static net.runelite.api.ItemID.TORAGS_PLATEBODY_100; +import static net.runelite.api.ItemID.TORAGS_PLATELEGS_0; +import static net.runelite.api.ItemID.TORAGS_PLATELEGS_100; +import static net.runelite.api.ItemID.TURQUOISE_ROBE_BOTTOMS; +import static net.runelite.api.ItemID.TURQUOISE_SLAYER_HELMET; +import static net.runelite.api.ItemID.TURQUOISE_SLAYER_HELMET_I; +import static net.runelite.api.ItemID.UNHOLY_BOOK; +import static net.runelite.api.ItemID.VERACS_BRASSARD_0; +import static net.runelite.api.ItemID.VERACS_BRASSARD_100; +import static net.runelite.api.ItemID.VERACS_FLAIL_0; +import static net.runelite.api.ItemID.VERACS_FLAIL_100; +import static net.runelite.api.ItemID.VERACS_HELM_0; +import static net.runelite.api.ItemID.VERACS_HELM_100; +import static net.runelite.api.ItemID.VERACS_PLATESKIRT_0; +import static net.runelite.api.ItemID.VERACS_PLATESKIRT_100; +import static net.runelite.api.ItemID.WHITE_APRON; +import static net.runelite.api.ItemID.WHITE_BOATER; +import static net.runelite.api.ItemID.WHITE_HEADBAND; +import static net.runelite.api.ItemID.ZAMORAK_CROZIER; +import static net.runelite.api.ItemID.ZAMORAK_FULL_HELM; +import static net.runelite.api.ItemID.ZAMORAK_GODSWORD; +import static net.runelite.api.ItemID.ZAMORAK_MITRE; +import static net.runelite.api.ItemID.ZAMORAK_STOLE; import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; import static net.runelite.client.plugins.cluescrolls.ClueScrollOverlay.TITLED_CONTENT_COLOR; @@ -50,13 +379,40 @@ import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.EMOTE_IMA import net.runelite.client.plugins.cluescrolls.clues.emote.AllRequirementsCollection; import net.runelite.client.plugins.cluescrolls.clues.emote.AnyRequirementCollection; import net.runelite.client.plugins.cluescrolls.clues.emote.Emote; -import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.*; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.ANGRY; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.BECKON; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.BLOW_KISS; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.BOW; import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.BULL_ROARER; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.CHEER; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.CLAP; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.CRY; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.DANCE; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.FLAP; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.GOBLIN_SALUTE; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.HEADBANG; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.JIG; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.JUMP_FOR_JOY; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.LAUGH; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.NO; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.PANIC; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.PUSH_UP; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.RASPBERRY; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.SALUTE; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.SHRUG; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.SLAP_HEAD; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.SPIN; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.STOMP; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.THINK; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.WAVE; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.YAWN; +import static net.runelite.client.plugins.cluescrolls.clues.emote.Emote.YES; import net.runelite.client.plugins.cluescrolls.clues.emote.ItemRequirement; import net.runelite.client.plugins.cluescrolls.clues.emote.RangeItemRequirement; import net.runelite.client.plugins.cluescrolls.clues.emote.SingleItemRequirement; import net.runelite.client.plugins.cluescrolls.clues.emote.SlotLimitationRequirement; import net.runelite.client.ui.overlay.OverlayUtil; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; @Getter @@ -227,22 +583,30 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu { panelComponent.setTitle("Emote Clue"); - panelComponent.getLines().add(new PanelComponent.Line("Emotes:")); - panelComponent.getLines().add(new PanelComponent.Line(getFirstEmote().getName(), TITLED_CONTENT_COLOR)); + panelComponent.getChildren().add(LineComponent.builder().left("Emotes:").build()); + panelComponent.getChildren().add(LineComponent.builder() + .left(getFirstEmote().getName()) + .leftColor(TITLED_CONTENT_COLOR) + .build()); + if (getSecondEmote() != null) { - panelComponent.getLines().add(new PanelComponent.Line(getSecondEmote().getName(), TITLED_CONTENT_COLOR)); + panelComponent.getChildren().add(LineComponent.builder() + .left(getSecondEmote().getName()) + .leftColor(TITLED_CONTENT_COLOR) + .build()); } if (getItemRequirements() == null) { - panelComponent.setWidth(130); - panelComponent.getLines().add(new PanelComponent.Line("Items:", "None")); + panelComponent.getChildren().add(LineComponent.builder() + .left("Items:") + .right("None") + .build()); } else { - panelComponent.setWidth(160); - panelComponent.getLines().add(new PanelComponent.Line("Equip:")); + panelComponent.getChildren().add(LineComponent.builder().left("Equip:").build()); Item[] items = plugin.getEquippedItems(); @@ -255,10 +619,13 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu for (ItemRequirement requirement : getItemRequirements()) { boolean found = requirement.fulfilledBy(items); - panelComponent.getLines().add(new PanelComponent.Line( - requirement.getCollectiveName(plugin.getClient()), TITLED_CONTENT_COLOR, - found ? "X" : "-", found ? Color.GREEN : Color.RED) - ); + + panelComponent.getChildren().add(LineComponent.builder() + .left(requirement.getCollectiveName(plugin.getClient())) + .leftColor(TITLED_CONTENT_COLOR) + .right(found ? "X" : "-") + .rightColor(found ? Color.GREEN : Color.RED) + .build()); } } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/FairyRingClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/FairyRingClue.java index fdaff7cff2..87a153350d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/FairyRingClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/FairyRingClue.java @@ -35,6 +35,7 @@ import static net.runelite.client.plugins.cluescrolls.ClueScrollOverlay.TITLED_C import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; import static net.runelite.client.plugins.cluescrolls.ClueScrollPlugin.SPADE_IMAGE; import net.runelite.client.ui.overlay.OverlayUtil; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; @Getter @@ -66,13 +67,15 @@ public class FairyRingClue extends ClueScroll implements TextClueScroll, Locatio public void makeOverlayHint(PanelComponent panelComponent, ClueScrollPlugin plugin) { panelComponent.setTitle("Fairy Ring Clue"); - panelComponent.setWidth(140); + panelComponent.getChildren().add(LineComponent.builder().left("Code:").build()); + panelComponent.getChildren().add(LineComponent.builder() + .left(getText().substring(0, 5)) + .leftColor(TITLED_CONTENT_COLOR) + .build()); - panelComponent.getLines().add(new PanelComponent.Line("Code:")); - panelComponent.getLines().add(new PanelComponent.Line(getText().substring(0, 5), TITLED_CONTENT_COLOR)); - - panelComponent.getLines().add(new PanelComponent.Line("Travel to the fairy ring")); - panelComponent.getLines().add(new PanelComponent.Line("to see where to dig.")); + panelComponent.getChildren().add(LineComponent.builder() + .left("Travel to the fairy ring to see where to dig.") + .build()); } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java index 94b50698a3..66d049bf16 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java @@ -32,7 +32,10 @@ import lombok.Getter; import net.runelite.api.GameObject; import static net.runelite.api.ItemID.*; import net.runelite.api.ObjectComposition; -import static net.runelite.api.ObjectID.*; +import static net.runelite.api.ObjectID.CRATE_18506; +import static net.runelite.api.ObjectID.CRATE_2620; +import static net.runelite.api.ObjectID.CRATE_354; +import static net.runelite.api.ObjectID.CRATE_357; import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; @@ -43,6 +46,7 @@ import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLI import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLICKBOX_HOVER_BORDER_COLOR; import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMAGE_Z_OFFSET; import net.runelite.client.ui.overlay.OverlayUtil; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; @Getter @@ -103,25 +107,24 @@ public class MapClue extends ClueScroll implements ObjectClueScroll if (objectId != -1) { - panelComponent.setWidth(150); - ObjectComposition objectToClick = plugin.getClient().getObjectDefinition(getObjectId()); String objectName = "N/A"; + if (objectToClick != null) { objectName = objectToClick.getName(); } - panelComponent.getLines().add(new PanelComponent.Line("Travel to the destination")); - panelComponent.getLines().add(new PanelComponent.Line("and click the " + objectName + ".")); + panelComponent.getChildren().add(LineComponent.builder() + .left("Travel to the destination and click the " + objectName + ".") + .build()); } else { - panelComponent.setWidth(160); - - panelComponent.getLines().add(new PanelComponent.Line("Travel to the destination")); - panelComponent.getLines().add(new PanelComponent.Line("and dig on the marked tile.")); + panelComponent.getChildren().add(LineComponent.builder() + .left("Travel to the destination and dig on the marked tile.") + .build()); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/LocationOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/LocationOverlay.java index e49282d44f..1079c6b5ea 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/LocationOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/LocationOverlay.java @@ -34,12 +34,14 @@ import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; public class LocationOverlay extends Overlay { private final Client client; private final DevToolsPlugin plugin; + private final PanelComponent panelComponent = new PanelComponent(); @Inject LocationOverlay(Client client, DevToolsPlugin plugin) @@ -57,7 +59,7 @@ public class LocationOverlay extends Overlay return null; } - PanelComponent panelComponent = new PanelComponent(); + panelComponent.setPreferredSize(new Dimension(150, 0)); WorldPoint localWorld = client.getLocalPlayer().getWorldLocation(); LocalPoint localPoint = client.getLocalPlayer().getLocalLocation(); @@ -66,8 +68,9 @@ public class LocationOverlay extends Overlay if (client.isInInstancedRegion()) { - panelComponent.setWidth(150); - panelComponent.getLines().add(new PanelComponent.Line("Instance")); + panelComponent.getChildren().add(LineComponent.builder() + .left("Instance") + .build()); int[][][] instanceTemplateChunks = client.getInstanceTemplateChunks(); int z = client.getPlane(); @@ -77,25 +80,26 @@ public class LocationOverlay extends Overlay int chunkY = (chunkData >> 3 & 0x7FF) * CHUNK_SIZE; int chunkX = (chunkData >> 14 & 0x3FF) * CHUNK_SIZE; - panelComponent.getLines().add(new PanelComponent.Line( - "Chunk " + localPoint.getRegionX() / CHUNK_SIZE + "," + localPoint.getRegionY() / CHUNK_SIZE, - rotation + " " + chunkX + " " + chunkY - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Chunk " + localPoint.getRegionX() / CHUNK_SIZE + "," + localPoint.getRegionY() / CHUNK_SIZE) + .right(rotation + " " + chunkX + " " + chunkY) + .build()); } - panelComponent.getLines().add(new PanelComponent.Line( - "Tile", - localWorld.getX() + ", " + localWorld.getY() + ", " + client.getPlane() - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Tile") + .right(localWorld.getX() + ", " + localWorld.getY() + ", " + client.getPlane()) + .build()); for (int i = 0; i < client.getMapRegions().length; i++) { int region = client.getMapRegions()[i]; - panelComponent.getLines().add(new PanelComponent.Line( - (i == 0) ? "Map regions" : " ", new Color(255, 255, 255, 255), - String.valueOf(region), (region == regionID) ? new Color(0, 255, 0, 255) : new Color(255, 255, 255, 255) - )); + panelComponent.getChildren().add(LineComponent.builder() + .left((i == 0) ? "Map regions" : " ") + .right(String.valueOf(region)) + .rightColor((region == regionID) ? Color.GREEN : Color.WHITE) + .build()); } return panelComponent.render(graphics); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fightcave/FightCaveOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/fightcave/FightCaveOverlay.java index 6cb78e2b92..73b701505e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/fightcave/FightCaveOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/fightcave/FightCaveOverlay.java @@ -29,7 +29,6 @@ import net.runelite.api.Client; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; -import net.runelite.client.ui.overlay.components.ImagePanelComponent; import javax.imageio.ImageIO; import javax.inject.Inject; @@ -38,6 +37,8 @@ import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; +import net.runelite.client.ui.overlay.components.ImageComponent; +import net.runelite.client.ui.overlay.components.PanelComponent; @Slf4j public class FightCaveOverlay extends Overlay @@ -46,7 +47,7 @@ public class FightCaveOverlay extends Overlay private final Client client; private final FightCavePlugin plugin; - + private final PanelComponent imagePanelComponent = new PanelComponent(); private BufferedImage protectFromMagicImg; private BufferedImage protectFromMissilesImg; @@ -68,13 +69,14 @@ public class FightCaveOverlay extends Overlay return null; } BufferedImage prayerImage = getPrayerImage(attack); - ImagePanelComponent imagePanelComponent = new ImagePanelComponent(); imagePanelComponent.setTitle("TzTok-Jad"); - imagePanelComponent.getImages().add(prayerImage); + imagePanelComponent.getChildren().add(new ImageComponent(prayerImage)); + if (!client.isPrayerActive(attack.getPrayer())) { imagePanelComponent.setBackgroundColor(NOT_ACTIVATED_BACKGROUND_COLOR); } + return imagePanelComponent.render(graphics); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingOverlay.java index 6e0c1a0e01..715f410ee0 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingOverlay.java @@ -35,6 +35,7 @@ import net.runelite.api.Skill; import net.runelite.client.plugins.xptracker.XpTrackerService; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; class FishingOverlay extends Overlay @@ -81,7 +82,7 @@ class FishingOverlay extends Overlay return null; } - panelComponent.getLines().clear(); + panelComponent.getChildren().clear(); if (client.getLocalPlayer().getInteracting() != null && client.getLocalPlayer().getInteracting().getName() .contains(FISHING_SPOT)) { @@ -97,17 +98,17 @@ class FishingOverlay extends Overlay int actions = xpTrackerService.getActions(Skill.FISHING); if (actions > 0) { - panelComponent.getLines().add(new PanelComponent.Line( - "Caught fish:", - Integer.toString(actions) - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Caught fish:") + .right(Integer.toString(actions)) + .build()); if (actions > 2) { - panelComponent.getLines().add(new PanelComponent.Line( - "Fish/hr:", - Integer.toString(xpTrackerService.getActionsHr(Skill.FISHING)) - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Fish/hr:") + .right(Integer.toString(xpTrackerService.getActionsHr(Skill.FISHING))) + .build()); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeGemOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeGemOverlay.java index 6806ca109f..553eb6d3f7 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeGemOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeGemOverlay.java @@ -31,6 +31,7 @@ import java.time.Instant; import javax.inject.Inject; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; public class MotherlodeGemOverlay extends Overlay @@ -70,41 +71,42 @@ public class MotherlodeGemOverlay extends Overlay int emeraldsFound = session.getEmeraldsFound(); int sapphiresFound = session.getSapphiresFound(); - panelComponent.getLines().clear(); + panelComponent.getChildren().clear(); panelComponent.setTitle("Gems found"); if (diamondsFound > 0) { - panelComponent.getLines().add(new PanelComponent.Line( - "Diamonds:", - Integer.toString(diamondsFound) - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Diamonds:") + .right(Integer.toString(diamondsFound)) + .build()); } if (rubiesFound > 0) { - panelComponent.getLines().add(new PanelComponent.Line( - "Rubies:", - Integer.toString(rubiesFound) - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Rubies:") + .right(Integer.toString(rubiesFound)) + .build()); } if (emeraldsFound > 0) { - panelComponent.getLines().add(new PanelComponent.Line( - "Emeralds:", - Integer.toString(emeraldsFound) - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Emeralds:") + .right(Integer.toString(emeraldsFound)) + .build()); } if (sapphiresFound > 0) { - panelComponent.getLines().add(new PanelComponent.Line( - "Sapphires:", - Integer.toString(sapphiresFound) - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Sapphires:") + .right(Integer.toString(sapphiresFound)) + .build()); } + return panelComponent.render(graphics); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeOverlay.java index b11486926f..f5db4f84c6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeOverlay.java @@ -45,6 +45,7 @@ import static net.runelite.api.AnimationID.MINING_MOTHERLODE_STEEL; import net.runelite.api.Client; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; class MotherlodeOverlay extends Overlay @@ -93,7 +94,7 @@ class MotherlodeOverlay extends Overlay return null; } - panelComponent.getLines().clear(); + panelComponent.getChildren().clear(); if (config.showMiningState()) { @@ -113,17 +114,15 @@ class MotherlodeOverlay extends Overlay panelComponent.setTitle(null); } - panelComponent.getLines().add(new PanelComponent.Line( - "Pay-dirt mined:", - Integer.toString(session.getTotalMined()) - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Pay-dirt mined:") + .right(Integer.toString(session.getTotalMined())) + .build()); - panelComponent.getLines().add(new PanelComponent.Line( - "Pay-dirt/hr:", - session.getRecentMined() > 2 - ? Integer.toString(session.getPerHour()) - : "" - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Pay-dirt/hr:") + .right(session.getRecentMined() > 2 ? Integer.toString(session.getPerHour()) : "") + .build()); return panelComponent.render(graphics); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeSackOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeSackOverlay.java index 311f649f04..e568341278 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeSackOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeSackOverlay.java @@ -37,6 +37,7 @@ import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.components.BackgroundComponent; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; class MotherlodeSackOverlay extends Overlay @@ -67,7 +68,7 @@ class MotherlodeSackOverlay extends Overlay Widget sack = client.getWidget(WidgetInfo.MOTHERLODE_MINE); - panelComponent.getLines().clear(); + panelComponent.getChildren().clear(); panelComponent.setBackgroundColor(BackgroundComponent.DEFAULT_BACKGROUND_COLOR); if (sack != null) @@ -81,23 +82,16 @@ class MotherlodeSackOverlay extends Overlay panelComponent.setBackgroundColor(DANGER); } - panelComponent.getLines().add(new PanelComponent.Line( - "Pay-dirt in sack:", - Color.WHITE, - String.valueOf(client.getVar(Varbits.SACK_NUMBER)), - Color.WHITE - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Pay-dirt in sack:") + .right(String.valueOf(client.getVar(Varbits.SACK_NUMBER))) + .build()); } if (config.showDepositsLeft()) { final Integer depositsLeft = plugin.getDepositsLeft(); - final PanelComponent.Line line = new PanelComponent.Line( - "Deposits left:", - Color.WHITE, - depositsLeft == null ? "N/A" : String.valueOf(depositsLeft), - Color.WHITE - ); + Color color = Color.WHITE; if (depositsLeft != null) { @@ -107,12 +101,16 @@ class MotherlodeSackOverlay extends Overlay } else if (depositsLeft == 1) { - line.setLeftColor(Color.RED); - line.setRightColor(Color.RED); + color = Color.RED; } } - panelComponent.getLines().add(line); + panelComponent.getChildren().add(LineComponent.builder() + .left("Deposits left:") + .leftColor(color) + .right(depositsLeft == null ? "N/A" : String.valueOf(depositsLeft)) + .rightColor(color) + .build()); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/nightmarezone/NightmareZoneOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/nightmarezone/NightmareZoneOverlay.java index dcd3e2c802..937ff59961 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/nightmarezone/NightmareZoneOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/nightmarezone/NightmareZoneOverlay.java @@ -24,7 +24,6 @@ */ package net.runelite.client.plugins.nightmarezone; -import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import javax.inject.Inject; @@ -37,6 +36,7 @@ import net.runelite.client.game.ItemManager; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.infobox.InfoBoxManager; import net.runelite.client.util.StackFormatter; @@ -96,13 +96,11 @@ class NightmareZoneOverlay extends Overlay renderAbsorptionCounter(); - panelComponent.getLines().clear(); - panelComponent.getLines().add(new PanelComponent.Line( - "Points: ", - Color.WHITE, - StackFormatter.formatNumber(client.getVar(Varbits.NMZ_POINTS)), - Color.WHITE - )); + panelComponent.getChildren().clear(); + panelComponent.getChildren().add(LineComponent.builder() + .left("Points: ") + .right(StackFormatter.formatNumber(client.getVar(Varbits.NMZ_POINTS))) + .build()); return panelComponent.render(graphics); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsOverlay.java index a6f9680368..c6d1638bdc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsOverlay.java @@ -33,6 +33,7 @@ import net.runelite.client.plugins.raids.solver.Room; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; public class RaidsOverlay extends Overlay @@ -61,7 +62,7 @@ public class RaidsOverlay extends Overlay return null; } - panelComponent.getLines().clear(); + panelComponent.getChildren().clear(); if (plugin.getRaid() == null || plugin.getRaid().getLayout() == null) { @@ -81,9 +82,11 @@ public class RaidsOverlay extends Overlay color = Color.RED; } - panelComponent.getLines().add(new PanelComponent.Line( - "Layout", Color.WHITE, layout, color - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Layout") + .right(layout) + .rightColor(color) + .build()); int bossMatches = 0; int bossCount = 0; @@ -119,9 +122,12 @@ public class RaidsOverlay extends Overlay color = Color.RED; } - panelComponent.getLines().add(new PanelComponent.Line( - room.getType().getName(), Color.WHITE, room.getBoss().getName(), color - )); + panelComponent.getChildren().add(LineComponent.builder() + .left(room.getType().getName()) + .right(room.getBoss().getName()) + .rightColor(color) + .build()); + break; case PUZZLE: @@ -134,9 +140,11 @@ public class RaidsOverlay extends Overlay color = Color.RED; } - panelComponent.getLines().add(new PanelComponent.Line( - room.getType().getName(), Color.WHITE, room.getPuzzle().getName(), color - )); + panelComponent.getChildren().add(LineComponent.builder() + .left(room.getType().getName()) + .right(room.getPuzzle().getName()) + .rightColor(color) + .build()); break; } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPointsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPointsOverlay.java index 1492c22c04..11ca3d8c40 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPointsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPointsOverlay.java @@ -24,7 +24,6 @@ */ package net.runelite.client.plugins.raids; -import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import javax.inject.Inject; @@ -34,6 +33,7 @@ import static net.runelite.client.plugins.raids.RaidsPlugin.POINTS_FORMAT; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; public class RaidsPointsOverlay extends Overlay @@ -64,16 +64,21 @@ public class RaidsPointsOverlay extends Overlay int totalPoints = client.getVar(Varbits.TOTAL_POINTS); int personalPoints = client.getVar(Varbits.PERSONAL_POINTS); - panel.getLines().clear(); - panel.getLines().add(new PanelComponent.Line( - "Total:", Color.WHITE, POINTS_FORMAT.format(totalPoints), Color.WHITE - )); - panel.getLines().add(new PanelComponent.Line( - client.getLocalPlayer().getName() + ":", Color.WHITE, POINTS_FORMAT.format(personalPoints), Color.WHITE - )); - panel.getLines().add(new PanelComponent.Line( - "Party size:", Color.WHITE, String.valueOf(client.getVar(Varbits.RAID_PARTY_SIZE)), Color.WHITE - )); + panel.getChildren().clear(); + panel.getChildren().add(LineComponent.builder() + .left("Total:") + .right(POINTS_FORMAT.format(totalPoints)) + .build()); + + panel.getChildren().add(LineComponent.builder() + .left(client.getLocalPlayer().getName() + ":") + .right(POINTS_FORMAT.format(personalPoints)) + .build()); + + panel.getChildren().add(LineComponent.builder() + .left("Party size:") + .right(String.valueOf(client.getVar(Varbits.RAID_PARTY_SIZE))) + .build()); return panel.render(graphics); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/teamcapes/TeamCapesOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/teamcapes/TeamCapesOverlay.java index 0cee24c583..0dd961d8fa 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/teamcapes/TeamCapesOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/teamcapes/TeamCapesOverlay.java @@ -24,7 +24,6 @@ */ package net.runelite.client.plugins.teamcapes; -import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.util.Map; @@ -32,6 +31,7 @@ import javax.inject.Inject; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; public class TeamCapesOverlay extends Overlay @@ -57,20 +57,20 @@ public class TeamCapesOverlay extends Overlay { return null; } - panelComponent.getLines().clear(); + panelComponent.getChildren().clear(); + for (Map.Entry team : teams.entrySet()) { // Only display team capes that have a count greater than the configured minimum. if (team.getValue() >= config.getMinimumCapeCount()) { - panelComponent.getLines().add(new PanelComponent.Line( - "Team-" + Integer.toString(team.getKey()), - Color.WHITE, - Integer.toString(team.getValue()), - Color.WHITE - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Team-" + Integer.toString(team.getKey())) + .right(Integer.toString(team.getValue())) + .build()); } } + return panelComponent.render(graphics); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmSackOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmSackOverlay.java index 37b62a3d17..dd1c6ea0bf 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmSackOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmSackOverlay.java @@ -33,6 +33,7 @@ import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; class TitheFarmSackOverlay extends Overlay @@ -58,19 +59,20 @@ class TitheFarmSackOverlay extends Overlay return null; } - panelComponent.getLines().clear(); - + panelComponent.getChildren().clear(); sack.setHidden(true); + if (config.showSack()) { - panelComponent.getLines().add(new PanelComponent.Line( - "Fruits in sack:", - String.valueOf(client.getVar(Varbits.TITHE_FARM_SACK_AMOUNT)) - )); - panelComponent.getLines().add(new PanelComponent.Line( - "Points:", - String.valueOf(client.getVar(Varbits.TITHE_FARM_POINTS)) - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Fruits in sack:") + .right(String.valueOf(client.getVar(Varbits.TITHE_FARM_SACK_AMOUNT))) + .build()); + + panelComponent.getChildren().add(LineComponent.builder() + .left("Points:") + .right(String.valueOf(client.getVar(Varbits.TITHE_FARM_POINTS))) + .build()); } return panelComponent.render(graphics); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingOverlay.java index 85930f689a..3fecafe6e6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingOverlay.java @@ -45,6 +45,7 @@ import net.runelite.api.Skill; import net.runelite.client.plugins.xptracker.XpTrackerService; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; class WoodcuttingOverlay extends Overlay @@ -95,7 +96,7 @@ class WoodcuttingOverlay extends Overlay return null; } - panelComponent.getLines().clear(); + panelComponent.getChildren().clear(); if (IntStream.of(animationIds).anyMatch(x -> x == client.getLocalPlayer().getAnimation())) { @@ -111,17 +112,17 @@ class WoodcuttingOverlay extends Overlay int actions = xpTrackerService.getActions(Skill.WOODCUTTING); if (actions > 0) { - panelComponent.getLines().add(new PanelComponent.Line( - "Logs cut:", - Integer.toString(actions) - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Logs cut:") + .right(Integer.toString(actions)) + .build()); if (actions > 2) { - panelComponent.getLines().add(new PanelComponent.Line( - "Logs/hr:", - Integer.toString(xpTrackerService.getActionsHr(Skill.WOODCUTTING)) - )); + panelComponent.getChildren().add(LineComponent.builder() + .left("Logs/hr:") + .right(Integer.toString(xpTrackerService.getActionsHr(Skill.WOODCUTTING))) + .build()); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesOverlay.java index f9a5e2d065..b8976dd274 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesOverlay.java @@ -47,6 +47,7 @@ import net.runelite.client.plugins.xptracker.XpTrackerService; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; +import net.runelite.client.ui.overlay.components.LineComponent; import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.ProgressBarComponent; @@ -57,6 +58,7 @@ public class XpGlobesOverlay extends Overlay private final XpGlobesPlugin plugin; private final XpGlobesConfig config; private final XpTrackerService xpTrackerService; + private final PanelComponent xpTooltip = new PanelComponent(); @Inject private SkillIconManager iconManager; @@ -228,22 +230,38 @@ public class XpGlobesOverlay extends Overlay DecimalFormat decimalFormat = new DecimalFormat("###,###,###"); String skillCurrentXp = decimalFormat.format(mouseOverSkill.getCurrentXp()); - PanelComponent xpTooltip = new PanelComponent(); + xpTooltip.getChildren().clear(); xpTooltip.setPosition(new java.awt.Point(x, y)); - xpTooltip.setWidth(TOOLTIP_RECT_SIZE_X); + xpTooltip.setPreferredSize(new Dimension(TOOLTIP_RECT_SIZE_X, 0)); + + xpTooltip.getChildren().add(LineComponent.builder() + .left(skillName) + .right(skillLevel) + .build()); + + xpTooltip.getChildren().add(LineComponent.builder() + .left("Current xp:") + .leftColor(Color.ORANGE) + .right(skillCurrentXp) + .build()); - List lines = xpTooltip.getLines(); - lines.add(new PanelComponent.Line(skillName, Color.WHITE, skillLevel, Color.WHITE)); - lines.add(new PanelComponent.Line("Current xp:", Color.ORANGE, skillCurrentXp, Color.WHITE)); if (mouseOverSkill.getGoalXp() != -1) { int actionsLeft = xpTrackerService.getActionsLeft(mouseOverSkill.getSkill()); String actionsLeftString = decimalFormat.format(actionsLeft); - lines.add(new PanelComponent.Line("Actions left:", Color.ORANGE, actionsLeftString, Color.WHITE)); + xpTooltip.getChildren().add(LineComponent.builder() + .left("Actions left:") + .leftColor(Color.ORANGE) + .right(actionsLeftString) + .build()); int xpLeft = mouseOverSkill.getGoalXp() - mouseOverSkill.getCurrentXp(); String skillXpToLvl = decimalFormat.format(xpLeft); - lines.add(new PanelComponent.Line("Xp to level:", Color.ORANGE, skillXpToLvl, Color.WHITE)); + xpTooltip.getChildren().add(LineComponent.builder() + .left("Xp to level:") + .leftColor(Color.ORANGE) + .right(skillXpToLvl) + .build()); //Create progress bar for skill. ProgressBarComponent progressBar = new ProgressBarComponent(); @@ -251,7 +269,7 @@ public class XpGlobesOverlay extends Overlay mouseOverSkill.getCurrentXp(), mouseOverSkill.getGoalXp()); progressBar.setProgress(progress); - xpTooltip.setProgressBar(progressBar); + xpTooltip.getChildren().add(progressBar); } xpTooltip.render(graphics);