Crafting improvements

This commit is contained in:
Raoul Van den Berge
2016-05-25 02:18:34 +02:00
parent de20bcd00a
commit ce68fd6d72
7 changed files with 39 additions and 20 deletions

View File

@@ -9,15 +9,10 @@ import refinedstorage.tile.TileMachine;
import refinedstorage.tile.autocrafting.task.ICraftingTask;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class TileCraftingMonitor extends TileMachine {
public class ClientSideCraftingTask {
public ItemStack output;
public int id;
public String info;
}
private List<ClientSideCraftingTask> tasks = new ArrayList<ClientSideCraftingTask>();
@Override
@@ -64,16 +59,12 @@ public class TileCraftingMonitor extends TileMachine {
int outputs = buf.readInt();
for (int j = 0; j < outputs; ++j) {
ClientSideCraftingTask task = new ClientSideCraftingTask();
task.info = info;
task.output = ByteBufUtils.readItemStack(buf);
task.id = i;
newTasks.add(task);
newTasks.add(new ClientSideCraftingTask(ByteBufUtils.readItemStack(buf), i, info));
}
}
Collections.reverse(newTasks);
tasks = newTasks;
}
@@ -85,4 +76,16 @@ public class TileCraftingMonitor extends TileMachine {
public Class<? extends Container> getContainer() {
return ContainerCraftingMonitor.class;
}
public class ClientSideCraftingTask {
public ItemStack output;
public int id;
public String info;
public ClientSideCraftingTask(ItemStack output, int id, String info) {
this.output = output;
this.id = id;
this.info = info;
}
}
}

View File

@@ -71,7 +71,7 @@ public class BasicCraftingTask implements ICraftingTask {
CraftingPattern pattern = controller.getPattern(input);
if (pattern != null) {
controller.addCraftingTask(pattern);
controller.addCraftingTask(controller.createCraftingTask(pattern));
childTasks[i] = true;
}

View File

@@ -21,7 +21,7 @@ public class CraftingTaskScheduler {
if (pattern != null) {
scheduledItem = item;
controller.addCraftingTask(pattern);
controller.addCraftingTask(controller.createCraftingTask(pattern));
}
}

View File

@@ -66,7 +66,7 @@ public class ProcessingCraftingTask implements ICraftingTask {
if (pattern != null) {
childTasks[i] = true;
controller.addCraftingTask(pattern);
controller.addCraftingTask(controller.createCraftingTask(pattern));
break;
}

View File

@@ -117,7 +117,7 @@ public class StorageHandler {
}
while (quantity > 0) {
controller.addCraftingTask(pattern);
controller.addCraftingTaskAsLast(controller.createCraftingTask(pattern));
quantity -= quantityPerRequest;
}

View File

@@ -63,6 +63,7 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
private List<CraftingPattern> patterns = new ArrayList<CraftingPattern>();
private Stack<ICraftingTask> craftingTasks = new Stack<ICraftingTask>();
private List<ICraftingTask> craftingTasksToAddAsLast = new ArrayList<ICraftingTask>();
private List<ICraftingTask> craftingTasksToAdd = new ArrayList<ICraftingTask>();
private List<ICraftingTask> craftingTasksToCancel = new ArrayList<ICraftingTask>();
@@ -114,6 +115,11 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
}
craftingTasksToAdd.clear();
for (ICraftingTask task : craftingTasksToAddAsLast) {
craftingTasks.add(0, task);
}
craftingTasksToAddAsLast.clear();
if (!craftingTasks.empty()) {
ICraftingTask top = craftingTasks.peek();
@@ -264,11 +270,17 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
markDirty();
}
public void addCraftingTask(CraftingPattern pattern) {
public void addCraftingTaskAsLast(ICraftingTask task) {
craftingTasksToAddAsLast.add(task);
markDirty();
}
public ICraftingTask createCraftingTask(CraftingPattern pattern) {
if (pattern.isProcessing()) {
addCraftingTask(new ProcessingCraftingTask(pattern));
return new ProcessingCraftingTask(pattern);
} else {
addCraftingTask(new BasicCraftingTask(pattern));
return new BasicCraftingTask(pattern);
}
}