Crafting CPU basics.

This commit is contained in:
AlgorithmX2
2014-05-17 22:19:23 -05:00
parent 8838fc4ba6
commit b15d3af12b
14 changed files with 386 additions and 256 deletions
+60 -6
View File
@@ -2,47 +2,101 @@ package appeng.me.cache;
import java.util.HashSet;
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;
import appeng.api.networking.crafting.ICraftingPatternDetails;
import appeng.api.networking.crafting.ICraftingProvider;
import appeng.api.networking.crafting.ICraftingProviderHelper;
import appeng.api.networking.events.MENetworkCraftingCpuChange;
import appeng.api.networking.events.MENetworkCraftingPatternChange;
import appeng.me.cluster.implementations.CraftingCPUCluster;
import appeng.tile.crafting.TileCraftingStorageTile;
import appeng.tile.crafting.TileCraftingTile;
public class CraftingCache implements IGridCache
public class CraftingCache implements IGridCache, ICraftingProviderHelper
{
HashSet<CraftingCPUCluster> cpuClusters = new HashSet();
HashSet<ICraftingProvider> providers = new HashSet();
IGrid grid;
boolean updateList = false;
public CraftingCache(IGrid g) {
grid = g;
}
@Override
public void onUpdateTick()
{
if ( updateList )
{
updateList = false;
updateCPUClusters();
}
}
public void updateCPUClusters(MENetworkCraftingCpuChange c)
{
updateList = true;
}
public void updateCPUClusters(MENetworkCraftingPatternChange c)
{
updatePatterns();
}
@Override
public void removeNode(IGridNode gridNode, IGridHost machine)
{
if ( machine instanceof TileCraftingTile )
updateList = true;
if ( machine instanceof ICraftingProvider )
{
providers.remove( machine );
updatePatterns();
updatePatterns();
}
}
@Override
public void addNode(IGridNode gridNode, IGridHost machine)
{
if ( machine instanceof TileCraftingTile )
updateList = true;
if ( machine instanceof ICraftingProvider )
{
providers.add( (ICraftingProvider) machine );
updatePatterns();
}
}
private void updateCPUClusters()
{
cpuClusters.clear();
for (IGridNode cst : grid.getMachines( TileCraftingStorageTile.class ))
{
TileCraftingStorageTile tile = (TileCraftingStorageTile) cst.getMachine();
cpuClusters.add( (CraftingCPUCluster) tile.getCluster() );
}
}
@Override
public void addCraftingOption(ICraftingPatternDetails api)
{
// TODO Auto-generated method stub
updatePatterns();
}
private void updatePatterns()
{
// TODO Auto-generated method stub
for (ICraftingProvider cp : providers)
{
cp.provideCrafting( this );
}
}
@Override