Tables everywhere

This commit is contained in:
Scott Burns
2019-05-31 22:59:52 +02:00
parent ec9801eb52
commit d36db6f1a0
34 changed files with 467 additions and 559 deletions

View File

@@ -35,8 +35,9 @@ import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
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.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
class LapCounterOverlay extends Overlay class LapCounterOverlay extends Overlay
{ {
@@ -80,25 +81,23 @@ class LapCounterOverlay extends Overlay
} }
panelComponent.getChildren().clear(); panelComponent.getChildren().clear();
panelComponent.getChildren().add(LineComponent.builder() TableComponent tableComponent = new TableComponent();
.left("Total Laps:") tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
.right(Integer.toString(session.getTotalLaps())) tableComponent.addRow("Total Laps:", Integer.toString(session.getTotalLaps()));
.build());
if (config.lapsToLevel() && session.getLapsTillLevel() > 0) if (config.lapsToLevel() && session.getLapsTillLevel() > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Laps until level:", Integer.toString(session.getLapsTillLevel()));
.left("Laps until level:")
.right(Integer.toString(session.getLapsTillLevel()))
.build());
} }
if (config.lapsToGoal() && session.getLapsTillGoal() > 0) if (config.lapsToGoal() && session.getLapsTillGoal() > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Laps until goal:", Integer.toString(session.getLapsTillGoal()));
.left("Laps until goal:") }
.right(Integer.toString(session.getLapsTillGoal()))
.build()); if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
} }
return panelComponent.render(graphics); return panelComponent.render(graphics);

View File

@@ -38,8 +38,10 @@ import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
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.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
import net.runelite.client.util.ColorUtil;
public class BarrowsBrotherSlainOverlay extends Overlay public class BarrowsBrotherSlainOverlay extends Overlay
{ {
@@ -75,24 +77,23 @@ public class BarrowsBrotherSlainOverlay extends Overlay
} }
panelComponent.getChildren().clear(); panelComponent.getChildren().clear();
TableComponent tableComponent = new TableComponent();
tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
for (BarrowsBrothers brother : BarrowsBrothers.values()) for (BarrowsBrothers brother : BarrowsBrothers.values())
{ {
final boolean brotherSlain = client.getVar(brother.getKilledVarbit()) > 0; final boolean brotherSlain = client.getVar(brother.getKilledVarbit()) > 0;
String slain = brotherSlain ? "\u2713" : "\u2717"; String slain = brotherSlain ? "\u2713" : "\u2717";
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow(brother.getName(), ColorUtil.prependColorTag(slain, brotherSlain ? Color.RED : Color.GREEN));
.left(brother.getName())
.right(slain)
.rightColor(brotherSlain ? Color.GREEN : Color.RED)
.build());
} }
float rewardPercent = client.getVar(Varbits.BARROWS_REWARD_POTENTIAL) / 10.0f; float rewardPercent = client.getVar(Varbits.BARROWS_REWARD_POTENTIAL) / 10.0f;
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Potential", ColorUtil.prependColorTag(rewardPercent != 0 ? rewardPercent + "%" : "0%", rewardPercent >= 73.0f && rewardPercent <= 88.0f ? Color.GREEN : rewardPercent < 65.6f ? Color.WHITE : Color.YELLOW));
.left("Potential")
.right(rewardPercent != 0 ? rewardPercent + "%" : "0%") if (!tableComponent.isEmpty())
.rightColor(rewardPercent >= 73.0f && rewardPercent <= 88.0f ? Color.GREEN : rewardPercent < 65.6f ? Color.WHITE : Color.YELLOW) {
.build()); panelComponent.getChildren().add(tableComponent);
}
return panelComponent.render(graphics); return panelComponent.render(graphics);
} }

View File

@@ -36,8 +36,8 @@ import net.runelite.client.ui.overlay.Overlay;
import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE; import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
import net.runelite.client.ui.overlay.OverlayPosition; 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.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.table.TableComponent;
import net.runelite.client.util.StackFormatter; import net.runelite.client.util.StackFormatter;
class BlastFurnaceCofferOverlay extends Overlay class BlastFurnaceCofferOverlay extends Overlay
@@ -72,10 +72,13 @@ class BlastFurnaceCofferOverlay extends Overlay
{ {
sack.setHidden(true); sack.setHidden(true);
panelComponent.getChildren().add(LineComponent.builder() TableComponent tableComponent = new TableComponent();
.left("Coffer:") tableComponent.addRow("Coffer:", StackFormatter.quantityToStackSize(client.getVar(BLAST_FURNACE_COFFER)) + " gp");
.right(StackFormatter.quantityToStackSize(client.getVar(BLAST_FURNACE_COFFER)) + " gp")
.build()); if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
}
} }
return panelComponent.render(graphics); return panelComponent.render(graphics);

View File

@@ -36,8 +36,9 @@ import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
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.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
import net.runelite.client.util.ColorUtil; import net.runelite.client.util.ColorUtil;
class BoostsOverlay extends Overlay class BoostsOverlay extends Overlay
@@ -69,24 +70,21 @@ class BoostsOverlay extends Overlay
panelComponent.getChildren().clear(); panelComponent.getChildren().clear();
TableComponent tableComponent = new TableComponent();
tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
int nextChange = plugin.getChangeDownTicks(); int nextChange = plugin.getChangeDownTicks();
if (nextChange != -1) if (nextChange != -1)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Next + restore:", String.valueOf(plugin.getChangeTime(nextChange)));
.left("Next + restore in")
.right(String.valueOf(plugin.getChangeTime(nextChange)))
.build());
} }
nextChange = plugin.getChangeUpTicks(); nextChange = plugin.getChangeUpTicks();
if (nextChange != -1) if (nextChange != -1)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Next - restore:", String.valueOf(plugin.getChangeTime(nextChange)));
.left("Next - restore in")
.right(String.valueOf(plugin.getChangeTime(nextChange)))
.build());
} }
if (plugin.canShowBoosts()) if (plugin.canShowBoosts())
@@ -119,14 +117,15 @@ class BoostsOverlay extends Overlay
+ ColorUtil.prependColorTag("/" + base, Color.WHITE); + ColorUtil.prependColorTag("/" + base, Color.WHITE);
} }
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow(skill.getName() + ":", str);
.left(skill.getName())
.right(str)
.rightColor(strColor)
.build());
} }
} }
if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
}
return panelComponent.render(graphics); return panelComponent.render(graphics);
} }

View File

@@ -42,9 +42,10 @@ import net.runelite.client.ui.overlay.Overlay;
import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE; import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
import net.runelite.client.ui.overlay.OverlayPosition; 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.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
class CookingOverlay extends Overlay class CookingOverlay extends Overlay
{ {
@@ -53,18 +54,16 @@ class CookingOverlay extends Overlay
private final Client client; private final Client client;
private final CookingPlugin plugin; private final CookingPlugin plugin;
private final CookingConfig config;
private final XpTrackerService xpTrackerService; private final XpTrackerService xpTrackerService;
private final PanelComponent panelComponent = new PanelComponent(); private final PanelComponent panelComponent = new PanelComponent();
@Inject @Inject
private CookingOverlay(Client client, CookingPlugin plugin, CookingConfig config, XpTrackerService xpTrackerService) private CookingOverlay(Client client, CookingPlugin plugin, XpTrackerService xpTrackerService)
{ {
super(plugin); super(plugin);
setPosition(OverlayPosition.TOP_LEFT); setPosition(OverlayPosition.TOP_LEFT);
this.client = client; this.client = client;
this.plugin = plugin; this.plugin = plugin;
this.config = config;
this.xpTrackerService = xpTrackerService; this.xpTrackerService = xpTrackerService;
getMenuEntries().add(new OverlayMenuEntry(RUNELITE_OVERLAY_CONFIG, OPTION_CONFIGURE, "Cooking overlay")); getMenuEntries().add(new OverlayMenuEntry(RUNELITE_OVERLAY_CONFIG, OPTION_CONFIGURE, "Cooking overlay"));
} }
@@ -95,15 +94,15 @@ class CookingOverlay extends Overlay
.build()); .build());
} }
panelComponent.getChildren().add(LineComponent.builder() TableComponent tableComponent = new TableComponent();
.left("Cooked:") tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
.right(session.getCookAmount() + (session.getCookAmount() >= 1 ? " (" + xpTrackerService.getActionsHr(Skill.COOKING) + "/hr)" : "")) tableComponent.addRow("Cooked:", session.getCookAmount() + (session.getCookAmount() >= 1 ? " (" + xpTrackerService.getActionsHr(Skill.COOKING) + "/hr)" : ""));
.build()); tableComponent.addRow("Burnt:", session.getBurnAmount() + (session.getBurnAmount() >= 1 ? " (" + FORMAT.format(session.getBurntPercentage()) + "%)" : ""));
panelComponent.getChildren().add(LineComponent.builder() if (!tableComponent.isEmpty())
.left("Burnt:") {
.right(session.getBurnAmount() + (session.getBurnAmount() >= 1 ? " (" + FORMAT.format(session.getBurntPercentage()) + "%)" : "")) panelComponent.getChildren().add(tableComponent);
.build()); }
return panelComponent.render(graphics); return panelComponent.render(graphics);
} }

