package buildcraft.core.lib.gui; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import buildcraft.api.statements.IStatementParameter; import buildcraft.api.statements.StatementParameterItemStack; /** * Created by asie on 1/24/15. */ public abstract class StatementParameterSlot extends AdvancedSlot { public int slot; public StatementSlot statementSlot; public StatementParameterSlot(GuiAdvancedInterface gui, int x, int y, int slot, StatementSlot iStatementSlot) { super(gui, x, y); this.slot = slot; this.statementSlot = iStatementSlot; statementSlot.parameters.add(this); } @Override public boolean isDefined() { return getParameter() != null; } @Override public String getDescription() { IStatementParameter parameter = getParameter(); // HACK: We're explicitly returning null so that the item stack description is used. if (parameter != null && !(parameter instanceof StatementParameterItemStack)) { return parameter.getDescription() != null ? parameter.getDescription() : ""; } else { return null; } } @Override public ItemStack getItemStack() { IStatementParameter parameter = getParameter(); if (parameter != null) { return parameter.getItemStack(); } else { return null; } } @Override public IIcon getIcon() { IStatementParameter parameter = getParameter(); if (parameter != null) { return parameter.getIcon(); } else { return null; } } public abstract IStatementParameter getParameter(); public boolean isAllowed() { return statementSlot.getStatement() != null && slot < statementSlot.getStatement().maxParameters(); } public boolean isRequired() { return statementSlot.getStatement() != null && slot < statementSlot.getStatement().minParameters(); } public abstract void setParameter(IStatementParameter param, boolean notifyServer); }