From 4fbc35de962d73ec1809b79bf3b44722a9af56f9 Mon Sep 17 00:00:00 2001 From: pklite <46624825+pklite@users.noreply.github.com> Date: Thu, 20 Jun 2019 04:41:15 -0400 Subject: [PATCH] Adds an overlay for the local player counter (#669) * Adds an overlay for friendly/enemy player count from PvP tools Signed-off-by: PKLite * Prevents local player from being added to count Signed-off-by: PKLite --- .../plugins/pvptools/PlayerCountOverlay.java | 63 +++++++++++++++++++ .../plugins/pvptools/PvpToolsPlugin.java | 29 ++++++--- 2 files changed, 83 insertions(+), 9 deletions(-) create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PlayerCountOverlay.java diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PlayerCountOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PlayerCountOverlay.java new file mode 100644 index 0000000000..1cb2079421 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PlayerCountOverlay.java @@ -0,0 +1,63 @@ +/* + * ****************************************************************************** + * * Copyright (c) 2019 RuneLitePlus + * * Redistributions and modifications of this software are permitted as long as this notice remains in its original unmodified state at the top of this file. + * * If there are any questions comments, or feedback about this software, please direct all inquiries directly to the file authors: + * * ST0NEWALL#9112 + * * RuneLitePlus Discord: https://discord.gg/Q7wFtCe + * * RuneLitePlus website: https://runelitepl.us + * ***************************************************************************** + */ + +package net.runelite.client.plugins.pvptools; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics2D; +import java.util.Arrays; +import javax.inject.Inject; +import net.runelite.client.ui.overlay.Overlay; +import net.runelite.client.ui.overlay.OverlayLayer; +import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.OverlayPriority; +import net.runelite.client.ui.overlay.components.table.TableComponent; +import net.runelite.client.ui.overlay.components.table.TableElement; +import net.runelite.client.ui.overlay.components.table.TableRow; + +public class PlayerCountOverlay extends Overlay +{ + + private final PvpToolsPlugin pvpToolsPlugin; + private final PvpToolsConfig config; + + @Inject + public PlayerCountOverlay(PvpToolsPlugin pvpToolsPlugin, PvpToolsConfig pvpToolsConfig) + { + this.pvpToolsPlugin = pvpToolsPlugin; + this.config = pvpToolsConfig; + setLayer(OverlayLayer.ABOVE_WIDGETS); + setPriority(OverlayPriority.HIGHEST); + setPosition(OverlayPosition.TOP_LEFT); + this.setPreferredPosition(OverlayPosition.TOP_LEFT); + } + + @Override + public Dimension render(Graphics2D graphics) + { + if (config.countPlayers()) + { + TableComponent tableComponent = new TableComponent(); + TableElement[] firstRowElements = { + TableElement.builder().content("Friendly").color(Color.GREEN).build(), + TableElement.builder().content(String.valueOf(pvpToolsPlugin.getFriendlyPlayerCount())).build()}; + TableRow firstRow = TableRow.builder().elements(Arrays.asList(firstRowElements)).build(); + TableElement[] secondRowElements = { + TableElement.builder().content("Enemy").color(Color.RED).build(), + TableElement.builder().content(String.valueOf(pvpToolsPlugin.getEnemyPlayerCount())).build()}; + TableRow secondRow = TableRow.builder().elements(Arrays.asList(secondRowElements)).build(); + tableComponent.addRows(firstRow, secondRow); + return tableComponent.render(graphics); + } + return null; + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java index 1b9856210d..39ed25ccda 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java @@ -78,6 +78,9 @@ public class PvpToolsPlugin extends Plugin @Inject PvpToolsOverlay pvpToolsOverlay; + @Inject + PlayerCountOverlay playerCountOverlay; + boolean fallinHelperEnabled = false; private PvpToolsPanel panel; private MissingPlayersJFrame missingPlayersJFrame; @@ -185,6 +188,10 @@ public class PvpToolsPlugin extends Plugin private int[] overheadCount = new int[]{0, 0, 0}; private List ignoredSpells = new ArrayList(); + @Getter + private int enemyPlayerCount = 0; + @Getter + private int friendlyPlayerCount = 0; private List getMissingMembers() { @@ -241,6 +248,7 @@ public class PvpToolsPlugin extends Plugin protected void startUp() throws Exception { overlayManager.add(pvpToolsOverlay); + overlayManager.add(playerCountOverlay); keyManager.registerKeyListener(fallinHotkeyListener); keyManager.registerKeyListener(renderselfHotkeyListener); @@ -278,6 +286,7 @@ public class PvpToolsPlugin extends Plugin protected void shutDown() throws Exception { overlayManager.remove(pvpToolsOverlay); + overlayManager.remove(playerCountOverlay); keyManager.unregisterKeyListener(fallinHotkeyListener); keyManager.unregisterKeyListener(renderselfHotkeyListener); clientToolbar.removeNavigation(navButton); @@ -534,35 +543,37 @@ public class PvpToolsPlugin extends Plugin panel.numMeleeJLabel.repaint(); } - /** - * - */ + private void updatePlayers() { + friendlyPlayerCount = 0; + enemyPlayerCount = 0; if (config.countPlayers()) { - int cc = 0; - int other = 0; for (Player p : client.getPlayers()) { if (Objects.nonNull(p)) { + if (p.equals(client.getLocalPlayer())) + { + continue; + } if (PvPUtil.isAttackable(client, p)) { if (p.isClanMember()) { - cc++; + friendlyPlayerCount++; } else { - other++; + enemyPlayerCount++; } } } } - panel.numOther.setText(htmlLabel("Other Player Count: ", String.valueOf(other))); - panel.numCC.setText(htmlLabel("Friendly Player Count: ", String.valueOf(cc))); + panel.numOther.setText(htmlLabel("Other Player Count: ", String.valueOf(enemyPlayerCount))); + panel.numCC.setText(htmlLabel("Friendly Player Count: ", String.valueOf(friendlyPlayerCount))); panel.numCC.repaint(); panel.numOther.repaint(); }