worked on network power calculations

more of redoing them since i deleted the old ones right off the back
when updating to 1.6.2 to remove the chance of errors
This commit is contained in:
DarkGuardsman 2013-08-26 05:28:39 -04:00
parent 640a0e27b2
commit e6a33285be

View file

@ -1,5 +1,6 @@
package dark.assembly.common.machine; package dark.assembly.common.machine;
import java.util.Date;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.Set; import java.util.Set;
@ -15,8 +16,27 @@ import dark.core.tile.network.NetworkTileEntities;
public class NetworkAssembly extends NetworkSharedPower public class NetworkAssembly extends NetworkSharedPower
{ {
public Set<TileEntity> powerSources = new HashSet<TileEntity>(); /** Set of tiles that count as power sources */
public Set<TileEntity> powerLoads = new HashSet<TileEntity>(); private Set<TileEntity> powerSources = new HashSet<TileEntity>();
/** Set of tiles that count as power loads */
private Set<TileEntity> powerLoads = new HashSet<TileEntity>();
/** Network last calculation of power required by the network */
private float lastNetDemand = 0;
/** System time when the last power calculation was made */
private long lastDemandCalcTime = 0;
/** Network last calculation of power required by the network parts */
private float lastNetPartsDemand = 0;
/** System time when the last power calculation was made for network parts */
private long lastDemandPCalcTime = 0;
/** Date instance used to record the tile when last calculation were made */
private Date date = new Date();
/** Average power demand of the entire network */
public float averageDemand = 0;
/** highest demand the network has seen */
public float maxDemand = 0;
/** lowest demand the network has seen */
public float minDemand = 0;
public NetworkAssembly(INetworkPart... parts) public NetworkAssembly(INetworkPart... parts)
{ {
@ -24,11 +44,61 @@ public class NetworkAssembly extends NetworkSharedPower
} }
@Override @Override
public NetworkTileEntities newInstance() public NetworkAssembly newInstance()
{ {
return new NetworkAssembly(); return new NetworkAssembly();
} }
/** Gets the demand of all parts of the network including network parts */
public float getNetworkDemand()
{
float lastDemand = lastNetDemand;
float currentDemand = 0;
long lastTime = lastDemandCalcTime;
long time = date.getTime();
if(lastTime == 0)
{
lastTime = time;
}
currentDemand += getNetworkPartsDemand();
return currentDemand;
}
/** Gets the demand of all parts contained in the network so to power them first */
public float getNetworkPartsDemand()
{
float lastDemand = lastNetPartsDemand;
float currentDemand = 0;
long lastTime = lastDemandPCalcTime;
long time = date.getTime();
if(lastTime == 0)
{
lastTime = time;
}
for(INetworkPart part : this.getNetworkMemebers())
{
if(part instanceof TileEntityAssembly)
{
currentDemand += ((TileEntityAssembly) part).getWattLoad();
}
}
lastDemandPCalcTime = time;
lastNetPartsDemand = currentDemand;
//TODO calculate average
return currentDemand;
}
/** Called when the network gets more power then its parts need. Also called after all parts in
* the network get there power and is time to start suppling connections */
public void supplyPower(float power)
{
}
@Override @Override
public boolean addTile(TileEntity tileEntity, boolean member) public boolean addTile(TileEntity tileEntity, boolean member)
{ {