Multimeter now only shows power for appropriate devices

This commit is contained in:
Calclavia 2014-02-27 19:17:22 +08:00
parent 4d2e7a10f6
commit f5e35f9924
7 changed files with 73 additions and 19 deletions

View file

@ -86,4 +86,6 @@ public abstract class Graph<V extends Comparable<V>>
public abstract NBTTagCompound save();
public abstract double getDouble();
public abstract V getAverage();
}

View file

@ -66,4 +66,23 @@ public class GraphF extends Graph<Float>
return get();
}
@Override
public Float getAverage()
{
if (points.size() > 0)
{
float average = 0;
for (float point : points)
{
average += point;
}
average /= points.size();
return average;
}
return 0f;
}
}

View file

@ -65,4 +65,23 @@ public class GraphI extends Graph<Integer>
return get();
}
@Override
public Integer getAverage()
{
if (points.size() > 0)
{
int average = 0;
for (int point : points)
{
average += point;
}
average /= points.size();
return average;
}
return 0;
}
}

View file

@ -65,4 +65,24 @@ public class GraphL extends Graph<Long>
return get();
}
@Override
public Long getAverage()
{
if (points.size() > 0)
{
long average = 0;
for (long point : points)
{
average += point;
}
average /= points.size();
return average;
}
return 0L;
}
}

View file

@ -17,15 +17,19 @@ public class MultimeterNetwork extends Network<MultimeterNetwork, PartMultimeter
{
public final List<String> displayInformation = new ArrayList<String>();
/**
* Maximum data points a graph can store.
*/
private int maxData = 1;
/**
* The available graphs to be handled.
*/
private int maxData = 20 * 10;
public final List<Graph> graphs = new ArrayList<Graph>();
/**
* Energy Related
*/
public final GraphL energyGraph = new GraphL("Energy", maxData);
public final GraphL powerGraph = new GraphL("Power", maxData);
public final GraphL energyCapacityGraph = new GraphL("Capacity", 1);
public final GraphL voltageGraph = new GraphL("Voltage", maxData);
public final GraphL torqueGraph = new GraphL("Torque", maxData);
@ -63,6 +67,7 @@ public class MultimeterNetwork extends Network<MultimeterNetwork, PartMultimeter
public MultimeterNetwork()
{
graphs.add(energyGraph);
graphs.add(powerGraph);
graphs.add(energyCapacityGraph);
graphs.add(voltageGraph);
graphs.add(torqueGraph);
@ -81,6 +86,9 @@ public class MultimeterNetwork extends Network<MultimeterNetwork, PartMultimeter
if (graph == energyGraph)
graphValue = UnitDisplay.getDisplay(energyGraph.get(), Unit.JOULES);
if (graph == powerGraph)
graphValue = UnitDisplay.getDisplay(powerGraph.get(), Unit.WATT);
if (graph == energyCapacityGraph)
graphValue = UnitDisplay.getDisplay(energyCapacityGraph.get(), Unit.JOULES);

View file

@ -20,6 +20,8 @@ import universalelectricity.api.CompatibilityModule;
import universalelectricity.api.electricity.IElectricalNetwork;
import universalelectricity.api.energy.IConductor;
import universalelectricity.api.energy.IEnergyNetwork;
import universalelectricity.api.energy.UnitDisplay;
import universalelectricity.api.energy.UnitDisplay.Unit;
import universalelectricity.api.net.IConnector;
import atomicscience.api.ITemperature;
import calclavia.lib.network.IPacketReceiver;
@ -260,6 +262,7 @@ public class PartMultimeter extends PartFace implements IConnector<MultimeterNet
{
IEnergyNetwork network = instance.getNetwork();
getNetwork().energyGraph.queue(Math.max(network.getBuffer(), network.getLastBuffer()));
getNetwork().powerGraph.queue(getNetwork().energyGraph.getAverage() * 20);
if (instance.getNetwork() instanceof IElectricalNetwork)
getNetwork().voltageGraph.queue(((IElectricalNetwork) network).getVoltage());
@ -286,6 +289,7 @@ public class PartMultimeter extends PartFace implements IConnector<MultimeterNet
getNetwork().torqueGraph.queue(instance.getTorque());
getNetwork().angularVelocityGraph.queue(instance.getAngularVelocity());
getNetwork().energyGraph.queue((long) (instance.getTorque() * instance.getAngularVelocity()));
getNetwork().powerGraph.queue(getNetwork().energyGraph.getAverage() * 20);
}
}

View file

@ -189,24 +189,6 @@ public class RenderMultimeter implements ISimpleItemRenderer
List<String> information = new ArrayList<String>();
if (part.getNetwork().energyGraph.get(0) > 0 && part.getNetwork().energyGraph.points.size() > 0)
{
/**
* Compute power
*/
long power = 0;
for (long point : part.getNetwork().energyGraph.points)
{
power += point;
}
power /= part.getNetwork().energyGraph.points.size();
if (power > 0)
information.add("Power: " + UnitDisplay.getDisplay(power * 20, Unit.WATT));
}
for (int i = 0; i < part.getNetwork().graphs.size(); i++)
{
if (part.getNetwork().graphs.get(i).get() != null && !part.getNetwork().graphs.get(i).get().equals(part.getNetwork().graphs.get(i).getDefault()))