package chbachman.armour.gui.element; import java.util.List; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import chbachman.api.configurability.ConfigurableField; import chbachman.api.configurability.FieldList; import chbachman.api.registry.UpgradeRegistry; import chbachman.api.upgrade.IUpgrade; import chbachman.armour.gui.crafting.ArmourGui; import chbachman.armour.network.ArmourPacket; import chbachman.armour.network.ArmourPacket.PacketTypes; import cofh.core.network.PacketHandler; import cofh.lib.gui.GuiBase; import cofh.lib.gui.GuiProps; import cofh.lib.gui.element.TabBase; import cofh.lib.gui.element.listbox.SliderHorizontal; public class TabConfig extends TabBase { public static ResourceLocation GRID_TEXTURE = new ResourceLocation(GuiProps.PATH_ELEMENTS + "Slot_Grid_Augment.png"); ArmourGui armourGui; ConfigurableField[] storages; public TabConfig(ArmourGui gui) { super(gui, 0); this.backgroundColor = 0x000FF; this.armourGui = gui; this.maxHeight = 110; this.maxWidth = 100; this.storages = new ConfigurableField[0]; } @Override public void drawForeground() { if (!this.isVisible()) { return; } this.drawTabIcon("IconUpgrade"); if (!this.isFullyOpened()) { return; } this.getFontRenderer().drawStringWithShadow("Upgrades", this.posXOffset() + 18, this.posY + 8, this.headerColor); } @Override public void addTooltip(List<String> list) { super.addTooltip(list); if (!this.isFullyOpened()) { list.add("Config"); } } @Override public void setFullyOpen() { super.setFullyOpen(); this.onUpgradeSelected(this.armourGui.selectedUpgrade); } public void onUpgradeSelected(IUpgrade upgrade) { if (!this.fullyOpen) { return; } if (upgrade == null) { return; } this.storages = UpgradeRegistry.getListenerForUpgrade(upgrade, FieldList.class).getFieldList(upgrade); if (storages == null) { storages = new ConfigurableField[0]; } this.elements.clear(); for (int i = 0; i < storages.length; i++) { ConfigurableField s = storages[i]; this.addElement(new SliderUpgrade(this.gui, s, this.armourGui.stack, 10, 30 + 20 * i, 60, 10, 100).setValue(s.get(this.armourGui.stack).getAmount())); this.addElement(new ElementText(this.gui, 10, 20 + 20 * i, 100, 10).setText(s.displayName)); } } private static class SliderUpgrade extends SliderHorizontal { final ConfigurableField field; public SliderUpgrade(GuiBase containerScreen, ConfigurableField field, ItemStack armour, int x, int y, int width, int height, int maxValue) { super(containerScreen, x, y, width, height, maxValue); this.field = field; } public SliderUpgrade(GuiBase containerScreen, ConfigurableField field, ItemStack armour, int x, int y, int width, int height, int maxValue, int minValue) { super(containerScreen, x, y, width, height, maxValue, minValue); this.field = field; } @Override public void onValueChanged(int value) { field.set(((ArmourGui) this.gui).container.getContainerStack(), value); PacketHandler.sendToServer(ArmourPacket.getPacket(PacketTypes.BUTTON).addString("ValueChanged").addString(field.getKey()).addInt(value)); } @Override public void drawForeground(int mouseX, int mouseY) { super.drawForeground(mouseX, mouseY); this.getFontRenderer().drawString(this._value + "%", this.posX + this.getWidth() + 5, this.posY, 0xFFFFFFFF); } } }