package com.cricketcraft.chisel.client.gui;
import codechicken.lib.gui.GuiDraw;
import com.cricketcraft.chisel.api.ICarvable;
import com.cricketcraft.chisel.api.rendering.TextureType;
import com.cricketcraft.chisel.block.BlockCarvable;
import com.cricketcraft.chisel.item.ItemCarvable;
import net.minecraft.block.Block;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import org.lwjgl.opengl.GL11;
import com.cricketcraft.chisel.api.IAdvancedChisel;
import com.cricketcraft.chisel.api.IChiselItem;
import com.cricketcraft.chisel.api.carving.IChiselMode;
import com.cricketcraft.chisel.inventory.ContainerChisel;
import com.cricketcraft.chisel.inventory.InventoryChiselSelection;
import com.cricketcraft.chisel.inventory.SlotChiselInput;
import com.cricketcraft.chisel.item.chisel.ChiselMode;
import com.cricketcraft.chisel.network.PacketHandler;
import com.cricketcraft.chisel.network.message.MessageChiselMode;
import com.cricketcraft.chisel.utils.General;
import com.cricketcraft.chisel.utils.GeneralClient;
import java.awt.*;
public class GuiChisel extends GuiContainer {
public EntityPlayer player;
public ContainerChisel container;
private IChiselMode currentMode;
public GuiChisel(InventoryPlayer iinventory, InventoryChiselSelection menu) {
super(new ContainerChisel(iinventory, menu));
player = iinventory.player;
xSize = 252;
ySize = 202;
container = (ContainerChisel) inventorySlots;
}
@Override
public void onGuiClosed() {
super.onGuiClosed();
inventorySlots.onContainerClosed(player);
}
@SuppressWarnings("unchecked")
@Override
public void initGui() {
super.initGui();
currentMode = General.getChiselMode(container.chisel);
if (showMode()) {
int x = this.width / 2 - 120;
int y = this.height / 2 - 6;
buttonList.add(new GuiButton(0, x, y, 53, 20, ""));
setButtonText();
}
}
@Override
public void updateScreen() {
super.updateScreen();
ItemStack held = player.getCurrentEquippedItem();
if (held == null || !(held.getItem() instanceof IChiselItem)) {
mc.displayGuiScreen(null);
}
boolean flag = false;
/**
for(int c = 0; c < container.inventory.activeVariations; c++) {
ItemStack stack = container.inventory.getStackInSlot(c);
if(stack.getItem() != null) {
if (stack.getItem() instanceof ItemCarvable) {
BlockCarvable block = (BlockCarvable) Block.getBlockFromItem(stack.getItem());
if (block.carverHelper.getVariation(stack.getItemDamage()).getType().equals(TextureType.CTMH)
|| block.carverHelper.getVariation(stack.getItemDamage()).getType().equals(TextureType.CTMX)
|| block.carverHelper.getVariation(stack.getItemDamage()).getType().equals(TextureType.CTMV)) {
flag = true;
}
} else if(stack.getItem() instanceof ICarvable) {
ICarvable block = (ICarvable) Block.getBlockFromItem(stack.getItem());
if (block.getManager(stack.getItemDamage()).getType().equals(TextureType.CTMH)
|| block.getManager(stack.getItemDamage()).getType().equals(TextureType.CTMX)
|| block.getManager(stack.getItemDamage()).getType().equals(TextureType.CTMV)) {
flag = true;
}
}
if (flag) {
GuiDraw.drawTexturedModalRect(container.getSlot(c).xDisplayPosition, container.getSlot(c).yDisplayPosition, 48, 202, 18, 18);
}
}
}
*/
}
private void setButtonText() {
((GuiButton) buttonList.get(0)).displayString = I18n.format(container.inventory.getInventoryName() + ".mode." + currentMode.name().toLowerCase());
}
private boolean showMode() {
if (container.chisel != null && container.chisel.getItem() instanceof IChiselItem) {
return ((IChiselItem) container.chisel.getItem()).hasModes(container.chisel);
}
return false;
}
@Override
protected void drawGuiContainerForegroundLayer(int j, int i) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
String line = I18n.format(this.container.inventory.getInventoryName() + ".title");
fontRendererObj.drawSplitString(line, 50 - fontRendererObj.getStringWidth(line) / 2, 60, 40, 0x404040);
if (showMode()) {
line = I18n.format(this.container.inventory.getInventoryName() + ".mode");
fontRendererObj.drawString(line, fontRendererObj.getStringWidth(line) / 2 + 6, 85, 0x404040);
}
}
@Override
protected void drawGuiContainerBackgroundLayer(float f, int mx, int my) {
drawDefaultBackground();
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
int i = width - xSize >> 1;
int j = height - ySize >> 1;
String texture = "chisel:textures/chisel2Gui.png";
GeneralClient.bind(texture);
drawTexturedModalRect(i, j, 0, 0, xSize, ySize);
int x = (width - xSize) / 2;
int y = (height - ySize) / 2;
Slot main = (Slot) container.inventorySlots.get(InventoryChiselSelection.normalSlots);
if (main.getStack() == null) {
GuiAutoChisel.drawSlotOverlay(this, x + 14, y + 14, main, 0, ySize, 60);
}
}
@Override
protected void actionPerformed(GuiButton button) {
if (button.id == 0) {
if (container.chisel != null && container.chisel.getItem() instanceof IAdvancedChisel) {
IAdvancedChisel item = (IAdvancedChisel) container.chisel.getItem();
currentMode = item.getNextMode(container.chisel, currentMode);
PacketHandler.INSTANCE.sendToServer(new MessageChiselMode(currentMode));
} else {
currentMode = ChiselMode.next(currentMode);
PacketHandler.INSTANCE.sendToServer(new MessageChiselMode(currentMode));
setButtonText();
}
}
super.actionPerformed(button);
}
@Override
protected void func_146977_a(Slot slot) {
if (slot instanceof SlotChiselInput) {
GL11.glPushMatrix();
GL11.glScalef(2, 2, 2);
slot.xDisplayPosition -= 16;
slot.yDisplayPosition -= 16;
super.func_146977_a(slot);
slot.xDisplayPosition += 16;
slot.yDisplayPosition += 16;
GL11.glPopMatrix();
} else {
super.func_146977_a(slot);
}
}
}