Applied-Energistics-2-tiler.../me/cache/CraftingCache.java

120 lines
2.6 KiB
Java
Raw Normal View History

package appeng.me.cache;
import java.util.HashSet;
2014-05-18 05:19:23 +02:00
import appeng.api.networking.IGrid;
import appeng.api.networking.IGridCache;
import appeng.api.networking.IGridHost;
import appeng.api.networking.IGridNode;
import appeng.api.networking.IGridStorage;
2014-05-18 05:19:23 +02:00
import appeng.api.networking.crafting.ICraftingPatternDetails;
import appeng.api.networking.crafting.ICraftingProvider;
2014-05-18 05:19:23 +02:00
import appeng.api.networking.crafting.ICraftingProviderHelper;
import appeng.api.networking.events.MENetworkCraftingCpuChange;
import appeng.api.networking.events.MENetworkCraftingPatternChange;
import appeng.me.cluster.implementations.CraftingCPUCluster;
2014-05-18 05:19:23 +02:00
import appeng.tile.crafting.TileCraftingStorageTile;
import appeng.tile.crafting.TileCraftingTile;
2014-05-18 05:19:23 +02:00
public class CraftingCache implements IGridCache, ICraftingProviderHelper
{
HashSet<CraftingCPUCluster> cpuClusters = new HashSet();
HashSet<ICraftingProvider> providers = new HashSet();
2014-05-18 05:19:23 +02:00
IGrid grid;
boolean updateList = false;
public CraftingCache(IGrid g) {
grid = g;
}
@Override
public void onUpdateTick()
{
2014-05-18 05:19:23 +02:00
if ( updateList )
{
updateList = false;
updateCPUClusters();
}
}
2014-05-18 05:19:23 +02:00
public void updateCPUClusters(MENetworkCraftingCpuChange c)
{
updateList = true;
}
public void updateCPUClusters(MENetworkCraftingPatternChange c)
{
updatePatterns();
}
@Override
public void removeNode(IGridNode gridNode, IGridHost machine)
{
2014-05-18 05:19:23 +02:00
if ( machine instanceof TileCraftingTile )
updateList = true;
if ( machine instanceof ICraftingProvider )
2014-05-18 05:19:23 +02:00
{
providers.remove( machine );
2014-05-18 05:19:23 +02:00
updatePatterns();
}
}
@Override
public void addNode(IGridNode gridNode, IGridHost machine)
{
2014-05-18 05:19:23 +02:00
if ( machine instanceof TileCraftingTile )
updateList = true;
if ( machine instanceof ICraftingProvider )
2014-05-18 05:19:23 +02:00
{
providers.add( (ICraftingProvider) machine );
2014-05-18 05:19:23 +02:00
updatePatterns();
}
}
2014-05-18 05:19:23 +02:00
private void updateCPUClusters()
{
cpuClusters.clear();
for (IGridNode cst : grid.getMachines( TileCraftingStorageTile.class ))
{
TileCraftingStorageTile tile = (TileCraftingStorageTile) cst.getMachine();
cpuClusters.add( (CraftingCPUCluster) tile.getCluster() );
}
}
2014-05-18 05:19:23 +02:00
@Override
public void addCraftingOption(ICraftingPatternDetails api)
{
// TODO Auto-generated method stub
}
2014-05-18 05:19:23 +02:00
private void updatePatterns()
{
for (ICraftingProvider cp : providers)
{
cp.provideCrafting( this );
}
}
@Override
public void onSplit(IGridStorage destinationStorage)
{ // nothing!
}
@Override
public void onJoin(IGridStorage sourceStorage)
{
// nothing!
}
@Override
public void populateGridStorage(IGridStorage destinationStorage)
{
// nothing!
}
}