2013-08-04 02:18:43 +02:00
|
|
|
package mekanism.api;
|
2013-07-06 03:43:59 +02:00
|
|
|
|
|
|
|
import java.util.EnumSet;
|
|
|
|
import java.util.HashSet;
|
|
|
|
import java.util.Set;
|
|
|
|
|
|
|
|
import cpw.mods.fml.common.ITickHandler;
|
|
|
|
import cpw.mods.fml.common.TickType;
|
|
|
|
import cpw.mods.fml.common.registry.TickRegistry;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
|
|
|
2013-08-04 02:18:43 +02:00
|
|
|
public class TransmitterNetworkRegistry implements ITickHandler
|
2013-07-06 03:43:59 +02:00
|
|
|
{
|
2013-08-04 02:18:43 +02:00
|
|
|
private static TransmitterNetworkRegistry INSTANCE = new TransmitterNetworkRegistry();
|
2013-07-07 19:07:40 +02:00
|
|
|
|
2013-08-04 02:18:43 +02:00
|
|
|
private HashSet<ITransmitterNetwork> networks = new HashSet<ITransmitterNetwork>();
|
2013-07-07 19:07:40 +02:00
|
|
|
|
2013-08-04 02:18:43 +02:00
|
|
|
public TransmitterNetworkRegistry()
|
2013-07-06 03:43:59 +02:00
|
|
|
{
|
|
|
|
TickRegistry.registerTickHandler(this, Side.SERVER);
|
|
|
|
}
|
|
|
|
|
2013-08-04 02:18:43 +02:00
|
|
|
public static TransmitterNetworkRegistry getInstance()
|
2013-07-06 03:43:59 +02:00
|
|
|
{
|
|
|
|
return INSTANCE;
|
|
|
|
}
|
2013-08-04 02:18:43 +02:00
|
|
|
|
|
|
|
public void registerNetwork(ITransmitterNetwork network)
|
2013-07-06 03:43:59 +02:00
|
|
|
{
|
|
|
|
networks.add(network);
|
|
|
|
}
|
|
|
|
|
2013-08-04 02:18:43 +02:00
|
|
|
public void removeNetwork(ITransmitterNetwork network)
|
2013-07-06 03:43:59 +02:00
|
|
|
{
|
2013-07-07 19:07:40 +02:00
|
|
|
if(networks.contains(network))
|
2013-07-06 03:43:59 +02:00
|
|
|
{
|
|
|
|
networks.remove(network);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-07-31 22:44:53 +02:00
|
|
|
public void pruneEmptyNetworks()
|
|
|
|
{
|
2013-08-04 02:18:43 +02:00
|
|
|
for(ITransmitterNetwork e : networks)
|
2013-07-28 04:32:41 +02:00
|
|
|
{
|
2013-08-04 02:18:43 +02:00
|
|
|
if(e.getSize() == 0)
|
2013-07-28 04:32:41 +02:00
|
|
|
{
|
|
|
|
removeNetwork(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-07-06 03:43:59 +02:00
|
|
|
@Override
|
|
|
|
public void tickStart(EnumSet<TickType> type, Object... tickData)
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
2013-08-04 02:18:43 +02:00
|
|
|
|
2013-07-06 03:43:59 +02:00
|
|
|
@Override
|
|
|
|
public void tickEnd(EnumSet<TickType> type, Object... tickData)
|
|
|
|
{
|
2013-08-06 07:40:41 +02:00
|
|
|
Set<ITransmitterNetwork> iterNetworks = (Set<ITransmitterNetwork>)networks.clone();
|
|
|
|
|
2013-08-04 02:18:43 +02:00
|
|
|
for(ITransmitterNetwork net : iterNetworks)
|
2013-07-06 03:43:59 +02:00
|
|
|
{
|
2013-07-28 04:32:41 +02:00
|
|
|
if(networks.contains(net))
|
|
|
|
{
|
|
|
|
net.tick();
|
|
|
|
}
|
2013-07-06 03:43:59 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public EnumSet<TickType> ticks()
|
|
|
|
{
|
|
|
|
return EnumSet.of(TickType.SERVER);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getLabel()
|
|
|
|
{
|
2013-08-06 07:40:41 +02:00
|
|
|
return "Mekanism Transmitter Networks";
|
2013-07-06 03:43:59 +02:00
|
|
|
}
|
|
|
|
|
2013-07-07 19:07:40 +02:00
|
|
|
@Override
|
|
|
|
public String toString()
|
|
|
|
{
|
2013-08-04 02:18:43 +02:00
|
|
|
return "Network Registry:\n" + networks;
|
2013-07-06 03:43:59 +02:00
|
|
|
}
|
|
|
|
}
|