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;
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</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();
}
}