View File

@@ -38,9 +38,10 @@ import net.runelite.client.ui.overlay.Overlay;
import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE; import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
import net.runelite.client.ui.overlay.OverlayPosition; 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.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
@Slf4j @Slf4j
class FermentTimerOverlay extends Overlay class FermentTimerOverlay extends Overlay
@@ -78,10 +79,15 @@ class FermentTimerOverlay extends Overlay
.text("Making Wine") .text("Making Wine")
.color(Color.GREEN) .color(Color.GREEN)
.build()); .build());
panelComponent.getChildren().add(LineComponent.builder()
.left("Ferments in: ") TableComponent tableComponent = new TableComponent();
.right(String.valueOf(INITIAL_TIME - Duration.between(session.getLastWineMakingAction(), Instant.now()).getSeconds())) tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
.build()); tableComponent.addRow("Ferments in:", String.valueOf(INITIAL_TIME - Duration.between(session.getLastWineMakingAction(), Instant.now()).getSeconds()));
if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
}
} }
else else
{ {

View File

@@ -43,8 +43,10 @@ import net.runelite.client.ui.overlay.OverlayMenuEntry;
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.ComponentConstants; import net.runelite.client.ui.overlay.components.ComponentConstants;
import net.runelite.client.ui.overlay.components.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
import net.runelite.client.util.ColorUtil;
class CorpDamageOverlay extends Overlay class CorpDamageOverlay extends Overlay
{ {
@@ -91,6 +93,9 @@ class CorpDamageOverlay extends Overlay
panelComponent.getChildren().clear(); panelComponent.getChildren().clear();
TableComponent tableComponent = new TableComponent();
tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
NPC core = corpPlugin.getCore(); NPC core = corpPlugin.getCore();
if (core != null) if (core != null)
{ {
@@ -114,25 +119,14 @@ class CorpDamageOverlay extends Overlay
int textWidth = Math.max(ComponentConstants.STANDARD_WIDTH, fontMetrics.stringWidth(text)); int textWidth = Math.max(ComponentConstants.STANDARD_WIDTH, fontMetrics.stringWidth(text));
panelComponent.setPreferredSize(new Dimension(textWidth, 0)); panelComponent.setPreferredSize(new Dimension(textWidth, 0));
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow(ColorUtil.prependColorTag(text, Color.RED), "");
.left(text)
.leftColor(Color.RED)
.build());
} }
} }
if (config.showDamage()) if (config.showDamage())
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Your damage", ColorUtil.prependColorTag(Integer.toString(myDamage), damageForKill > 0 && myDamage >= damageForKill ? Color.GREEN : Color.RED));
.left("Your damage") tableComponent.addRow("Total damage:", Integer.toString(totalDamage));
.right(Integer.toString(myDamage))
.rightColor(damageForKill > 0 && myDamage >= damageForKill ? Color.GREEN : Color.RED)
.build());
panelComponent.getChildren().add(LineComponent.builder()
.left("Total damage")
.right(Integer.toString(totalDamage))
.build());
} }
return panelComponent.render(graphics); return panelComponent.render(graphics);

View File

@@ -28,28 +28,27 @@ import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.api.Client;
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.components.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
import net.runelite.client.util.ColorUtil;
public class VanguardsOverlay extends Overlay public class VanguardsOverlay extends Overlay
{ {
private final Client client;
private final CoxPlugin plugin; private final CoxPlugin plugin;
private final CoxConfig config; private final CoxConfig config;
private final PanelComponent panelComponent = new PanelComponent(); private final PanelComponent panelComponent = new PanelComponent();
@Inject @Inject
VanguardsOverlay(Client client, CoxPlugin plugin, CoxConfig config) VanguardsOverlay(CoxPlugin plugin, CoxConfig config)
{ {
super(plugin); super(plugin);
setPosition(OverlayPosition.DYNAMIC); setPosition(OverlayPosition.DYNAMIC);
setPosition(OverlayPosition.DETACHED); setPosition(OverlayPosition.DETACHED);
this.client = client;
this.plugin = plugin; this.plugin = plugin;
this.config = config; this.config = config;
} }
@@ -67,21 +66,19 @@ public class VanguardsOverlay extends Overlay
.text("Vanguards") .text("Vanguards")
.color(Color.pink) .color(Color.pink)
.build()); .build());
panelComponent.getChildren().add(LineComponent.builder()
.left("Range") TableComponent tableComponent = new TableComponent();
.right(Integer.toString(plugin.getRangeVangHP())) tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
.leftColor(Color.green)
.build()); tableComponent.addRow(ColorUtil.prependColorTag("Range", Color.GREEN), Integer.toString(plugin.getRangeVangHP()));
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow(ColorUtil.prependColorTag("Mage", Color.BLUE), Integer.toString(plugin.getMageVangHP()));
.left("Mage") tableComponent.addRow(ColorUtil.prependColorTag("Melee", Color.RED), Integer.toString(plugin.getMeleeVangHP()));
.right(Integer.toString(plugin.getMageVangHP()))
.leftColor(Color.blue) if (!tableComponent.isEmpty())
.build()); {
panelComponent.getChildren().add(LineComponent.builder() panelComponent.getChildren().add(tableComponent);
.left("Melee") }
.right(Integer.toString(plugin.getMeleeVangHP()))
.leftColor(Color.red)
.build());
return panelComponent.render(graphics); return panelComponent.render(graphics);
} }
} }

View File

@@ -30,9 +30,9 @@ import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
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.components.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
public class CameraOverlay extends Overlay public class CameraOverlay extends Overlay
{ {
@@ -59,39 +59,20 @@ public class CameraOverlay extends Overlay
panelComponent.getChildren().clear(); panelComponent.getChildren().clear();
panelComponent.getChildren().add(TitleComponent.builder() TableComponent tableComponent = new TableComponent();
.text("Camera") tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
.build());
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("X", "" + client.getCameraX());
.left("X") tableComponent.addRow("Y", "" + client.getCameraY());
.right("" + client.getCameraX()) tableComponent.addRow("Z", "" + client.getCameraZ());
.build()); tableComponent.addRow("Pitch", "" + client.getCameraPitch());
tableComponent.addRow("Yaw", "" + client.getCameraYaw());
tableComponent.addRow("Scale", "" + client.getScale());
panelComponent.getChildren().add(LineComponent.builder() if (!tableComponent.isEmpty())
.left("Y") {
.right("" + client.getCameraY()) panelComponent.getChildren().add(tableComponent);
.build()); }
panelComponent.getChildren().add(LineComponent.builder()
.left("Z")
.right("" + client.getCameraZ())
.build());
panelComponent.getChildren().add(LineComponent.builder()
.left("Pitch")
.right("" + client.getCameraPitch())
.build());
panelComponent.getChildren().add(LineComponent.builder()
.left("Yaw")
.right("" + client.getCameraYaw())
.build());
panelComponent.getChildren().add(LineComponent.builder()
.left("Scale")
.right("" + client.getScale())
.build());
return panelComponent.render(graphics); return panelComponent.render(graphics);
} }

View File

