/**
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
* http://www.mod-buildcraft.com
* <p/>
* BuildCraft is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package buildcraft.builders.gui;
import org.lwjgl.opengl.GL11;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ResourceLocation;
import buildcraft.api.library.LibraryAPI;
import buildcraft.builders.TileBlueprintLibrary;
import buildcraft.core.DefaultProps;
import buildcraft.core.blueprints.LibraryId;
import buildcraft.core.lib.gui.GuiBuildCraft;
import buildcraft.core.lib.utils.StringUtils;
public class GuiBlueprintLibrary extends GuiBuildCraft {
private static final ResourceLocation TEXTURE = new ResourceLocation("buildcraftbuilders:textures/gui/library_rw.png");
private GuiButton deleteButton;
private TileBlueprintLibrary library;
public GuiBlueprintLibrary(EntityPlayer player, TileBlueprintLibrary library) {
super(new ContainerBlueprintLibrary(player, library), library, TEXTURE);
xSize = 244;
ySize = 220;
this.library = library;
}
@SuppressWarnings("unchecked")
@Override
public void initGui() {
super.initGui();
deleteButton = new GuiButton(2, guiLeft + 174, guiTop + 109, 25, 20, StringUtils.localize("gui.del"));
buttonList.add(deleteButton);
library.refresh();
checkDelete();
}
private ContainerBlueprintLibrary getLibraryContainer() {
return (ContainerBlueprintLibrary) getContainer();
}
@Override
protected void drawGuiContainerForegroundLayer(int par1, int par2) {
String title = StringUtils.localize("tile.libraryBlock.name");
fontRendererObj.drawString(title, getCenteredOffset(title), 6, 0x404040);
int off = getLibraryContainer().scrollbarWidget.getPosition();
for (int i = off; i < (off + 12); i++) {
if (i >= library.entries.size()) {
break;
}
LibraryId bpt = library.entries.get(i);
String name = bpt.name;
if (name.length() > DefaultProps.MAX_NAME_SIZE) {
name = name.substring(0, DefaultProps.MAX_NAME_SIZE);
}
if (i == library.selected) {
int l1 = 8;
int i2 = 22;
drawGradientRect(l1, i2 + 9 * (i - off), l1 + 146, i2 + 9 * (i - off + 1), 0x80ffffff, 0x80ffffff);
}
while (fontRendererObj.getStringWidth(name) > (160 - 9)) {
name = name.substring(0, name.length() - 1);
}
fontRendererObj.drawString(name, 9, 23 + 9 * (i - off), LibraryAPI.getHandlerFor(bpt.extension).getTextColor());
}
}
@Override
protected void drawGuiContainerBackgroundLayer(float f, int x, int y) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.bindTexture(TEXTURE);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
getLibraryContainer().scrollbarWidget.hidden = library.entries.size() <= 12;
getLibraryContainer().scrollbarWidget.setLength(Math.max(0, library.entries.size() - 12));
drawWidgets(x, y);
int inP = library.progressIn * 22 / 100;
int outP = library.progressOut * 22 / 100;
drawTexturedModalRect(guiLeft + 194 + 22 - inP, guiTop + 57, 234 + 22 - inP, 240, inP, 16);
drawTexturedModalRect(guiLeft + 194, guiTop + 79, 234, 224, outP, 16);
}
@Override
protected void actionPerformed(GuiButton button) {
if (deleteButton != null && button == deleteButton) {
library.deleteSelectedBpt();
}
}
@Override
protected void mouseClicked(int i, int j, int k) {
super.mouseClicked(i, j, k);
int x = i - guiLeft;
int y = j - guiTop;
if (x >= 8 && x <= 161) {
int ySlot = (y - 22) / 9 + getLibraryContainer().scrollbarWidget.getPosition();
if (ySlot > -1 && ySlot < library.entries.size()) {
library.selectBlueprint(ySlot);
}
}
checkDelete();
}
protected void checkDelete() {
if (library.selected != -1) {
deleteButton.enabled = true;
} else {
deleteButton.enabled = false;
}
}
}