package buildcraft.robotics;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import net.minecraft.item.ItemStack;
import buildcraft.BuildCraftRobotics;
import buildcraft.api.boards.RedstoneBoardNBT;
import buildcraft.api.boards.RedstoneBoardRegistry;
import buildcraft.api.recipes.IProgrammingRecipe;
import buildcraft.core.lib.utils.NBTUtils;
public class BoardProgrammingRecipe implements IProgrammingRecipe {
private class BoardSorter implements Comparator<ItemStack> {
private BoardProgrammingRecipe recipe;
public BoardSorter(BoardProgrammingRecipe recipe) {
this.recipe = recipe;
}
@Override
public int compare(ItemStack o1, ItemStack o2) {
int i = (recipe.getEnergyCost(o1) - recipe.getEnergyCost(o2)) * 200;
return i != 0 ? i : ItemRedstoneBoard.getBoardNBT(o1).getID().compareTo(ItemRedstoneBoard.getBoardNBT(o2).getID());
}
}
@Override
public String getId() {
return "buildcraft:redstone_board";
}
@Override
public List<ItemStack> getOptions(int width, int height) {
List<ItemStack> options = new ArrayList<ItemStack>(width * height);
for (RedstoneBoardNBT<?> nbt : RedstoneBoardRegistry.instance.getAllBoardNBTs()) {
ItemStack stack = new ItemStack(BuildCraftRobotics.redstoneBoard);
nbt.createBoard(NBTUtils.getItemData(stack));
options.add(stack);
}
Collections.sort(options, new BoardSorter(this));
return options;
}
@Override
public int getEnergyCost(ItemStack option) {
return RedstoneBoardRegistry.instance.getEnergyCost(
RedstoneBoardRegistry.instance.getRedstoneBoard(option.getTagCompound().getString("id"))
);
}
@Override
public boolean canCraft(ItemStack input) {
return input.getItem() instanceof ItemRedstoneBoard;
}
@Override
public ItemStack craft(ItemStack input, ItemStack option) {
return option.copy();
}
}