@@ -34,8 +34,10 @@ import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint; import net.runelite.api.coords.WorldPoint;
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.components.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
import net.runelite.client.util.ColorUtil;
public class LocationOverlay extends Overlay public class LocationOverlay extends Overlay
{ {
@@ -66,11 +68,12 @@ public class LocationOverlay extends Overlay
int regionID = localWorld.getRegionID(); int regionID = localWorld.getRegionID();
TableComponent tableComponent = new TableComponent();
tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
if (client.isInInstancedRegion()) if (client.isInInstancedRegion())
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Instance", "");
.left("Instance")
.build());
int[][][] instanceTemplateChunks = client.getInstanceTemplateChunks(); int[][][] instanceTemplateChunks = client.getInstanceTemplateChunks();
int z = client.getPlane(); int z = client.getPlane();
@@ -80,41 +83,24 @@ public class LocationOverlay extends Overlay
int chunkY = (chunkData >> 3 & 0x7FF) * CHUNK_SIZE; int chunkY = (chunkData >> 3 & 0x7FF) * CHUNK_SIZE;
int chunkX = (chunkData >> 14 & 0x3FF) * CHUNK_SIZE; int chunkX = (chunkData >> 14 & 0x3FF) * CHUNK_SIZE;
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Chunk " + localPoint.getSceneX() / CHUNK_SIZE + "," + localPoint.getSceneY() / CHUNK_SIZE, rotation + " " + chunkX + " " + chunkY);
.left("Chunk " + localPoint.getSceneX() / CHUNK_SIZE + "," + localPoint.getSceneY() / CHUNK_SIZE)
.right(rotation + " " + chunkX + " " + chunkY)
.build());
} }
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Base", client.getBaseX() + ", " + client.getBaseY());
.left("Base") tableComponent.addRow("Local", localPoint.getX() + ", " + localPoint.getY());
.right(client.getBaseX() + ", " + client.getBaseY()) tableComponent.addRow("Scene", localPoint.getSceneX() + ", " + localPoint.getSceneY());
.build()); tableComponent.addRow("Tile", localWorld.getX() + ", " + localWorld.getY() + ", " + client.getPlane());
panelComponent.getChildren().add(LineComponent.builder()
.left("Local")
.right(localPoint.getX() + ", " + localPoint.getY())
.build());
panelComponent.getChildren().add(LineComponent.builder()
.left("Scene")
.right(localPoint.getSceneX() + ", " + localPoint.getSceneY())
.build());
panelComponent.getChildren().add(LineComponent.builder()
.left("Tile")
.right(localWorld.getX() + ", " + localWorld.getY() + ", " + client.getPlane())
.build());
for (int i = 0; i < client.getMapRegions().length; i++) for (int i = 0; i < client.getMapRegions().length; i++)
{ {
int region = client.getMapRegions()[i]; int region = client.getMapRegions()[i];
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow((i == 0) ? "Map regions" : " ", ColorUtil.prependColorTag(String.valueOf(region), (region == regionID) ? Color.GREEN : Color.WHITE));
.left((i == 0) ? "Map regions" : " ") }
.right(String.valueOf(region))
.rightColor((region == regionID) ? Color.GREEN : Color.WHITE) if (!tableComponent.isEmpty())
.build()); {
panelComponent.getChildren().add(tableComponent);
} }
return panelComponent.render(graphics); return panelComponent.render(graphics);

View File

@@ -35,9 +35,9 @@ import javax.inject.Inject;
import net.runelite.client.ui.ColorScheme; import net.runelite.client.ui.ColorScheme;
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.components.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableComponent;
class WaveOverlay extends Overlay class WaveOverlay extends Overlay
{ {
@@ -97,25 +97,30 @@ class WaveOverlay extends Overlay
.color(HEADER_COLOR) .color(HEADER_COLOR)
.build()); .build());
for (LineComponent line : buildWaveLines(waveContents)) TableComponent tableComponent = new TableComponent();
for (String line : buildWaveLines(waveContents))
{ {
panelComponent.getChildren().add(line); tableComponent.addRow(line);
}
if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
} }
} }
private static Collection<LineComponent> buildWaveLines(final Map<WaveMonster, Integer> wave) private static Collection<String> buildWaveLines(final Map<WaveMonster, Integer> wave)
{ {
final List<Map.Entry<WaveMonster, Integer>> monsters = new ArrayList<>(wave.entrySet()); final List<Map.Entry<WaveMonster, Integer>> monsters = new ArrayList<>(wave.entrySet());
monsters.sort(Map.Entry.comparingByKey()); monsters.sort(Map.Entry.comparingByKey());
final List<LineComponent> outputLines = new ArrayList<>(); final List<String> outputLines = new ArrayList<>();
for (Map.Entry<WaveMonster, Integer> monsterEntry : monsters) for (Map.Entry<WaveMonster, Integer> monsterEntry : monsters)
{ {
final WaveMonster monster = monsterEntry.getKey(); final WaveMonster monster = monsterEntry.getKey();
final int quantity = monsterEntry.getValue(); final int quantity = monsterEntry.getValue();
final LineComponent line = LineComponent.builder() final String line = FightCavePlugin.formatMonsterQuantity(monster, quantity);
.left(FightCavePlugin.formatMonsterQuantity(monster, quantity))
.build();
outputLines.add(line); outputLines.add(line);
} }

View File

@@ -36,9 +36,10 @@ import net.runelite.client.ui.overlay.Overlay;
import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE; import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
import net.runelite.client.ui.overlay.OverlayPosition; 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.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
class FishingOverlay extends Overlay class FishingOverlay extends Overlay
{ {
@@ -91,17 +92,19 @@ class FishingOverlay extends Overlay
int actions = xpTrackerService.getActions(Skill.FISHING); int actions = xpTrackerService.getActions(Skill.FISHING);
if (actions > 0) if (actions > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() TableComponent tableComponent = new TableComponent();
.left("Caught fish:") tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
.right(Integer.toString(actions))
.build()); tableComponent.addRow("Caught fish:", Integer.toString(actions));
if (actions > 2) if (actions > 2)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Fish/hr:", Integer.toString(xpTrackerService.getActionsHr(Skill.FISHING)));
.left("Fish/hr:") }
.right(Integer.toString(xpTrackerService.getActionsHr(Skill.FISHING)))
.build()); if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
} }
} }

View File

@@ -32,22 +32,14 @@ import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.util.Set; import java.util.Set;
import javax.inject.Inject; import javax.inject.Inject;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_ADAMANT; import static net.runelite.api.AnimationID.*;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_BLACK;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_BRONZE;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_DRAGON;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_DRAGON_ORN;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_INFERNAL;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_IRON;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_MITHRIL;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_RUNE;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_STEEL;
import net.runelite.api.Client; import net.runelite.api.Client;
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.components.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
class MiningOverlay extends Overlay class MiningOverlay extends Overlay
{ {
@@ -115,15 +107,16 @@ class MiningOverlay extends Overlay
} }
} }
panelComponent.getChildren().add(LineComponent.builder() TableComponent tableComponent = new TableComponent();
.left("Pay-dirt mined:") tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
.right(Integer.toString(session.getTotalMined()))
.build());
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Pay-dirt mined:", Integer.toString(session.getTotalMined()));
.left("Pay-dirt/hr:") tableComponent.addRow("Pay-dirt/hr:", session.getRecentMined() > 2 ? Integer.toString(session.getPerHour()) : "");
.right(session.getRecentMined() > 2 ? Integer.toString(session.getPerHour()) : "")
.build()); if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
}
return panelComponent.render(graphics); return panelComponent.render(graphics);
} }

View File

