56 lines
1.1 KiB
Java
56 lines
1.1 KiB
Java
|
package resonantinduction.electrical.battery;
|
||
|
|
||
|
import java.util.Arrays;
|
||
|
|
||
|
import calclavia.lib.multiblock.structure.Structure;
|
||
|
|
||
|
public class BatteryStructure extends Structure<TileBattery>
|
||
|
{
|
||
|
public void redistribute(TileBattery... exclusion)
|
||
|
{
|
||
|
long totalEnergy = 0;
|
||
|
|
||
|
for (TileBattery battery : this.get())
|
||
|
{
|
||
|
totalEnergy += battery.getEnergy(null);
|
||
|
}
|
||
|
|
||
|
int amountOfNodes = this.get().size() - exclusion.length;
|
||
|
|
||
|
if (totalEnergy > 0 && amountOfNodes > 0)
|
||
|
{
|
||
|
long totalPerBattery = totalEnergy / amountOfNodes;
|
||
|
long totalPerBatteryRemainder = totalPerBattery + totalEnergy % amountOfNodes;
|
||
|
|
||
|
TileBattery firstNode = this.getFirstNode();
|
||
|
|
||
|
for (TileBattery battery : this.get())
|
||
|
{
|
||
|
if (!Arrays.asList(exclusion).contains(battery))
|
||
|
{
|
||
|
if (battery == firstNode)
|
||
|
{
|
||
|
battery.setEnergy(null, totalPerBatteryRemainder);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
battery.setEnergy(null, totalPerBattery);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public Structure getNew()
|
||
|
{
|
||
|
return new BatteryStructure();
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void refreshNode(TileBattery node)
|
||
|
{
|
||
|
node.setNetwork(this);
|
||
|
}
|
||
|
}
|