Skip to content

Commit

Permalink
feat: seperated ICraftingCPU from Cluster
Browse files Browse the repository at this point in the history
  • Loading branch information
leytilera committed Jan 27, 2023
1 parent 493dc5a commit af7d9f6
Show file tree
Hide file tree
Showing 7 changed files with 112 additions and 41 deletions.
39 changes: 39 additions & 0 deletions src/api/java/appeng/api/networking/crafting/ICraftingCPU.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,14 @@

package appeng.api.networking.crafting;

import appeng.api.config.Actionable;
import appeng.api.networking.IGrid;
import appeng.api.networking.energy.IEnergyGrid;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.networking.storage.IBaseMonitor;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IAEStack;
import appeng.api.storage.data.IItemList;

public interface ICraftingCPU extends IBaseMonitor<IAEItemStack> {
/**
Expand All @@ -52,4 +57,38 @@ public interface ICraftingCPU extends IBaseMonitor<IAEItemStack> {
* @return an empty string or the name of the cpu.
*/
String getName();

void getListOfItem(final IItemList<IAEItemStack> list, final CraftingItemList whichList);

void cancel();

IAEItemStack getItemStack(final IAEItemStack what, final CraftingItemList storage2);

long getElapsedTime();

long getRemainingItemCount();

long getStartItemCount();

void addCrafting(final ICraftingPatternDetails details, final long crafts);

void addStorage(final IAEItemStack extractItems);

void addEmitable(final IAEItemStack i);

void updateCraftingLogic(final IGrid grid, final IEnergyGrid eg, final ICraftingGrid cc);

ICraftingLink getLastCraftingLink();

boolean canAccept(final IAEStack<?> input);

IAEStack<?> injectItems(final IAEStack<?> input, final Actionable type, final BaseActionSource src);

ICraftingLink submitJob(final IGrid g, final ICraftingJob job, final BaseActionSource src, final ICraftingRequester requestingMachine);

boolean isMaking(final IAEItemStack what);

boolean isActive();

boolean isDestroyed();
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
import appeng.core.sync.packets.PacketValueConfig;
import appeng.helpers.ICustomNameObject;
import appeng.me.cluster.IAEMultiBlock;
import appeng.me.cluster.implementations.CraftingCPUCluster;
import appeng.tile.crafting.TileCraftingTile;
import appeng.util.Platform;
import net.minecraft.entity.player.EntityPlayer;
Expand All @@ -53,7 +52,7 @@ public class ContainerCraftingCPU extends AEBaseContainer
private final IItemList<IAEItemStack> list
= AEApi.instance().storage().createItemList();
private IGrid network;
private CraftingCPUCluster monitor = null;
private ICraftingCPU monitor = null;
private String cpuName = null;

@GuiSync(0)
Expand Down Expand Up @@ -110,9 +109,9 @@ protected void setCPU(final ICraftingCPU c) {
}
}