@@ -34,9 +34,10 @@ import net.runelite.client.ui.overlay.Overlay;
import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE; import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
import net.runelite.client.ui.overlay.OverlayPosition; 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.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
public class MotherlodeGemOverlay extends Overlay public class MotherlodeGemOverlay extends Overlay
{ {
@@ -82,36 +83,32 @@ public class MotherlodeGemOverlay extends Overlay
panelComponent.getChildren().clear(); panelComponent.getChildren().clear();
panelComponent.getChildren().add(TitleComponent.builder().text("Gems found").build()); panelComponent.getChildren().add(TitleComponent.builder().text("Gems found").build());
TableComponent tableComponent = new TableComponent();
tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
if (diamondsFound > 0) if (diamondsFound > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Diamonds:", Integer.toString(diamondsFound));
.left("Diamonds:")
.right(Integer.toString(diamondsFound))
.build());
} }
if (rubiesFound > 0) if (rubiesFound > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Rubies:", Integer.toString(rubiesFound));
.left("Rubies:")
.right(Integer.toString(rubiesFound))
.build());
} }
if (emeraldsFound > 0) if (emeraldsFound > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Emeralds:", Integer.toString(emeraldsFound));
.left("Emeralds:")
.right(Integer.toString(emeraldsFound))
.build());
} }
if (sapphiresFound > 0) if (sapphiresFound > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Sapphires:", Integer.toString(sapphiresFound));
.left("Sapphires:") }
.right(Integer.toString(sapphiresFound))
.build()); if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
} }
return panelComponent.render(graphics); return panelComponent.render(graphics);

View File

@@ -29,9 +29,10 @@ import java.awt.Graphics2D;
import javax.inject.Inject; import javax.inject.Inject;
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.components.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
public class MotherlodeOreOverlay extends Overlay public class MotherlodeOreOverlay extends Overlay
{ {
@@ -76,52 +77,42 @@ public class MotherlodeOreOverlay extends Overlay
panelComponent.getChildren().clear(); panelComponent.getChildren().clear();
panelComponent.getChildren().add(TitleComponent.builder().text("Ores found").build()); panelComponent.getChildren().add(TitleComponent.builder().text("Ores found").build());
TableComponent tableComponent = new TableComponent();
tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
if (nuggetsFound > 0) if (nuggetsFound > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Nuggets:", Integer.toString(nuggetsFound));
.left("Nuggets:")
.right(Integer.toString(nuggetsFound))
.build());
} }
if (coalFound > 0) if (coalFound > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Coal:", Integer.toString(coalFound));
.left("Coal:")
.right(Integer.toString(coalFound))
.build());
} }
if (goldFound > 0) if (goldFound > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Gold:", Integer.toString(goldFound));
.left("Gold:")
.right(Integer.toString(goldFound))
.build());
} }
if (mithrilFound > 0) if (mithrilFound > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Mithril:", Integer.toString(mithrilFound));
.left("Mithril:")
.right(Integer.toString(mithrilFound))
.build());
} }
if (adamantiteFound > 0) if (adamantiteFound > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Adamantite:", Integer.toString(adamantiteFound));
.left("Adamantite:")
.right(Integer.toString(adamantiteFound))
.build());
} }
if (runiteFound > 0) if (runiteFound > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Runite:", Integer.toString(runiteFound));
.left("Runite:") }
.right(Integer.toString(runiteFound))
.build()); if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
} }
return panelComponent.render(graphics); return panelComponent.render(graphics);

View File

@@ -32,22 +32,14 @@ import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.util.Set; import java.util.Set;
import javax.inject.Inject; import javax.inject.Inject;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_ADAMANT; import static net.runelite.api.AnimationID.*;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_BLACK;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_BRONZE;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_DRAGON;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_DRAGON_ORN;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_INFERNAL;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_IRON;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_MITHRIL;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_RUNE;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_STEEL;
import net.runelite.api.Client; import net.runelite.api.Client;
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.components.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
class MotherlodeOverlay extends Overlay class MotherlodeOverlay extends Overlay
{ {
@@ -118,15 +110,16 @@ class MotherlodeOverlay extends Overlay
} }
} }
panelComponent.getChildren().add(LineComponent.builder() TableComponent tableComponent = new TableComponent();
.left("Pay-dirt mined:") tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
.right(Integer.toString(session.getTotalMined()))
.build());
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Pay-dirt mined:", Integer.toString(session.getTotalMined()));
.left("Pay-dirt/hr:") tableComponent.addRow("Pay-dirt/hr:", session.getRecentMined() > 2 ? Integer.toString(session.getPerHour()) : "");
.right(session.getRecentMined() > 2 ? Integer.toString(session.getPerHour()) : "")
.build()); if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
}
return panelComponent.render(graphics); return panelComponent.render(graphics);
} }

View File

@@ -40,8 +40,10 @@ import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.components.ComponentConstants; import net.runelite.client.ui.overlay.components.ComponentConstants;
import net.runelite.client.ui.overlay.components.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
import net.runelite.client.util.ColorUtil;
class MotherlodeSackOverlay extends Overlay class MotherlodeSackOverlay extends Overlay
{ {
@@ -76,6 +78,9 @@ class MotherlodeSackOverlay extends Overlay
panelComponent.getChildren().clear(); panelComponent.getChildren().clear();
panelComponent.setBackgroundColor(ComponentConstants.STANDARD_BACKGROUND_COLOR); panelComponent.setBackgroundColor(ComponentConstants.STANDARD_BACKGROUND_COLOR);
TableComponent tableComponent = new TableComponent();
tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
if (sack != null) if (sack != null)
{ {
sack.setHidden(true); sack.setHidden(true);
@@ -87,10 +92,7 @@ class MotherlodeSackOverlay extends Overlay
panelComponent.setBackgroundColor(DANGER); panelComponent.setBackgroundColor(DANGER);
} }
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Pay-dirt in sack:", String.valueOf(client.getVar(Varbits.SACK_NUMBER)));
.left("Pay-dirt in sack:")
.right(String.valueOf(client.getVar(Varbits.SACK_NUMBER)))
.build());
} }
if (config.showDepositsLeft()) if (config.showDepositsLeft())
@@ -110,15 +112,15 @@ class MotherlodeSackOverlay extends Overlay
} }
} }
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow(ColorUtil.prependColorTag("Deposits left:", color), ColorUtil.prependColorTag(depositsLeft == null ? "N/A" : String.valueOf(depositsLeft), color));
.left("Deposits left:")
.leftColor(color)
.right(depositsLeft == null ? "N/A" : String.valueOf(depositsLeft))
.rightColor(color)
.build());
} }
} }
if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
}
return panelComponent.render(graphics); return panelComponent.render(graphics);
} }
} }

View File

@@ -30,6 +30,7 @@ import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.ItemID; import net.runelite.api.ItemID;
import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG; import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG;
import net.runelite.api.VarPlayer;
import net.runelite.api.Varbits; 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;
@@ -39,8 +40,9 @@ import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
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.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager; import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.client.util.StackFormatter; import net.runelite.client.util.StackFormatter;
@@ -102,10 +104,10 @@ class NightmareZoneOverlay extends Overlay
renderAbsorptionCounter(); renderAbsorptionCounter();
panelComponent.getChildren().clear(); panelComponent.getChildren().clear();
panelComponent.getChildren().add(LineComponent.builder() TableComponent tableComponent = new TableComponent();
.left("Points: ") tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
.right(StackFormatter.formatNumber(client.getVar(Varbits.NMZ_POINTS))) tableComponent.addRow("Points:", StackFormatter.formatNumber(client.getVar(Varbits.NMZ_POINTS)));
.build()); tableComponent.addRow("Total:", StackFormatter.formatNumber(client.getVar(VarPlayer.NMZ_REWARD_POINTS) + client.getVar(Varbits.NMZ_POINTS)));
return panelComponent.render(graphics); return panelComponent.render(graphics);
} }

View File

