package advancedsystemsmanager.flow.menus; import advancedsystemsmanager.flow.FlowComponent; import advancedsystemsmanager.flow.elements.TextBoxNumberList; import advancedsystemsmanager.client.gui.GuiManager; import advancedsystemsmanager.network.ASMPacket; import advancedsystemsmanager.registry.ConnectionOption; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; import java.util.EnumSet; public abstract class MenuTriggered extends Menu { public static final String NBT_DELAY = "Delay"; public static final String NBT_COUNTDOWN = "Counter"; public TextBoxNumberList textBoxes = new TextBoxNumberList(); public int counter; public MenuTriggered(FlowComponent parent) { super(parent); } @SideOnly(Side.CLIENT) public void draw(GuiManager gui, int mX, int mY) { this.textBoxes.draw(gui, mX, mY); } public void onClick(int mX, int mY, int button) { this.textBoxes.onClick(mX, mY, button); } @SideOnly(Side.CLIENT) public boolean onKeyStroke(GuiManager gui, char c, int k) { return this.textBoxes.onKeyStroke(gui, c, k); } public void copyFrom(Menu menu) { this.setDelay(((MenuTriggered)menu).getDelay()); } public void writeToNBT(NBTTagCompound nbtTagCompound, boolean pickup) { nbtTagCompound.setInteger(NBT_DELAY, this.getDelay()); nbtTagCompound.setInteger(NBT_COUNTDOWN, this.counter); } public void writeData(ASMPacket dw) { int val = this.getDelay(); if (val < getMin()) { val = getMin(); } dw.writeVarIntToBuffer(val); } public abstract int getDelay(); public abstract void setDelay(int val); public int getMin() { return 1; } public void readData(ASMPacket dr) { this.setDelay(dr.readVarIntFromBuffer()); } public void readFromNBT(NBTTagCompound nbtTagCompound, boolean pickup) { this.setDelay(nbtTagCompound.getInteger(NBT_DELAY)); counter = nbtTagCompound.getInteger(NBT_COUNTDOWN); } public void setCountdown() { if (isVisible()) { counter = 0; getParent().getManager().addQuickTrigger(getParent()); } } public void tick() { if (isVisible() && ++counter >= getDelay()) { act(); } } public void act() { getParent().getManager().activateTrigger(getParent(), getConnectionSets()); resetCounter(); } public abstract EnumSet<ConnectionOption> getConnectionSets(); public void resetCounter() { counter = 0; } public boolean remove() { return false; } }