if (c instanceof CraftingCPUCluster) {
if (c instanceof ICraftingCPU) {
this.cpuName = c.getName();
this.setMonitor((CraftingCPUCluster) c);
this.setMonitor((ICraftingCPU) c);
this.list.resetStatus();
this.getMonitor().getListOfItem(this.list, CraftingItemList.ALL);
this.getMonitor().addListener(this, null);
Expand Down Expand Up @@ -242,11 +241,11 @@ private void setEstimatedTime(final long eta) {
this.eta = eta;
}

CraftingCPUCluster getMonitor() {
ICraftingCPU getMonitor() {
return this.monitor;
}

private void setMonitor(final CraftingCPUCluster monitor) {
private void setMonitor(final ICraftingCPU monitor) {
this.monitor = monitor;
}

Expand Down
10 changes: 5 additions & 5 deletions src/main/java/appeng/crafting/CraftingTreeNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@
import appeng.api.AEApi;
import appeng.api.config.Actionable;
import appeng.api.config.FuzzyMode;
import appeng.api.networking.crafting.ICraftingCPU;
import appeng.api.networking.crafting.ICraftingGrid;
import appeng.api.networking.crafting.ICraftingPatternDetails;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList;
import appeng.me.cluster.implementations.CraftingCPUCluster;
import com.google.common.collect.Lists;
import net.minecraft.world.World;

Expand Down Expand Up @@ -313,7 +313,7 @@ void setSimulate() {

public void setJob(
final MECraftingInventory storage,
final CraftingCPUCluster craftingCPUCluster,
final ICraftingCPU ICraftingCPU,
final BaseActionSource src
) throws CraftBranchFailure {
for (final IAEItemStack i : this.used) {
Expand All @@ -323,17 +323,17 @@ public void setJob(
throw new CraftBranchFailure(i, i.getStackSize());
}

craftingCPUCluster.addStorage(ex);
ICraftingCPU.addStorage(ex);
}

if (this.howManyEmitted > 0) {
final IAEItemStack i = this.what.copy();
i.setStackSize(this.howManyEmitted);
craftingCPUCluster.addEmitable(i);
ICraftingCPU.addEmitable(i);
}

for (final CraftingTreeProcess pro : this.nodes) {
pro.setJob(storage, craftingCPUCluster, src);
pro.setJob(storage, ICraftingCPU, src);
}
}

Expand Down
8 changes: 4 additions & 4 deletions src/main/java/appeng/crafting/CraftingTreeProcess.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@

import appeng.api.AEApi;
import appeng.api.config.Actionable;
import appeng.api.networking.crafting.ICraftingCPU;
import appeng.api.networking.crafting.ICraftingGrid;
import appeng.api.networking.crafting.ICraftingPatternDetails;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList;
import appeng.container.ContainerNull;
import appeng.me.cluster.implementations.CraftingCPUCluster;
import appeng.util.Platform;
import cpw.mods.fml.common.FMLCommonHandler;
import net.minecraft.inventory.InventoryCrafting;
Expand Down Expand Up @@ -287,13 +287,13 @@ void setSimulate() {

void setJob(
final MECraftingInventory storage,
final CraftingCPUCluster craftingCPUCluster,
final ICraftingCPU ICraftingCPU,
final BaseActionSource src
) throws CraftBranchFailure {
craftingCPUCluster.addCrafting(this.details, this.crafts);
ICraftingCPU.addCrafting(this.details, this.crafts);

for (final CraftingTreeNode pro : this.nodes.keySet()) {
pro.setJob(storage, craftingCPUCluster, src);
pro.setJob(storage, ICraftingCPU, src);
}
}

Expand Down
47 changes: 23 additions & 24 deletions src/main/java/appeng/me/cache/CraftingGridCache.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@
import appeng.crafting.CraftingLink;
import appeng.crafting.CraftingLinkNexus;
import appeng.crafting.CraftingWatcher;
import appeng.me.cluster.implementations.CraftingCPUCluster;
import appeng.me.helpers.GenericInterestManager;
import appeng.tile.crafting.TileCraftingStorageTile;
import appeng.tile.crafting.TileCraftingTile;
Expand Down Expand Up @@ -82,8 +81,8 @@ public Thread newThread(final Runnable ar) {
CRAFTING_POOL = Executors.newCachedThreadPool(factory);
}

private final Set<CraftingCPUCluster> craftingCPUClusters
= new HashSet<CraftingCPUCluster>();
private final Set<ICraftingCPU> ICraftingCPUs
= new HashSet<ICraftingCPU>();
private final Set<ICraftingProvider> craftingProviders
= new HashSet<ICraftingProvider>();
private final Map<IGridNode, ICraftingWatcher> craftingWatchers
Expand Down Expand Up @@ -131,7 +130,7 @@ public void onUpdateTick() {
}
}

for (final CraftingCPUCluster cpu : this.craftingCPUClusters) {
for (final ICraftingCPU cpu : this.ICraftingCPUs) {
cpu.updateCraftingLogic(this.grid, this.energyGrid, this);
}
}
Expand Down Expand Up @@ -259,14 +258,14 @@ private void updatePatterns() {
}

private void updateCPUClusters() {
this.craftingCPUClusters.clear();
this.ICraftingCPUs.clear();

for (final IGridNode cst : this.grid.getMachines(TileCraftingStorageTile.class)) {
final TileCraftingStorageTile tile
= (TileCraftingStorageTile) cst.getMachine();
final CraftingCPUCluster cluster = (CraftingCPUCluster) tile.getCluster();
final ICraftingCPU cluster = (ICraftingCPU) tile.getCluster();
if (cluster != null) {
this.craftingCPUClusters.add(cluster);
this.ICraftingCPUs.add(cluster);

if (cluster.getLastCraftingLink() != null) {
this.addLink((CraftingLink) cluster.getLastCraftingLink());
Expand Down Expand Up @@ -346,7 +345,7 @@ public boolean isPrioritized(final IAEStack input) {

@Override
public boolean canAccept(final IAEStack input) {
for (final CraftingCPUCluster cpu : this.craftingCPUClusters) {
for (final ICraftingCPU cpu : this.ICraftingCPUs) {
if (cpu.canAccept(input)) {
return true;
}
Expand All @@ -368,7 +367,7 @@ public boolean validForPass(final int i) {
@Override
public IAEStack
injectItems(IAEStack input, final Actionable type, final BaseActionSource src) {
for (final CraftingCPUCluster cpu : this.craftingCPUClusters) {
for (final ICraftingCPU cpu : this.ICraftingCPUs) {
input = cpu.injectItems(input, type, src);
}

Expand Down Expand Up @@ -461,27 +460,27 @@ public ICraftingLink submitJob(
return null;
}

CraftingCPUCluster cpuCluster = null;
ICraftingCPU cpuCluster = null;

if (target instanceof CraftingCPUCluster) {
cpuCluster = (CraftingCPUCluster) target;
if (target instanceof ICraftingCPU) {
cpuCluster = (ICraftingCPU) target;
}

if (target == null) {
final List<CraftingCPUCluster> validCpusClusters
= new ArrayList<CraftingCPUCluster>();
for (final CraftingCPUCluster cpu : this.craftingCPUClusters) {
final List<ICraftingCPU> validCpusClusters
= new ArrayList<ICraftingCPU>();
for (final ICraftingCPU cpu : this.ICraftingCPUs) {
if (cpu.isActive() && !cpu.isBusy()
&& cpu.getAvailableStorage() >= job.getByteTotal()) {
validCpusClusters.add(cpu);
}
}

Collections.sort(validCpusClusters, new Comparator<CraftingCPUCluster>() {
Collections.sort(validCpusClusters, new Comparator<ICraftingCPU>() {
@Override
public int compare(
final CraftingCPUCluster firstCluster,
final CraftingCPUCluster nextCluster
final ICraftingCPU firstCluster,
final ICraftingCPU nextCluster
) {
if (prioritizePower) {
final int comparison = ItemSorters.compareLong(
Expand Down Expand Up @@ -523,7 +522,7 @@ public int compare(

@Override
public ImmutableSet<ICraftingCPU> getCpus() {
return ImmutableSet.copyOf(new ActiveCpuIterator(this.craftingCPUClusters));
return ImmutableSet.copyOf(new ActiveCpuIterator(this.ICraftingCPUs));
}

@Override
Expand All @@ -533,7 +532,7 @@ public boolean canEmitFor(final IAEItemStack someItem) {

@Override
public boolean isRequesting(final IAEItemStack what) {
for (final CraftingCPUCluster cluster : this.craftingCPUClusters) {
for (final ICraftingCPU cluster : this.ICraftingCPUs) {
if (cluster.isMaking(what)) {
return true;
}
Expand All @@ -553,18 +552,18 @@ public List<ICraftingMedium> getMediums(final ICraftingPatternDetails key) {
}

public boolean hasCpu(final ICraftingCPU cpu) {
return this.craftingCPUClusters.contains(cpu);
return this.ICraftingCPUs.contains(cpu);
}

public GenericInterestManager<CraftingWatcher> getInterestManager() {
return this.interestManager;
}

private static class ActiveCpuIterator implements Iterator<ICraftingCPU> {
private final Iterator<CraftingCPUCluster> iterator;
private CraftingCPUCluster cpuCluster;
private final Iterator<ICraftingCPU> iterator;
private ICraftingCPU cpuCluster;

public ActiveCpuIterator(final Collection<CraftingCPUCluster> o) {
public ActiveCpuIterator(final Collection<ICraftingCPU> o) {
this.iterator = o.iterator();
this.cpuCluster = null;
}
Expand Down
Loading

0 comments on commit af7d9f6

Please sign in to comment.