@@ -40,9 +40,11 @@ import net.runelite.client.ui.overlay.OverlayLayer;
import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE; import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
import net.runelite.client.ui.overlay.OverlayPosition; 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.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
import net.runelite.http.api.hiscore.HiscoreResult; import net.runelite.http.api.hiscore.HiscoreResult;
import net.runelite.http.api.hiscore.HiscoreSkill; import net.runelite.http.api.hiscore.HiscoreSkill;
@@ -74,8 +76,9 @@ class PlayerComparisonOverlay extends Overlay
HiscoreSkill.PRAYER HiscoreSkill.PRAYER
}; };
private static final String LEFT_COLUMN_HEADER = "Skill"; private static final String SKILL_COLUMN_HEADER = "Skill";
private static final String RIGHT_COLUMN_HEADER = "You/Them"; private static final String PLAYER_COLUMN_HEADER = "You";
private static final String OPPONENT_COLUMN_HEADER = "Them";
private final Client client; private final Client client;
private final OpponentInfoPlugin opponentInfoPlugin; private final OpponentInfoPlugin opponentInfoPlugin;
@@ -140,13 +143,12 @@ class PlayerComparisonOverlay extends Overlay
.color(HIGHLIGHT_COLOR) .color(HIGHLIGHT_COLOR)
.build()); .build());
panelComponent.getChildren().add( TableComponent tableComponent = new TableComponent();
LineComponent.builder() tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.CENTER, TableAlignment.RIGHT);
.left(LEFT_COLUMN_HEADER) tableComponent.addRow(
.leftColor(HIGHLIGHT_COLOR) ColorUtil.prependColorTag(SKILL_COLUMN_HEADER, HIGHLIGHT_COLOR),
.right(RIGHT_COLUMN_HEADER) ColorUtil.prependColorTag(PLAYER_COLUMN_HEADER, HIGHLIGHT_COLOR),
.rightColor(HIGHLIGHT_COLOR) ColorUtil.prependColorTag(OPPONENT_COLUMN_HEADER, HIGHLIGHT_COLOR));
.build());
for (int i = 0; i < COMBAT_SKILLS.length; ++i) for (int i = 0; i < COMBAT_SKILLS.length; ++i)
{ {
@@ -163,12 +165,15 @@ class PlayerComparisonOverlay extends Overlay
final int playerSkillLevel = client.getRealSkillLevel(skill); final int playerSkillLevel = client.getRealSkillLevel(skill);
final int opponentSkillLevel = opponentSkill.getLevel(); final int opponentSkillLevel = opponentSkill.getLevel();
panelComponent.getChildren().add( tableComponent.addRow(
LineComponent.builder() hiscoreSkill.getName(),
.left(hiscoreSkill.getName()) ColorUtil.prependColorTag(Integer.toString(playerSkillLevel), comparisonStatColor(playerSkillLevel, opponentSkillLevel)),
.right(playerSkillLevel + "/" + opponentSkillLevel) ColorUtil.prependColorTag(Integer.toString(opponentSkillLevel), comparisonStatColor(opponentSkillLevel, playerSkillLevel)));
.rightColor(comparisonStatColor(playerSkillLevel, opponentSkillLevel)) }
.build());
if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
} }
} }

View File

@@ -51,9 +51,11 @@ 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.ComponentOrientation; import net.runelite.client.ui.overlay.components.ComponentOrientation;
import net.runelite.client.ui.overlay.components.ImageComponent; import net.runelite.client.ui.overlay.components.ImageComponent;
import net.runelite.client.ui.overlay.components.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.ImageUtil; import net.runelite.client.util.ImageUtil;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
@@ -245,6 +247,10 @@ public class RaidsOverlay extends Overlay
.text(displayLayout) .text(displayLayout)
.color(color) .color(color)
.build()); .build());
TableComponent tableComponent = new TableComponent();
tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
color = Color.ORANGE; color = Color.ORANGE;
if (sharable || config.alwaysShowWorldAndCC()) if (sharable || config.alwaysShowWorldAndCC())
{ {
@@ -254,12 +260,8 @@ public class RaidsOverlay extends Overlay
clanOwner = "Open CC tab..."; clanOwner = "Open CC tab...";
color = Color.RED; color = Color.RED;
} }
panelComponent.getChildren().add(LineComponent.builder()
.left("W" + client.getWorld()) tableComponent.addRow(ColorUtil.prependColorTag("W" + client.getWorld(), Color.ORANGE), ColorUtil.prependColorTag("" + clanOwner, color));
.right("" + clanOwner)
.leftColor(Color.ORANGE)
.rightColor(color)
.build());
} }
int bossMatches = 0; int bossMatches = 0;
@@ -308,11 +310,7 @@ public class RaidsOverlay extends Overlay
} }
} }
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow(config.showRecommendedItems() ? "" : room.getType().getName(), ColorUtil.prependColorTag(bossName, color));
.left(config.showRecommendedItems() ? "" : room.getType().getName())
.right(bossName)
.rightColor(color)
.build());
break; break;
@@ -336,52 +334,38 @@ public class RaidsOverlay extends Overlay
color = config.tightropeColor(); color = config.tightropeColor();
} }
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow(config.showRecommendedItems() ? "" : room.getType().getName(), ColorUtil.prependColorTag(puzzleName, color));
.left(config.showRecommendedItems() ? "" : room.getType().getName())
.right(puzzleName)
.rightColor(color)
.build());
break; break;
case FARMING: case FARMING:
if (config.showScavsFarms()) if (config.showScavsFarms())
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("", ColorUtil.prependColorTag(room.getType().getName(), new Color(181, 230, 29)));
.left("")
.right(room.getType().getName())
.rightColor(new Color(181, 230, 29)) //yellow green
.build());
} }
break; break;
case SCAVENGERS: case SCAVENGERS:
if (config.scavsBeforeOlm() && roomCount == lastScavs) if (config.scavsBeforeOlm() && roomCount == lastScavs)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow(config.showRecommendedItems() ? "" : "OlmPrep", ColorUtil.prependColorTag("Scavs", config.scavPrepColor()));
.left(config.showRecommendedItems() ? "" : "OlmPrep")
.right("Scavs")
.rightColor(config.scavPrepColor())
.build());
} }
else if (config.scavsBeforeIce() && scavsBeforeIceRooms.contains(roomCount)) else if (config.scavsBeforeIce() && scavsBeforeIceRooms.contains(roomCount))
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow(config.showRecommendedItems() ? "" : "IcePrep", ColorUtil.prependColorTag("Scavs", config.scavPrepColor()));
.left(config.showRecommendedItems() ? "" : "IcePrep")
.right("Scavs")
.rightColor(config.scavPrepColor())
.build());
} }
else if (config.showScavsFarms()) else if (config.showScavsFarms())
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("", ColorUtil.prependColorTag("Scavs", new Color(181, 230, 29)));
.left("")
.right("Scavs")
.rightColor(new Color(181, 230, 29)) //yellow green
.build());
} }
break; break;
} }
roomCount++; roomCount++;
} }
if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
}
Dimension panelDims = panelComponent.render(graphics); Dimension panelDims = panelComponent.render(graphics);
width = (int) panelDims.getWidth(); width = (int) panelDims.getWidth();
height = (int) panelDims.getHeight(); height = (int) panelDims.getHeight();

View File

@@ -38,8 +38,9 @@ import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
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.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
public class RaidsPointsOverlay extends Overlay public class RaidsPointsOverlay extends Overlay
{ {
@@ -82,29 +83,19 @@ public class RaidsPointsOverlay extends Overlay
double uniqueChance = totalPoints / 867500f; double uniqueChance = totalPoints / 867500f;
panel.getChildren().clear(); panel.getChildren().clear();
panel.getChildren().add(LineComponent.builder() TableComponent tableComponent = new TableComponent();
.left("Total:") tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
.right(POINTS_FORMAT.format(totalPoints))
.build());
panel.getChildren().add(LineComponent.builder() tableComponent.addRow("Total:", POINTS_FORMAT.format(totalPoints));
.left(client.getLocalPlayer().getName() + ":") tableComponent.addRow(client.getLocalPlayer().getName() + ":", POINTS_FORMAT.format(personalPoints));
.right(POINTS_FORMAT.format(personalPoints))
.build());
if (partySize > 1) if (partySize > 1)
{ {
panel.getChildren().add(LineComponent.builder() tableComponent.addRow("Party size:", String.valueOf(partySize));
.left("Party size:")
.right(String.valueOf(partySize))
.build());
} }
panel.getChildren().add(LineComponent.builder() tableComponent.addRow("Unique:", UNIQUE_FORMAT.format(uniqueChance));
.left("Unique:")
.right(UNIQUE_FORMAT.format(uniqueChance))
.build());
//TODO this is annoyingly bugged, personalpoints returns null for some reason //TODO this is annoyingly bugged, personalpoints returns null for some reason
/* /*
if (partySize > 1) if (partySize > 1)
@@ -117,6 +108,11 @@ public class RaidsPointsOverlay extends Overlay
.build()); .build());
}*/ }*/
if (!tableComponent.isEmpty())
{
panel.getChildren().add(tableComponent);
}
return panel.render(graphics); return panel.render(graphics);
} }
} }

