From 04a453336fcf25b3a65c80d9b9091266d5ba55fb Mon Sep 17 00:00:00 2001 From: Kyleeld <48519776+Kyleeld@users.noreply.github.com> Date: Sun, 5 May 2019 21:44:25 +0100 Subject: [PATCH] Update AmmoCounter.java Whilst training it's useful to know how much ammo per time unit you're losing. This can help predict how much ammo needs to be bought for training. --- .../client/plugins/ammo/AmmoCounter.java | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/ammo/AmmoCounter.java b/runelite-client/src/main/java/net/runelite/client/plugins/ammo/AmmoCounter.java index 1ed00bf1fe..b5bb0a7cb6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/ammo/AmmoCounter.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/ammo/AmmoCounter.java @@ -25,6 +25,11 @@ package net.runelite.client.plugins.ammo; import java.awt.image.BufferedImage; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.Duration; +import java.time.Instant; + import lombok.Getter; import net.runelite.client.plugins.Plugin; import net.runelite.client.ui.overlay.infobox.Counter; @@ -33,14 +38,18 @@ import net.runelite.client.util.StackFormatter; class AmmoCounter extends Counter { @Getter - private final int itemID; - private final String name; + private int itemID; + private String name; + private int total; + private Instant time; AmmoCounter(Plugin plugin, int itemID, int count, String name, BufferedImage image) { super(image, plugin, count); + this.total = count; this.itemID = itemID; this.name = name; + this.time = Instant.now(); } @Override @@ -52,6 +61,16 @@ class AmmoCounter extends Counter @Override public String getTooltip() { - return name; + return String.format("%s
Loss Rate: %s/h", name, lossRate()); + } + + int lossRate() + { + BigDecimal diff = BigDecimal.valueOf(total).subtract(BigDecimal.valueOf(getCount())); + BigDecimal timeSinceStart = BigDecimal.valueOf(Duration.between(time, Instant.now()).getSeconds()) + .setScale(6, RoundingMode.UP); + BigDecimal timeSinceStartInHours = timeSinceStart.divide(BigDecimal.valueOf(3600), RoundingMode.UP); + BigDecimal ammoPerHour = diff.divide(timeSinceStartInHours, RoundingMode.HALF_UP); + return ammoPerHour.intValue(); } }