package crazypants.enderio.conduit.power; import crazypants.enderio.power.PerTickIntAverageCalculator; public class PowerTracker { private long previousStorageLevel = -1; private final PerTickIntAverageCalculator recTracker = new PerTickIntAverageCalculator(); private final PerTickIntAverageCalculator sentTracker = new PerTickIntAverageCalculator(); private int sentThisTick = 0; private int recievedThisTick = 0; public void tickStart(long storedEnergy) { long curStorage = storedEnergy; if(previousStorageLevel > -1) { long recieved = curStorage - previousStorageLevel; recieved = Math.max(0, recieved); recievedThisTick += recieved; } } public void powerRecieved(int power) { recievedThisTick += power; } public void powerSent(int power) { sentThisTick += power; } public void tickEnd(long storedEnergy) { previousStorageLevel = storedEnergy; sentTracker.tick(sentThisTick); recTracker.tick(recievedThisTick); recievedThisTick = 0; sentThisTick = 0; } public float getAverageRfTickRecieved() { return recTracker.getAverage(); } public float getAverageRfTickSent() { return sentTracker.getAverage(); } }