package mekanism.common.transmitters;
import mekanism.api.transmitters.DynamicNetwork;
import mekanism.api.transmitters.IGridTransmitter;
public abstract class Transmitter<A, N extends DynamicNetwork<A, N>> implements IGridTransmitter<A, N>
{
public N theNetwork = null;
public boolean orphaned = true;
@Override
public N getTransmitterNetwork()
{
return theNetwork;
}
@Override
public boolean hasTransmitterNetwork()
{
return !isOrphan() && getTransmitterNetwork() != null;
}
@Override
public void setTransmitterNetwork(N network)
{
if(theNetwork == network)
{
return;
}
if(world().isRemote && theNetwork != null)
{
theNetwork.transmitters.remove(this);
if(theNetwork.transmitters.isEmpty())
{
theNetwork.deregister();
}
}
theNetwork = network;
orphaned = theNetwork == null;
if(world().isRemote && theNetwork != null)
{
theNetwork.transmitters.add(this);
}
}
@Override
public int getTransmitterNetworkSize()
{
return hasTransmitterNetwork() ? getTransmitterNetwork().getSize() : 0;
}
@Override
public int getTransmitterNetworkAcceptorSize()
{
return hasTransmitterNetwork() ? getTransmitterNetwork().getAcceptorSize() : 0;
}
@Override
public String getTransmitterNetworkNeeded()
{
return hasTransmitterNetwork() ? getTransmitterNetwork().getNeededInfo() : "No Network";
}
@Override
public String getTransmitterNetworkFlow()
{
return hasTransmitterNetwork() ? getTransmitterNetwork().getFlowInfo() : "No Network";
}
@Override
public String getTransmitterNetworkBuffer()
{
return hasTransmitterNetwork() ? getTransmitterNetwork().getStoredInfo() : "No Network";
}
@Override
public double getTransmitterNetworkCapacity()
{
return hasTransmitterNetwork() ? getTransmitterNetwork().getCapacity() : getCapacity();
}
@Override
public boolean isOrphan()
{
return orphaned;
}
@Override
public void setOrphan(boolean nowOrphaned)
{
orphaned = nowOrphaned;
}
}