From b899a4b675062bc0fc2eae4b2032a79c33e97149 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Wed, 24 Oct 2018 08:58:16 +0200 Subject: [PATCH] Calculate total count/value from loot records instead of boxes Signed-off-by: Tomas Slusny --- .../plugins/loottracker/LootTrackerBox.java | 10 +++--- .../plugins/loottracker/LootTrackerPanel.java | 31 +++++++++++++++++-- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerBox.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerBox.java index a0360ff1a1..eb079d3f86 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerBox.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerBox.java @@ -63,9 +63,7 @@ class LootTrackerBox extends JPanel @Getter private final List records = new ArrayList<>(); - @Getter private long totalPrice; - private boolean hideIgnoredItems; private BiConsumer onItemToggle; @@ -116,7 +114,7 @@ class LootTrackerBox extends JPanel * * @return total amount of kills */ - long getTotalKills() + private long getTotalKills() { return hideIgnoredItems ? records.stream().filter(r -> !Arrays.stream(r.getItems()).allMatch(LootTrackerItem::isIgnored)).count() @@ -169,9 +167,11 @@ class LootTrackerBox extends JPanel buildItems(); priceLabel.setText(StackFormatter.quantityToStackSize(totalPrice) + " gp"); - if (records.size() > 1) + + final long kills = getTotalKills(); + if (kills > 1) { - subTitleLabel.setText("x " + records.size()); + subTitleLabel.setText("x " + kills); } repaint(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java index 73384afd57..001e747bb4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java @@ -481,8 +481,35 @@ class LootTrackerPanel extends PluginPanel private void updateOverall() { - final long overallGp = boxes.stream().mapToLong(LootTrackerBox::getTotalPrice).sum(); - final long overallKills = boxes.stream().mapToLong(LootTrackerBox::getTotalKills).sum(); + long overallKills = 0; + long overallGp = 0; + + for (LootTrackerRecord record : records) + { + if (!record.matches(currentView)) + { + continue; + } + + int present = record.getItems().length; + + for (LootTrackerItem item : record.getItems()) + { + if (hideIgnoredItems && item.isIgnored()) + { + present--; + continue; + } + + overallGp += item.getPrice(); + } + + if (present > 0) + { + overallKills++; + } + } + overallKillsLabel.setText(htmlLabel("Total count: ", overallKills)); overallGpLabel.setText(htmlLabel("Total value: ", overallGp)); }