package advancedsystemsmanager.flow.menus; import advancedsystemsmanager.flow.FlowComponent; import advancedsystemsmanager.flow.elements.RadioButton; import advancedsystemsmanager.flow.elements.RadioButtonList; import advancedsystemsmanager.client.gui.GuiManager; import advancedsystemsmanager.reference.Names; import advancedsystemsmanager.registry.CommandRegistry; import advancedsystemsmanager.registry.ConnectionSet; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; import java.util.List; public class MenuResult extends Menu { public static final int RADIO_X = 5; public static final int RADIO_Y = 5; public static final int RADIO_MARGIN = 13; public static final String NBT_SELECTED = "SelectedOption"; public ConnectionSet[] sets; public RadioButtonList radioButtons; public MenuResult(FlowComponent parent) { super(parent); sets = parent.getType().getSets(); radioButtons = new RadioButtonList(getParent()) { @Override public void setSelectedOption(int selectedOption) { super.setSelectedOption(selectedOption); getParent().setConnectionSet(sets[radioButtons.getSelectedOption()]); if (getParent().getType() == CommandRegistry.VARIABLE) { ((MenuVariable)getParent().menus.get(0)).variables.updateSearch(); } else if (getParent().getType() == CommandRegistry.NODE) { if (getParent().getParent() != null) { boolean inputNode = selectedOption == 1; List<FlowComponent> childrenNodes = inputNode ? getParent().getParent().childrenInputNodes : getParent().getParent().childrenOutputNodes; int index = childrenNodes.indexOf(getParent()); if (index != -1) { getParent().getParent().removeConnection(index + (inputNode ? 0 : 5)); } getParent().setParent(getParent().getParent()); } } } }; for (int i = 0; i < sets.length; i++) { radioButtons.add(new RadioButton(RADIO_X, RADIO_Y + i * RADIO_MARGIN, sets[i].getName())); } for (int i = 0; i < sets.length; i++) { ConnectionSet set = sets[i]; if (parent.getConnectionSet().equals(set)) { radioButtons.setSelectedOption(i); break; } } } @Override public String getName() { return Names.CONNECTIONS_MENU; } @SideOnly(Side.CLIENT) @Override public void draw(GuiManager gui, int mX, int mY) { radioButtons.draw(gui, mX, mY); } @SideOnly(Side.CLIENT) @Override public void drawMouseOver(GuiManager gui, int mX, int mY) { } @Override public void onClick(int mX, int mY, int button) { radioButtons.onClick(mX, mY, button); } @Override public void copyFrom(Menu menu) { radioButtons.setSelectedOption(((MenuResult)menu).radioButtons.getSelectedOption()); } @Override public void readFromNBT(NBTTagCompound nbtTagCompound, boolean pickup) { radioButtons.setSelectedOption(nbtTagCompound.getByte(NBT_SELECTED)); } @Override public void writeToNBT(NBTTagCompound nbtTagCompound, boolean pickup) { nbtTagCompound.setByte(NBT_SELECTED, (byte)radioButtons.getSelectedOption()); } @Override public boolean isVisible() { return sets.length > 1; } }