package advancedsystemsmanager.flow.menus; import advancedsystemsmanager.flow.FlowComponent; import advancedsystemsmanager.flow.elements.RadioButton; import advancedsystemsmanager.flow.elements.RadioButtonList; import advancedsystemsmanager.flow.elements.TextBoxNumber; import advancedsystemsmanager.client.gui.GuiManager; import advancedsystemsmanager.network.ASMPacket; import advancedsystemsmanager.reference.Names; import advancedsystemsmanager.registry.ConnectionOption; import advancedsystemsmanager.registry.ConnectionSet; import net.minecraft.nbt.NBTTagCompound; import java.util.EnumSet; import java.util.List; public class MenuDelayed extends MenuTriggered { public static final int TEXT_BOX_X = 15; public static final int TEXT_BOX_Y = 35; public static final int MENU_WIDTH = 120; public static final int TEXT_MARGIN_X = 5; public static final int TEXT_Y = 10; public static final EnumSet<ConnectionOption> delayed = EnumSet.of(ConnectionOption.DELAY_OUTPUT); public static final String NBT_RESTART = "Restart"; // public static final int TEXT_Y2 = 15; // public static final int TEXT_SECOND_X = 60; // public static final int TEXT_SECOND_Y = 38; public TextBoxNumber intervalTicks; public TextBoxNumber intervalSeconds; public RadioButtonList buttonList; public MenuDelayed(FlowComponent parent) { super(parent); this.textBoxes.addTextBox(this.intervalSeconds = new TextBoxNumber(getParent(), TEXT_BOX_X, TEXT_BOX_Y, 3, true)); this.textBoxes.addTextBox(this.intervalTicks = new TextBoxNumber(getParent(), TEXT_BOX_X + intervalSeconds.getWidth() + TEXT_MARGIN_X, TEXT_BOX_Y, 2, true) { @Override public int getMaxNumber() { return 19; } }); this.buttonList = new RadioButtonList(getParent()); buttonList.add(new RadioButton(TEXT_MARGIN_X, TEXT_BOX_Y + 20, Names.DELAY_RESTART)); buttonList.add(new RadioButton(TEXT_MARGIN_X * 5 + intervalSeconds.getWidth(), TEXT_BOX_Y + 20, Names.DELAY_IGNORE)); setDelay(5); buttonList.setSelectedOption(0); } @Override public void draw(GuiManager gui, int mX, int mY) { gui.drawSplitString(Names.DELAY_INFO, TEXT_MARGIN_X, TEXT_Y, MENU_WIDTH - TEXT_MARGIN_X, 0.7F, 4210752); buttonList.draw(gui, mX, mY); //gui.drawString(Localization.SECOND.toString(), TEXT_SECOND_X, TEXT_SECOND_Y, 0.7F, 4210752); super.draw(gui, mX, mY); } @Override public void onClick(int mX, int mY, int button) { super.onClick(mX, mY, button); buttonList.onClick(mX, mY, button); } @Override public void writeData(ASMPacket dw) { super.writeData(dw); dw.writeBoolean(buttonList.getSelectedOption() == 0); } @Override public void readData(ASMPacket dr) { super.readData(dr); buttonList.setSelectedOption(dr.readBoolean() ? 0 : 1); } @Override public void writeToNBT(NBTTagCompound nbtTagCompound, boolean pickup) { super.writeToNBT(nbtTagCompound, pickup); nbtTagCompound.setBoolean(NBT_RESTART, buttonList.getSelectedOption() == 0); } @Override public int getDelay() { return intervalTicks.getNumber() + intervalSeconds.getNumber() * 20; } @Override public void setDelay(int val) { intervalTicks.setNumber(val % 20); intervalSeconds.setNumber(val / 20); } @Override public void setCountdown() { int selected = buttonList.getSelectedOption(); if (getDelay() >= 5 && (selected == 0 || (selected == 1 && counter == -1))) { super.setCountdown(); } } @Override public void resetCounter() { counter = -1; } @Override public EnumSet<ConnectionOption> getConnectionSets() { return delayed; } @Override public boolean remove() { return counter < 0; } @Override public String getName() { return Names.DELAY_TRIGGER; } @Override public void readFromNBT(NBTTagCompound nbtTagCompound, boolean pickup) { if (this.isVisible() && this.counter >= 0) getParent().getManager().addQuickTrigger(getParent()); buttonList.setSelectedOption(nbtTagCompound.getBoolean(NBT_RESTART) ? 0 : 1); } @Override public void addErrors(List<String> errors) { if (getDelay() < 5 && isVisible()) { errors.add(Names.DELAY_ERROR); } } @Override public boolean isVisible() { return getParent().getConnectionSet() == ConnectionSet.DELAYED; } }