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.
This commit is contained in:
Kyleeld
2019-05-05 21:44:25 +01:00
committed by GitHub
parent 379929e2aa
commit 04a453336f

View File

@@ -25,6 +25,11 @@
package net.runelite.client.plugins.ammo; package net.runelite.client.plugins.ammo;
import java.awt.image.BufferedImage; 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 lombok.Getter;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.ui.overlay.infobox.Counter; import net.runelite.client.ui.overlay.infobox.Counter;
@@ -33,14 +38,18 @@ import net.runelite.client.util.StackFormatter;
class AmmoCounter extends Counter class AmmoCounter extends Counter
{ {
@Getter @Getter
private final int itemID; private int itemID;
private final String name; private String name;
private int total;
private Instant time;
AmmoCounter(Plugin plugin, int itemID, int count, String name, BufferedImage image) AmmoCounter(Plugin plugin, int itemID, int count, String name, BufferedImage image)
{ {
super(image, plugin, count); super(image, plugin, count);
this.total = count;
this.itemID = itemID; this.itemID = itemID;
this.name = name; this.name = name;
this.time = Instant.now();
} }
@Override @Override
@@ -52,6 +61,16 @@ class AmmoCounter extends Counter
@Override @Override
public String getTooltip() public String getTooltip()
{ {
return name; return String.format("%s</br>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();
} }
} }