package crazypants.enderio.conduit.gui.item;
import net.minecraft.client.gui.GuiButton;
import com.enderio.core.client.gui.button.ToggleButton;
import crazypants.enderio.EnderIO;
import crazypants.enderio.conduit.gui.GuiExternalConnection;
import crazypants.enderio.conduit.item.IItemConduit;
import crazypants.enderio.conduit.item.filter.PowerItemFilter;
import crazypants.enderio.conduit.packet.PacketItemConduitFilter;
import crazypants.enderio.gui.IconEIO;
import crazypants.enderio.network.PacketHandler;
public class PowerItemFilterGui implements IItemFilterGui {
private static final int ID_STICKY = GuiExternalConnection.nextButtonId();
private static final int ID_MORE = GuiExternalConnection.nextButtonId();
private static final int ID_LEVEL = GuiExternalConnection.nextButtonId();
private final IItemConduit itemConduit;
private final GuiExternalConnection gui;
private final ToggleButton stickyB;
private final GuiButton modeB;
private final GuiButton levelB;
private final boolean isInput;
private final PowerItemFilter filter;
public PowerItemFilterGui(GuiExternalConnection gui, IItemConduit itemConduit, boolean isInput) {
this.gui = gui;
this.itemConduit = itemConduit;
this.isInput = isInput;
if(isInput) {
filter = (PowerItemFilter) itemConduit.getInputFilter(gui.getDir());
} else {
filter = (PowerItemFilter) itemConduit.getOutputFilter(gui.getDir());
}
int butLeft = 37;
int x = butLeft;
int y = 68;
x += 20;
stickyB = new ToggleButton(gui, ID_STICKY, x, y, IconEIO.FILTER_STICKY_OFF, IconEIO.FILTER_STICKY);
String[] lines = EnderIO.lang.localizeList("gui.conduit.item.stickyEnabled");
stickyB.setSelectedToolTip(lines);
stickyB.setUnselectedToolTip(EnderIO.lang.localize("gui.conduit.item.stickyDisbaled"));
stickyB.setPaintSelectedBorder(false);
modeB = new GuiButton(ID_MORE, 0, 0, 40, 20, "");
levelB = new GuiButton(ID_LEVEL, 0, 0, 40, 20, "");
}
@Override
public void mouseClicked(int x, int y, int par3) {
}
@Override
public void updateButtons() {
if(!isInput) {
stickyB.onGuiInit();
stickyB.setSelected(filter.isSticky());
}
int x0 = gui.getGuiLeft() + 80;
int y0 = gui.getGuiTop() + 65;
int x1 = x0 + 45;
modeB.xPosition = x0;
modeB.yPosition = y0;
levelB.xPosition = x1;
levelB.yPosition = y0;
switch(filter.getMode()) {
case LESS: modeB.displayString = "<"; break;
case LESS_EQUAL: modeB.displayString = "<="; break;
case EQUAL: modeB.displayString = "="; break;
case MORE_EQUAL: modeB.displayString = ">="; break;
case MORE: modeB.displayString = ">"; break;
default: modeB.displayString = "??"; break;
}
levelB.displayString = String.format("%d%%", filter.getLevel() * 100 / PowerItemFilter.MAX_LEVEL);
gui.addButton(modeB);
gui.addButton(levelB);
}
@Override
public void actionPerformed(GuiButton guiButton) {
if(guiButton.id == ID_STICKY) {
filter.setSticky(stickyB.isSelected());
sendFilterChange();
} else if(guiButton.id == ID_MORE) {
filter.setMode(filter.getMode().next());
sendFilterChange();
} else if(guiButton.id == ID_LEVEL) {
filter.setLevel((filter.getLevel() + 1) % (PowerItemFilter.MAX_LEVEL + 1));
sendFilterChange();
}
}
private void sendFilterChange() {
updateButtons();
PacketHandler.INSTANCE.sendToServer(new PacketItemConduitFilter(itemConduit, gui.getDir()));
}
@Override
public void deactivate() {
stickyB.detach();
gui.removeButton(modeB);
gui.removeButton(levelB);
}
@Override
public void renderCustomOptions(int top, float par1, int par2, int par3) {
// GL11.glColor3f(1, 1, 1);
// RenderUtil.bindTexture("enderio:textures/gui/itemFilter.png");
// gui.drawTexturedModalRect(gui.getGuiLeft() + 32, gui.getGuiTop() + 68, 0, 238, 18 * 5, 18);
// if(filter.isAdvanced()) {
// gui.drawTexturedModalRect(gui.getGuiLeft() + 32, gui.getGuiTop() + 86, 0, 238, 18 * 5, 18);
// }
}
}