Files
Mekanism-Community-Edition/common/mekanism/api/DynamicNetwork.java
T

84 lines
1.7 KiB
Java
Raw Normal View History

package mekanism.api;
2013-08-17 13:32:05 -04:00
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import mekanism.common.EnergyNetwork;
import mekanism.common.IMechanicalPipe;
import mekanism.common.IUniversalCable;
2013-08-18 16:51:47 -04:00
public abstract class DynamicNetwork<T, A, N> implements ITransmitterNetwork<T, A, N>
{
2013-08-17 13:32:05 -04:00
public HashSet<T> transmitters = new HashSet<T>();
public Set<A> possibleAcceptors = new HashSet<A>();
public Map<A, ForgeDirection> acceptorDirections = new HashMap<A, ForgeDirection>();
protected int ticksSinceCreate = 0;
protected int ticksSinceSecond = 0;
protected boolean fixed = false;
2013-08-17 13:32:05 -04:00
public void addAllTransmitters(Set<T> newTransmitters)
{
transmitters.addAll(newTransmitters);
}
2013-08-18 16:51:47 -04:00
@Override
2013-08-17 13:32:05 -04:00
public void removeTransmitter(T transmitter)
{
transmitters.remove(transmitter);
if(transmitters.size() == 0)
{
deregister();
}
}
2013-08-18 16:51:47 -04:00
@Override
2013-08-17 13:32:05 -04:00
public void register()
{
try {
T aTransmitter = transmitters.iterator().next();
if(aTransmitter instanceof TileEntity && !((TileEntity)aTransmitter).worldObj.isRemote)
{
TransmitterNetworkRegistry.getInstance().registerNetwork(this);
}
} catch(NoSuchElementException e) {}
}
2013-08-18 16:51:47 -04:00
@Override
2013-08-17 13:32:05 -04:00
public void deregister()
{
transmitters.clear();
TransmitterNetworkRegistry.getInstance().removeNetwork(this);
}
@Override
public int getSize()
{
return transmitters.size();
}
2013-08-18 16:51:47 -04:00
@Override
public void tick()
{
if(!fixed)
{
++ticksSinceCreate;
if(ticksSinceCreate > 1200)
{
ticksSinceCreate = 0;
fixMessedUpNetwork(transmitters.iterator().next());
}
}
}
}