2014-05-09 06:10:12 +02:00
|
|
|
package appeng.me.cache;
|
|
|
|
|
|
|
|
import java.util.HashSet;
|
|
|
|
|
2014-05-18 05:19:23 +02:00
|
|
|
import appeng.api.networking.IGrid;
|
2014-05-09 06:10:12 +02:00
|
|
|
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;
|
2014-05-09 06:10:12 +02:00
|
|
|
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;
|
2014-05-09 06:10:12 +02:00
|
|
|
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-09 06:10:12 +02:00
|
|
|
|
2014-05-18 05:19:23 +02:00
|
|
|
public class CraftingCache implements IGridCache, ICraftingProviderHelper
|
2014-05-09 06:10:12 +02:00
|
|
|
{
|
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2014-05-09 06:10:12 +02:00
|
|
|
@Override
|
|
|
|
public void onUpdateTick()
|
|
|
|
{
|
2014-05-18 05:19:23 +02:00
|
|
|
if ( updateList )
|
|
|
|
{
|
|
|
|
updateList = false;
|
|
|
|
updateCPUClusters();
|
|
|
|
}
|
|
|
|
}
|
2014-05-09 06:10:12 +02:00
|
|
|
|
2014-05-18 05:19:23 +02:00
|
|
|
public void updateCPUClusters(MENetworkCraftingCpuChange c)
|
|
|
|
{
|
|
|
|
updateList = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void updateCPUClusters(MENetworkCraftingPatternChange c)
|
|
|
|
{
|
|
|
|
updatePatterns();
|
2014-05-09 06:10:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void removeNode(IGridNode gridNode, IGridHost machine)
|
|
|
|
{
|
2014-05-18 05:19:23 +02:00
|
|
|
if ( machine instanceof TileCraftingTile )
|
|
|
|
updateList = true;
|
2014-05-09 06:10:12 +02:00
|
|
|
if ( machine instanceof ICraftingProvider )
|
2014-05-18 05:19:23 +02:00
|
|
|
{
|
2014-05-09 06:10:12 +02:00
|
|
|
providers.remove( machine );
|
2014-05-18 05:19:23 +02:00
|
|
|
updatePatterns();
|
|
|
|
}
|
2014-05-09 06:10:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void addNode(IGridNode gridNode, IGridHost machine)
|
|
|
|
{
|
2014-05-18 05:19:23 +02:00
|
|
|
if ( machine instanceof TileCraftingTile )
|
|
|
|
updateList = true;
|
2014-05-09 06:10:12 +02:00
|
|
|
if ( machine instanceof ICraftingProvider )
|
2014-05-18 05:19:23 +02:00
|
|
|
{
|
2014-05-09 06:10:12 +02:00
|
|
|
providers.add( (ICraftingProvider) machine );
|
2014-05-18 05:19:23 +02:00
|
|
|
updatePatterns();
|
|
|
|
}
|
|
|
|
}
|
2014-05-09 06:10:12 +02:00
|
|
|
|
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-09 06:10:12 +02:00
|
|
|
}
|
|
|
|
|
2014-05-18 05:19:23 +02:00
|
|
|
@Override
|
|
|
|
public void addCraftingOption(ICraftingPatternDetails api)
|
2014-05-09 06:10:12 +02:00
|
|
|
{
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2014-05-18 05:19:23 +02:00
|
|
|
private void updatePatterns()
|
|
|
|
{
|
|
|
|
for (ICraftingProvider cp : providers)
|
|
|
|
{
|
|
|
|
cp.provideCrafting( this );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-05-09 06:10:12 +02:00
|
|
|
@Override
|
|
|
|
public void onSplit(IGridStorage destinationStorage)
|
|
|
|
{ // nothing!
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onJoin(IGridStorage sourceStorage)
|
|
|
|
{
|
|
|
|
// nothing!
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void populateGridStorage(IGridStorage destinationStorage)
|
|
|
|
{
|
|
|
|
// nothing!
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|