package mcjty.rftools.blocks.dimletconstruction;
import mcjty.lib.container.GenericGuiContainer;
import mcjty.lib.gui.Window;
import mcjty.lib.gui.events.ButtonEvent;
import mcjty.lib.gui.layout.PositionalLayout;
import mcjty.lib.gui.widgets.Button;
import mcjty.lib.gui.widgets.*;
import mcjty.lib.gui.widgets.Panel;
import mcjty.lib.network.Argument;
import mcjty.rftools.Achievements;
import mcjty.rftools.RFTools;
import mcjty.rftools.blocks.dimlets.DimletSetup;
import mcjty.rftools.items.dimlets.DimletKey;
import mcjty.rftools.items.dimlets.KnownDimletConfiguration;
import mcjty.rftools.network.RFToolsMessages;
import net.minecraft.client.Minecraft;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.util.ForgeDirection;
import java.awt.*;
public class GuiDimletWorkbench extends GenericGuiContainer<DimletWorkbenchTileEntity> {
public static final int WORKBENCH_WIDTH = 200;
public static final int WORKBENCH_HEIGHT = 224;
private EnergyBar energyBar;
private Button extractButton;
private ToggleButton autoExtract;
private ImageLabel progressIcon;
private static final ResourceLocation iconLocation = new ResourceLocation(RFTools.MODID, "textures/gui/dimletworkbench.png");
private static final ResourceLocation iconGuiElements = new ResourceLocation(RFTools.MODID, "textures/gui/guielements.png");
public GuiDimletWorkbench(DimletWorkbenchTileEntity dimletWorkbenchTileEntity, DimletWorkbenchContainer container) {
super(RFTools.instance, RFToolsMessages.INSTANCE, dimletWorkbenchTileEntity, container, RFTools.GUI_MANUAL_DIMENSION, "create");
xSize = WORKBENCH_WIDTH;
ySize = WORKBENCH_HEIGHT;
}
@Override
public void initGui() {
super.initGui();
int maxEnergyStored = tileEntity.getMaxEnergyStored(ForgeDirection.DOWN);
energyBar = new EnergyBar(mc, this).setVertical().setMaxValue(maxEnergyStored).setLayoutHint(new PositionalLayout.PositionalHint(8, 142, 8, 54)).setShowText(false);
energyBar.setValue(tileEntity.getCurrentRF());
progressIcon = new ImageLabel(mc, this).setImage(iconGuiElements, 4 * 16, 16);
progressIcon.setLayoutHint(new PositionalLayout.PositionalHint(135, 6, 16, 16));
extractButton = new Button(mc, this).setText("Extract").setLayoutHint(new PositionalLayout.PositionalHint(36, 7, 55, 14)).addButtonEvent(
new ButtonEvent() {
@Override
public void buttonClicked(Widget parent) {
extractDimlet();
}
}
).setTooltips("Deconstruct a dimlet into its parts");
autoExtract = new ToggleButton(mc, this).setText("Auto").setLayoutHint(new PositionalLayout.PositionalHint(94, 7, 42, 14)).addButtonEvent(new ButtonEvent() {
@Override
public void buttonClicked(Widget parent) {
setAutoExtract();
}
}).setTooltips("Automatically extract").setCheckMarker(true);
Widget toplevel = new Panel(mc, this).setBackground(iconLocation).setLayout(new PositionalLayout()).addChild(extractButton).addChild(energyBar).addChild(progressIcon).addChild(autoExtract);
toplevel.setBounds(new Rectangle(guiLeft, guiTop, xSize, ySize));
window = new Window(this, toplevel);
}
private void setAutoExtract() {
sendServerCommand(RFToolsMessages.INSTANCE, DimletWorkbenchTileEntity.CMD_SETAUTOEXTRACT, new Argument("auto", autoExtract.isPressed()));
}
private void extractDimlet() {
Slot slot = inventorySlots.getSlot(DimletWorkbenchContainer.SLOT_INPUT);
if (slot.getStack() != null) {
ItemStack itemStack = slot.getStack();
if (DimletSetup.knownDimlet.equals(itemStack.getItem())) {
DimletKey key = KnownDimletConfiguration.getDimletKey(itemStack, Minecraft.getMinecraft().theWorld);
if (!KnownDimletConfiguration.craftableDimlets.contains(key)) {
Achievements.trigger(Minecraft.getMinecraft().thePlayer, Achievements.smallBits);
sendServerCommand(RFToolsMessages.INSTANCE, DimletWorkbenchTileEntity.CMD_STARTEXTRACT);
}
}
}
}
private void enableButtons() {
boolean enabled = false;
Slot slot = inventorySlots.getSlot(DimletWorkbenchContainer.SLOT_INPUT);
if (slot.getStack() != null) {
ItemStack itemStack = slot.getStack();
if (DimletSetup.knownDimlet.equals(itemStack.getItem())) {
DimletKey key = KnownDimletConfiguration.getDimletKey(itemStack, Minecraft.getMinecraft().theWorld);
if (!KnownDimletConfiguration.craftableDimlets.contains(key)) {
enabled = true;
}
}
}
extractButton.setEnabled(enabled);
}
@Override
protected void drawGuiContainerBackgroundLayer(float v, int i, int i2) {
enableButtons();
int extracting = tileEntity.getExtracting();
if (extracting == 0) {
progressIcon.setImage(iconGuiElements, 4 * 16, 16);
} else {
progressIcon.setImage(iconGuiElements, (extracting % 4) * 16, 16);
}
drawWindow();
energyBar.setValue(tileEntity.getCurrentRF());
tileEntity.requestRfFromServer(RFToolsMessages.INSTANCE);
tileEntity.requestExtractingFromServer();
}
}