package advancedsystemsmanager.flow.elements; import advancedsystemsmanager.client.gui.GuiBase; import advancedsystemsmanager.helpers.CollisionHelper; import advancedsystemsmanager.registry.ThemeHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.ArrayList; import java.util.List; public class TextBoxNumberList { public static final int TEXT_BOX_SIZE_U = 49; public static final int TEXT_BOX_SIZE_V = 6; public static final int TEXT_BOX_SIZE_H = 12; public static final int TEXT_BOX_SRC_X = 113; public static final int TEXT_BOX_SRC_Y = 72; public List<TextBoxNumber> textBoxes; public TextBoxNumber selectedTextBox; public TextBoxNumberList() { textBoxes = new ArrayList<TextBoxNumber>(); } @SideOnly(Side.CLIENT) public void draw(GuiBase gui, int mX, int mY) { for (TextBoxNumber textBox : textBoxes) { if (textBox.isVisible()) { gui.drawTextBox(textBox.getX(), textBox.getY(), textBox.getWidth(), TEXT_BOX_SIZE_H, TEXT_BOX_SRC_X, TEXT_BOX_SRC_Y, TEXT_BOX_SIZE_U, TEXT_BOX_SIZE_V, (textBox.equals(selectedTextBox)? ThemeHandler.theme.menus.textBoxes.selected : ThemeHandler.theme.menus.textBoxes.background).getColour(), ThemeHandler.theme.menus.textBoxes.border.getColour()); String str = String.valueOf(textBox.getNumber()); gui.drawCenteredString(str, textBox.getX(), textBox.getY() + textBox.getTextY(), textBox.getTextSize(), textBox.getWidth(), 0xFFFFFF); } } } public void onClick(int mX, int mY, int button) { for (TextBoxNumber textBox : textBoxes) { if (textBox.isVisible() && CollisionHelper.inBounds(textBox.getX(), textBox.getY(), textBox.getWidth(), TEXT_BOX_SIZE_H, mX, mY)) { if (textBox.equals(selectedTextBox)) { if (button == 0) { selectedTextBox = null; } else { textBox.setNumber(0); selectedTextBox.onUpdate(); } } else { selectedTextBox = textBox; } break; } } } @SideOnly(Side.CLIENT) public boolean onKeyStroke(GuiBase gui, char c, int k) { if (selectedTextBox != null && selectedTextBox.isVisible()) { if (Character.isDigit(c)) { int number = Integer.parseInt(String.valueOf(c)); if (Math.abs(selectedTextBox.getNumber()) < Math.pow(10, selectedTextBox.getLength() - 1)) { selectedTextBox.setNumber((Math.abs(selectedTextBox.getNumber()) * 10 + number) * (selectedTextBox.getNumber() < 0 ? -1 : 1)); selectedTextBox.onUpdate(); } return true; } else if (c == '-' && selectedTextBox.allowNegative()) { selectedTextBox.setNumber(selectedTextBox.getNumber() * -1); selectedTextBox.onUpdate(); } else if (k == 14) { selectedTextBox.setNumber(selectedTextBox.getNumber() / 10); selectedTextBox.onUpdate(); return true; } else if (k == 15) { for (int i = 0; i < textBoxes.size(); i++) { TextBoxNumber textBox = textBoxes.get(i); if (textBox.equals(selectedTextBox)) { int nextId = (i + 1) % textBoxes.size(); selectedTextBox = textBoxes.get(nextId); break; } } return true; } } return false; } public void addTextBox(TextBoxNumber textBox) { textBoxes.add(textBox); } public TextBoxNumber getTextBox(int id) { return textBoxes.get(id); } }