View File

@@ -40,9 +40,10 @@ import net.runelite.client.ui.overlay.Overlay;
import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE; import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
import net.runelite.client.ui.overlay.OverlayPosition; 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.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
class SmeltingOverlay extends Overlay class SmeltingOverlay extends Overlay
{ {
@@ -94,26 +95,25 @@ class SmeltingOverlay extends Overlay
int actions = xpTrackerService.getActions(Skill.SMITHING); int actions = xpTrackerService.getActions(Skill.SMITHING);
if (actions > 0) if (actions > 0)
{ {
TableComponent tableComponent = new TableComponent();
tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
if (plugin.getSession().getBarsSmelted() > 0) if (plugin.getSession().getBarsSmelted() > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Bars:", Integer.toString(session.getBarsSmelted()));
.left("Bars:")
.right(Integer.toString(session.getBarsSmelted()))
.build());
} }
if (plugin.getSession().getCannonBallsSmelted() > 0) if (plugin.getSession().getCannonBallsSmelted() > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Cannonballs:", Integer.toString(session.getCannonBallsSmelted()));
.left("Cannonballs:")
.right(Integer.toString(session.getCannonBallsSmelted()))
.build());
} }
if (actions > 2) if (actions > 2)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Actions/hr:", Integer.toString(xpTrackerService.getActionsHr(Skill.SMITHING)));
.left("Actions/hr:") }
.right(Integer.toString(xpTrackerService.getActionsHr(Skill.SMITHING)))
.build()); if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
} }
} }

View File

