More efficient pattern getter

This commit is contained in:
Raoul Van den Berge
2016-04-30 13:38:15 +02:00
parent f46b080780
commit 830d849c97

View File

@@ -59,6 +59,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
private List<TileMachine> machines = new ArrayList<TileMachine>(); private List<TileMachine> machines = new ArrayList<TileMachine>();
private List<ClientSideMachine> clientSideMachines = new ArrayList<ClientSideMachine>(); private List<ClientSideMachine> clientSideMachines = new ArrayList<ClientSideMachine>();
private List<CraftingPattern> patterns = new ArrayList<CraftingPattern>();
private List<CraftingTask> craftingTasks = new ArrayList<CraftingTask>(); private List<CraftingTask> craftingTasks = new ArrayList<CraftingTask>();
private List<CraftingTask> craftingTasksToAdd = new ArrayList<CraftingTask>(); private List<CraftingTask> craftingTasksToAdd = new ArrayList<CraftingTask>();
@@ -110,8 +111,8 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
int range = 0; int range = 0;
int usage = 0; int usage = 0;
List<IStorage> newStorages = new ArrayList<IStorage>();
storages.clear(); List<CraftingPattern> newPatterns = new ArrayList<CraftingPattern>();
for (TileMachine machine : newMachines) { for (TileMachine machine : newMachines) {
if (machine instanceof TileWirelessTransmitter) { if (machine instanceof TileWirelessTransmitter) {
@@ -119,7 +120,19 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
} }
if (machine instanceof IStorageProvider) { if (machine instanceof IStorageProvider) {
((IStorageProvider) machine).provide(storages); ((IStorageProvider) machine).provide(newStorages);
}
if (machine instanceof TileCrafter) {
TileCrafter crafter = (TileCrafter) machine;
for (int i = 0; i < TileCrafter.PATTERN_SLOTS; ++i) {
if (crafter.getStackInSlot(i) != null) {
ItemStack pattern = crafter.getStackInSlot(i);
newPatterns.add(new CraftingPattern(ItemPattern.getResult(pattern), ItemPattern.getIngredients(pattern), 20 - (crafter.getUpgrades() * 4)));
}
}
} }
usage += machine.getEnergyUsage(); usage += machine.getEnergyUsage();
@@ -140,6 +153,8 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
wirelessGridRange = range; wirelessGridRange = range;
energyUsage = usage; energyUsage = usage;
machines = newMachines; machines = newMachines;
storages = newStorages;
patterns = newPatterns;
Collections.sort(storages, new Comparator<IStorage>() { Collections.sort(storages, new Comparator<IStorage>() {
@Override @Override
@@ -244,26 +259,6 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
} }
public List<CraftingPattern> getPatterns() { public List<CraftingPattern> getPatterns() {
List<CraftingPattern> patterns = new ArrayList<CraftingPattern>();
Iterator<TileMachine> it = machines.iterator();
while (it.hasNext()) {
TileMachine machine = it.next();
if (machine instanceof TileCrafter) {
TileCrafter crafter = (TileCrafter) machine;
for (int i = 0; i < TileCrafter.PATTERN_SLOTS; ++i) {
if (crafter.getStackInSlot(i) != null) {
ItemStack pattern = crafter.getStackInSlot(i);
patterns.add(new CraftingPattern(ItemPattern.getResult(pattern), ItemPattern.getIngredients(pattern), 20 - (crafter.getUpgrades() * 4)));
}
}
}
}
return patterns; return patterns;
} }