@@ -24,22 +24,23 @@
*/ */
package net.runelite.client.plugins.theatre.rooms.nylocas; package net.runelite.client.plugins.theatre.rooms.nylocas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import net.runelite.api.Client; import net.runelite.api.Client;
import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG;
import net.runelite.api.NPC; import net.runelite.api.NPC;
import net.runelite.client.plugins.theatre.TheatreConfig; import net.runelite.client.plugins.theatre.TheatreConfig;
import net.runelite.client.plugins.theatre.TheatrePlugin; import net.runelite.client.plugins.theatre.TheatrePlugin;
import net.runelite.client.plugins.theatre.TheatreRoom; import net.runelite.client.plugins.theatre.TheatreRoom;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
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.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.table.TableComponent;
import java.awt.*; import net.runelite.client.util.ColorUtil;
import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG;
import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
class NyloOverlay extends Overlay class NyloOverlay extends Overlay
{ {
@@ -100,25 +101,18 @@ class NyloOverlay extends Overlay
} }
panelComponent.getChildren().clear(); panelComponent.getChildren().clear();
TableComponent tableComponent = new TableComponent();
int nyloCount = (hagios + toxobolos + ischyros); int nyloCount = (hagios + toxobolos + ischyros);
if (nylohandler.getWave() < 21) if (nylohandler.getWave() < 21)
{ {
if (nyloCount > 12) if (nyloCount > 12)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Total Nylocas:", ColorUtil.prependColorTag(nyloCount + " / 12", Color.RED));
.left("Total Nylocas:")
.right(nyloCount + " / 12" )
.rightColor(Color.RED)
.build());
} }
else else
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Total Nylocas:", ColorUtil.prependColorTag(nyloCount + " / 12", Color.GREEN));
.left("Total Nylocas:")
.right(nyloCount + " / 12" )
.rightColor(Color.GREEN)
.build());
} }
} }
@@ -126,22 +120,19 @@ class NyloOverlay extends Overlay
{ {
if (nyloCount > 24) if (nyloCount > 24)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Total Nylocas:", ColorUtil.prependColorTag(nyloCount + " / 24", Color.RED));
.left("Total Nylocas:")
.right(nyloCount + " / 24" )
.rightColor(Color.RED)
.build());
} }
else else
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Total Nylocas:", ColorUtil.prependColorTag(nyloCount + " / 24", Color.GREEN));
.left("Total Nylocas:")
.right(nyloCount + " / 24" )
.rightColor(Color.GREEN)
.build());
} }
} }
if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
}
/** /**
panelComponent.getChildren().add(LineComponent.builder() panelComponent.getChildren().add(LineComponent.builder()

View File

@@ -1,16 +1,19 @@
package net.runelite.client.plugins.theatre.rooms.xarpus; package net.runelite.client.plugins.theatre.rooms.xarpus;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import net.runelite.api.Client; import net.runelite.api.Client;
import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG;
import net.runelite.client.plugins.theatre.TheatreConfig; import net.runelite.client.plugins.theatre.TheatreConfig;
import net.runelite.client.plugins.theatre.TheatrePlugin; import net.runelite.client.plugins.theatre.TheatrePlugin;
import net.runelite.client.ui.overlay.*; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.components.LineComponent; import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import java.awt.*; import net.runelite.client.ui.overlay.components.table.TableComponent;
import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG;
import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
public class XarpusCounter extends Overlay public class XarpusCounter extends Overlay
{ {
@@ -56,10 +59,13 @@ public class XarpusCounter extends Overlay
graphics.getFontMetrics().stringWidth(overlayTitle) + 30, 0 graphics.getFontMetrics().stringWidth(overlayTitle) + 30, 0
)); ));
panelComponent.getChildren().add(LineComponent.builder() TableComponent tableComponent = new TableComponent();
.left("Exhumes: ") tableComponent.addRow("Exhumes", String.valueOf(xarpusHandler.getExhumesCount()));
.right(String.valueOf(xarpusHandler.getExhumesCount()))
.build()); if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
}
return panelComponent.render(graphics); return panelComponent.render(graphics);
} }

View File

@@ -31,17 +31,18 @@ import java.awt.Dimension;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import javax.inject.Inject; import javax.inject.Inject;
import static net.runelite.api.AnimationID.THIEVING_STALL;
import static net.runelite.api.AnimationID.PICKPOCKET_SUCCESS;
import static net.runelite.api.AnimationID.BLOCK_UNARMED; import static net.runelite.api.AnimationID.BLOCK_UNARMED;
import static net.runelite.api.AnimationID.PICKPOCKET_SUCCESS;
import static net.runelite.api.AnimationID.THIEVING_STALL;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.client.plugins.xptracker.XpTrackerService; import net.runelite.client.plugins.xptracker.XpTrackerService;
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.components.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
public class ThievingOverlay extends Overlay public class ThievingOverlay extends Overlay
{ {
@@ -95,15 +96,16 @@ public class ThievingOverlay extends Overlay
.build()); .build());
} }
panelComponent.getChildren().add(LineComponent.builder() TableComponent tableComponent = new TableComponent();
.left("Succeeded:") tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
.right(session.getSuccessful() + (session.getSuccessful() >= 1 ? " (" + xpTrackerService.getActionsHr(Skill.THIEVING) + "/hr)" : ""))
.build());
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Succeeded:", session.getSuccessful() + (session.getSuccessful() >= 1 ? " (" + xpTrackerService.getActionsHr(Skill.THIEVING) + "/hr)" : ""));
.left("Failed:") tableComponent.addRow("Failed:", session.getFailed() + (session.getFailed() >= 1 ? " (" + FORMAT.format(session.getSuccessRate()) + "%)" : ""));
.right(session.getFailed() + (session.getFailed() >= 1 ? " (" + FORMAT.format(session.getSuccessRate()) + "%)" : ""))
.build()); if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
}
return panelComponent.render(graphics); return panelComponent.render(graphics);
} }

View File

@@ -29,17 +29,26 @@ import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.api.Client;
import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG; import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG;
import net.runelite.api.Skill;
import static net.runelite.client.plugins.wintertodt.WintertodtPlugin.WINTERTODT_KINDLING_MULTIPLIER;
import static net.runelite.client.plugins.wintertodt.WintertodtPlugin.WINTERTODT_ROOTS_MULTIPLIER;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE; import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
import net.runelite.client.ui.overlay.OverlayPosition; 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.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
import net.runelite.client.util.ColorUtil;
class WintertodtOverlay extends Overlay class WintertodtOverlay extends Overlay
{ {
@Inject
private Client client;
private final WintertodtPlugin plugin; private final WintertodtPlugin plugin;
private final PanelComponent panelComponent = new PanelComponent(); private final PanelComponent panelComponent = new PanelComponent();
@@ -61,28 +70,35 @@ class WintertodtOverlay extends Overlay
} }
panelComponent.getChildren().clear(); panelComponent.getChildren().clear();
panelComponent.setPreferredSize(new Dimension(150, 0)); panelComponent.setPreferredSize(new Dimension(180, 0));
panelComponent.getChildren().add(TitleComponent.builder() panelComponent.getChildren().add(TitleComponent.builder()
.text(plugin.getCurrentActivity().getActionString()) .text("Points in inventory")
.color(plugin.getCurrentActivity() == WintertodtActivity.IDLE ? Color.RED : Color.GREEN) .color(Color.WHITE)
.build()); .build());
String inventoryString = plugin.getNumLogs() > 0 ? plugin.getInventoryScore() + " (" + plugin.getTotalPotentialinventoryScore() + ") pts" : plugin.getInventoryScore() + " pts"; TableComponent tableComponent = new TableComponent();
panelComponent.getChildren().add(LineComponent.builder() tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
.left("Inventory:")
.leftColor(Color.WHITE)
.right(inventoryString)
.rightColor(plugin.getInventoryScore() > 0 ? Color.GREEN : Color.RED)
.build());
String kindlingString = plugin.getNumLogs() > 0 ? plugin.getNumKindling() + " (" + (plugin.getNumLogs() + plugin.getNumKindling()) + ")" : Integer.toString(plugin.getNumKindling()); tableComponent.addRow(ColorUtil.prependColorTag("Status:", Color.WHITE), ColorUtil.prependColorTag(plugin.getCurrentActivity().getActionString(), plugin.getCurrentActivity() == WintertodtActivity.IDLE ? Color.RED : Color.GREEN));
panelComponent.getChildren().add(LineComponent.builder()
.left("Kindling:") int firemakingLvl = client.getRealSkillLevel(Skill.FIREMAKING);
.leftColor(Color.WHITE)
.right(kindlingString) int rootsScore = plugin.getNumRoots() * WINTERTODT_ROOTS_MULTIPLIER;
.rightColor(plugin.getNumKindling() + plugin.getNumLogs() > 0 ? Color.GREEN : Color.RED) int rootsXp = plugin.getNumRoots() * Math.round(2 + (3 * firemakingLvl));
.build());
tableComponent.addRow(ColorUtil.prependColorTag("Roots:", Color.WHITE), ColorUtil.prependColorTag(rootsScore + " pts (" + rootsXp + " xp)", plugin.getNumRoots() > 0 ? Color.GREEN : Color.RED));
int kindlingScore = plugin.getNumKindling() * WINTERTODT_KINDLING_MULTIPLIER;
long kindlingXp = plugin.getNumKindling() * Math.round(3.8 * firemakingLvl);
tableComponent.addRow(ColorUtil.prependColorTag("Kindling:", Color.WHITE), ColorUtil.prependColorTag(kindlingScore + " pts (" + kindlingXp + " xp)", plugin.getNumKindling() > 0 ? Color.GREEN : Color.RED));
tableComponent.addRow(ColorUtil.prependColorTag("Total:", Color.WHITE), ColorUtil.prependColorTag((rootsScore + kindlingScore) + " pts (" + (rootsXp + kindlingXp) + " xp)", (rootsScore + kindlingScore > 0) ? Color.GREEN : Color.RED));
if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
}
return panelComponent.render(graphics); return panelComponent.render(graphics);
} }

View File

@@ -32,21 +32,7 @@ import javax.inject.Inject;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.Getter; import lombok.Getter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import static net.runelite.api.AnimationID.CONSTRUCTION; import static net.runelite.api.AnimationID.*;
import static net.runelite.api.AnimationID.FIREMAKING;
import static net.runelite.api.AnimationID.FLETCHING_BOW_CUTTING;
import static net.runelite.api.AnimationID.IDLE;
import static net.runelite.api.AnimationID.LOOKING_INTO;
import static net.runelite.api.AnimationID.WOODCUTTING_3A_AXE;
import static net.runelite.api.AnimationID.WOODCUTTING_ADAMANT;
import static net.runelite.api.AnimationID.WOODCUTTING_BLACK;
import static net.runelite.api.AnimationID.WOODCUTTING_BRONZE;
import static net.runelite.api.AnimationID.WOODCUTTING_DRAGON;
import static net.runelite.api.AnimationID.WOODCUTTING_INFERNAL;
import static net.runelite.api.AnimationID.WOODCUTTING_IRON;
import static net.runelite.api.AnimationID.WOODCUTTING_MITHRIL;
import static net.runelite.api.AnimationID.WOODCUTTING_RUNE;
import static net.runelite.api.AnimationID.WOODCUTTING_STEEL;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.InventoryID; import net.runelite.api.InventoryID;
@@ -79,6 +65,9 @@ public class WintertodtPlugin extends Plugin
{ {
private static final int WINTERTODT_REGION = 6462; private static final int WINTERTODT_REGION = 6462;
static final int WINTERTODT_ROOTS_MULTIPLIER = 10;
static final int WINTERTODT_KINDLING_MULTIPLIER = 25;
@Inject @Inject
private Notifier notifier; private Notifier notifier;
@@ -101,13 +90,7 @@ public class WintertodtPlugin extends Plugin
private WintertodtActivity currentActivity = WintertodtActivity.IDLE; private WintertodtActivity currentActivity = WintertodtActivity.IDLE;
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private int inventoryScore; private int numRoots;
@Getter(AccessLevel.PACKAGE)
private int totalPotentialinventoryScore;
@Getter(AccessLevel.PACKAGE)
private int numLogs;
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private int numKindling; private int numKindling;
@@ -139,9 +122,7 @@ public class WintertodtPlugin extends Plugin
private void reset() private void reset()
{ {
inventoryScore = 0; numRoots = 0;
totalPotentialinventoryScore = 0;
numLogs = 0;
numKindling = 0; numKindling = 0;
currentActivity = WintertodtActivity.IDLE; currentActivity = WintertodtActivity.IDLE;
lastActionTime = null; lastActionTime = null;
@@ -410,20 +391,15 @@ public class WintertodtPlugin extends Plugin
final Item[] inv = container.getItems(); final Item[] inv = container.getItems();
inventoryScore = 0; numRoots = 0;
totalPotentialinventoryScore = 0;
numLogs = 0;
numKindling = 0; numKindling = 0;
for (Item item : inv) for (Item item : inv)
{ {
inventoryScore += getPoints(item.getId());
totalPotentialinventoryScore += getPotentialPoints(item.getId());
switch (item.getId()) switch (item.getId())
{ {
case BRUMA_ROOT: case BRUMA_ROOT:
++numLogs; ++numRoots;
break; break;
case BRUMA_KINDLING: case BRUMA_KINDLING:
++numKindling; ++numKindling;
@@ -431,13 +407,13 @@ public class WintertodtPlugin extends Plugin
} }
} }
//If we're currently fletching but there are no more logs, go ahead and abort fletching immediately //If we're currently fletching but there are no more roots, go ahead and abort fletching immediately
if (numLogs == 0 && currentActivity == WintertodtActivity.FLETCHING) if (numRoots == 0 && currentActivity == WintertodtActivity.FLETCHING)
{ {
currentActivity = WintertodtActivity.IDLE; currentActivity = WintertodtActivity.IDLE;
} }
//Otherwise, if we're currently feeding the brazier but we've run out of both logs and kindling, abort the feeding activity //Otherwise, if we're currently feeding the brazier but we've run out of both roots and kindling, abort the feeding activity
else if (numLogs == 0 && numKindling == 0 && currentActivity == WintertodtActivity.FEEDING_BRAZIER) else if (numRoots == 0 && numKindling == 0 && currentActivity == WintertodtActivity.FEEDING_BRAZIER)
{ {
currentActivity = WintertodtActivity.IDLE; currentActivity = WintertodtActivity.IDLE;
} }
@@ -448,29 +424,4 @@ public class WintertodtPlugin extends Plugin
currentActivity = action; currentActivity = action;
lastActionTime = Instant.now(); lastActionTime = Instant.now();
} }
private static int getPoints(int id)
{
switch (id)
{
case BRUMA_ROOT:
return 10;
case BRUMA_KINDLING:
return 25;
default:
return 0;
}
}
private static int getPotentialPoints(int id)
{
switch (id)
{
case BRUMA_ROOT:
case BRUMA_KINDLING:
return 25;
default:
return 0;
}
}
} }

View File

@@ -36,9 +36,10 @@ import net.runelite.client.ui.overlay.Overlay;
import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE; import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
import net.runelite.client.ui.overlay.OverlayPosition; 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.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent; import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
class WoodcuttingOverlay extends Overlay class WoodcuttingOverlay extends Overlay
{ {
@@ -92,23 +93,25 @@ class WoodcuttingOverlay extends Overlay
.build()); .build());
} }
TableComponent tableComponent = new TableComponent();
tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
int actions = xpTrackerService.getActions(Skill.WOODCUTTING); int actions = xpTrackerService.getActions(Skill.WOODCUTTING);
if (actions > 0) if (actions > 0)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Logs cut:", Integer.toString(actions));
.left("Logs cut:")
.right(Integer.toString(actions))
.build());
if (actions > 2) if (actions > 2)
{ {
panelComponent.getChildren().add(LineComponent.builder() tableComponent.addRow("Logs/hr:", Integer.toString(xpTrackerService.getActionsHr(Skill.WOODCUTTING)));
.left("Logs/hr:")
.right(Integer.toString(xpTrackerService.getActionsHr(Skill.WOODCUTTING)))
.build());
} }
} }
if (!tableComponent.isEmpty())
{
panelComponent.getChildren().add(tableComponent);
}
return panelComponent.render(graphics); return panelComponent.render(graphics);
} }

View File

@@ -51,8 +51,10 @@ import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
import net.runelite.client.ui.overlay.OverlayMenuEntry; import net.runelite.client.ui.overlay.OverlayMenuEntry;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayUtil; import net.runelite.client.ui.overlay.OverlayUtil;
import net.runelite.client.ui.overlay.components.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
import net.runelite.client.util.ColorUtil;
public class XpGlobesOverlay extends Overlay public class XpGlobesOverlay extends Overlay
{ {
@@ -248,16 +250,11 @@ public class XpGlobesOverlay extends Overlay
xpTooltip.setPreferredLocation(new java.awt.Point(x, y)); xpTooltip.setPreferredLocation(new java.awt.Point(x, y));
xpTooltip.setPreferredSize(new Dimension(TOOLTIP_RECT_SIZE_X, 0)); xpTooltip.setPreferredSize(new Dimension(TOOLTIP_RECT_SIZE_X, 0));
xpTooltip.getChildren().add(LineComponent.builder() TableComponent tableComponent = new TableComponent();
.left(skillName) tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT);
.right(skillLevel)
.build());
xpTooltip.getChildren().add(LineComponent.builder() tableComponent.addRow(skillName, skillLevel);
.left("Current XP:") tableComponent.addRow(ColorUtil.prependColorTag("Current XP:", Color.ORANGE), skillCurrentXp);
.leftColor(Color.ORANGE)
.right(skillCurrentXp)
.build());
if (goalXp > mouseOverSkill.getCurrentXp()) if (goalXp > mouseOverSkill.getCurrentXp())
{ {
@@ -267,41 +264,25 @@ public class XpGlobesOverlay extends Overlay
if (actionsLeft != Integer.MAX_VALUE) if (actionsLeft != Integer.MAX_VALUE)
{ {
String actionsLeftString = decimalFormat.format(actionsLeft); String actionsLeftString = decimalFormat.format(actionsLeft);
xpTooltip.getChildren().add(LineComponent.builder()
.left(xpActionType.getLabel() + " left:") tableComponent.addRow(ColorUtil.prependColorTag(xpActionType.getLabel() + " left:", Color.ORANGE), actionsLeftString);
.leftColor(Color.ORANGE)
.right(actionsLeftString)
.build());
} }
int xpLeft = goalXp - mouseOverSkill.getCurrentXp(); int xpLeft = goalXp - mouseOverSkill.getCurrentXp();
String skillXpToLvl = decimalFormat.format(xpLeft); String skillXpToLvl = decimalFormat.format(xpLeft);
xpTooltip.getChildren().add(LineComponent.builder() tableComponent.addRow(ColorUtil.prependColorTag("XP left:", Color.ORANGE), skillXpToLvl);
.left("XP left:")
.leftColor(Color.ORANGE)
.right(skillXpToLvl)
.build());
int xpHr = xpTrackerService.getXpHr(mouseOverSkill.getSkill()); int xpHr = xpTrackerService.getXpHr(mouseOverSkill.getSkill());
if (xpHr != 0) if (xpHr != 0)
{ {
String xpHrString = decimalFormat.format(xpHr); String xpHrString = decimalFormat.format(xpHr);
xpTooltip.getChildren().add(LineComponent.builder() tableComponent.addRow(ColorUtil.prependColorTag("XP per hour:", Color.ORANGE), xpHrString);
.left("XP per hour:")
.leftColor(Color.ORANGE)
.right(xpHrString)
.build());
} }
}
if (config.enableTimeToLevel()) if (!tableComponent.isEmpty())
{ {
String timeLeft = xpTrackerService.getTimeTillGoal(mouseOverSkill.getSkill()); xpTooltip.getChildren().add(tableComponent);
xpTooltip.getChildren().add(LineComponent.builder()
.left("Time left:")
.leftColor(Color.ORANGE)
.right(timeLeft)
.build());
}
} }
xpTooltip.render(graphics); xpTooltip.render(graphics);

View File

@@ -1,27 +1,27 @@
/* /*
* Copyright (c) 2019, TheStonedTurtle <https://github.com/TheStonedTurtle> * Copyright (c) 2019, TheStonedTurtle <https://github.com/TheStonedTurtle>
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
* *
* 1. Redistributions of source code must retain the above copyright notice, this * 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer. * list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice, * 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation * this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution. * and/or other materials provided with the distribution.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package net.runelite.client.ui.overlay.components.table; package net.runelite.client.ui.overlay.components.table;
public enum TableAlignment public enum TableAlignment

View File

@@ -290,6 +290,19 @@ public class TableComponent implements LayoutableRenderableEntity
return wrapped.toString().split("\n"); return wrapped.toString().split("\n");
} }
public boolean isEmpty()
{
return columns.size() == 0 || rows.size() == 0;
}
private void ensureColumnSize(final int size)
{
while (size > columns.size())
{
columns.add(TableElement.builder().build());
}
}
private static int getAlignedPosition(final String str, final TableAlignment alignment, final int columnWidth, final FontMetrics metrics) private static int getAlignedPosition(final String str, final TableAlignment alignment, final int columnWidth, final FontMetrics metrics)
{ {
final int stringWidth = getTextWidth(metrics, str); final int stringWidth = getTextWidth(metrics, str);
@@ -328,6 +341,21 @@ public class TableComponent implements LayoutableRenderableEntity
defaultColor); defaultColor);
} }
public void setColumnAlignment(final int col, final TableAlignment alignment)
{
assert columns.size() > col;
columns.get(col).setAlignment(alignment);
}
public void setColumnAlignments(@Nonnull final TableAlignment... alignments)
{
ensureColumnSize(alignments.length);
for (int i = 0; i < alignments.length; i++)
{
setColumnAlignment(i, alignments[i]);
}
}
/** /**
* Returns the alignment for the specified table element. * Returns the alignment for the specified table element.
* Priority order: cell->row->column->default * Priority order: cell->row->column->default
@@ -430,9 +458,4 @@ public class TableComponent implements LayoutableRenderableEntity
addColumn(col); addColumn(col);
} }
} }
public boolean isEmpty()
{
return columns.size() == 0 || rows.size() == 0;
}
} }

View File

@@ -25,7 +25,6 @@
package net.runelite.client.ui.overlay.components.table; package net.runelite.client.ui.overlay.components.table;
import java.awt.Color; import java.awt.Color;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@@ -37,5 +36,5 @@ public class TableRow
Color rowColor; Color rowColor;
TableAlignment rowAlignment; TableAlignment rowAlignment;
@Builder.Default @Builder.Default
List<TableElement> elements = new ArrayList<>(); List<TableElement> elements;
} }