package buildcraftAdditions.client.gui;
import java.util.List;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import buildcraftAdditions.client.gui.widgets.WidgetBase;
import buildcraftAdditions.client.gui.widgets.WidgetButtonText;
import buildcraftAdditions.client.gui.widgets.WidgetButtonUpdate;
import buildcraftAdditions.inventories.containers.ContainerPipeColoringTool;
import buildcraftAdditions.networking.MessagePipeColoringTool;
import buildcraftAdditions.networking.PacketHandler;
import buildcraftAdditions.reference.ItemLoader;
import buildcraftAdditions.utils.RenderUtils;
import buildcraftAdditions.utils.Utils;
/**
* Copyright (c) 2014-2015, AEnterprise
* http://buildcraftadditions.wordpress.com/
* Buildcraft Additions is distributed under the terms of GNU GPL v3.0
* Please check the contents of the license located in
* http://buildcraftadditions.wordpress.com/wiki/licensing-stuff/
*/
@SideOnly(Side.CLIENT)
public class GuiPipeColoringTool extends GuiBase {
public static final ResourceLocation TEXTURE = new ResourceLocation("bcadditions", "textures/gui/guiPipeColoringTool.png");
public boolean sortMode = false;
private int activeWidget;
public GuiPipeColoringTool(ItemStack stack) {
super(new ContainerPipeColoringTool());
activeWidget = stack.getItemDamage();
if (stack.hasTagCompound() && stack.getTagCompound().hasKey("SortMode"))
sortMode = stack.getTagCompound().getBoolean("SortMode");
}
@Override
public ResourceLocation texture() {
return TEXTURE;
}
@Override
public int getXSize() {
return 198;
}
@Override
public int getYSize() {
return 99;
}
@Override
public String getInventoryName() {
return "pipeColorTool";
}
@Override
public void initialize() {
for (int i = 0; i < 16; i++)
addWidget(new PaintWidget(i, guiLeft + 18 + i * 20 - (i > 7 ? 160 : 0), guiTop + (i > 7 ? 37 : 17), 176, 0, 20, 20, this));
((PaintWidget) widgets.get(activeWidget)).setActive(true);
addWidget(new WidgetButtonText(16, guiLeft + 90, guiTop + 63, 80, 15, this) {
@Override
public void addTooltip(int mouseX, int mouseY, List<String> tooltips, boolean shift) {
if (!((GuiPipeColoringTool) gui).sortMode) {
tooltips.add(Utils.localize("tooltip.colorNormalMode") + ":");
tooltips.add(Utils.localize("tooltip.colorNormalMode.info"));
} else {
tooltips.add(Utils.localize("tooltip.colorSortingMode") + ":");
tooltips.add(Utils.localize("tooltip.colorSortingMode.info"));
}
}
});
updateTextButton();
}
@Override
public void drawForegroundExtra(int x, int y) {
drawString(Utils.localize("gui.coloringMode") + ":", titleXoffset + 9, 67);
}
@Override
public void widgetActionPerformed(WidgetBase widget) {
if (widget.id >= 0 && widget.id < 16) {
((PaintWidget) widgets.get(activeWidget)).setActive(false);
activeWidget = widget.id;
} else if (widget.id == 16) {
sortMode = !sortMode;
updateTextButton();
}
PacketHandler.instance.sendToServer(new MessagePipeColoringTool((byte) widget.id, sortMode));
}
public void updateTextButton() {
if (sortMode)
((WidgetButtonText) widgets.get(16)).setText(Utils.localize("gui.colorSortingMode"));
else
((WidgetButtonText) widgets.get(16)).setText(Utils.localize("gui.colorNormalMode"));
}
public static class PaintWidget extends WidgetButtonUpdate {
private static final ResourceLocation ACTIVE = new ResourceLocation("bcadditions:textures/gui/Pieces/ButtonActive.png");
private static final ResourceLocation INACTIVE = new ResourceLocation("bcadditions:textures/gui/Pieces/ButtonInactive.png");
public PaintWidget(int id, int x, int y, int u, int v, int width, int height, GuiBase gui) {
super(id, x, y, u, v, width, height, gui);
}
@Override
public void render(int mouseX, int mouseY) {
RenderUtils.drawImage(active ? ACTIVE : INACTIVE, x, y, width, height);
gui.bindTexture(RenderUtils.MC_ITEM_SHEET);
gui.drawTexturedModelRectFromIcon(x + 2, y + 2, ItemLoader.pipeColoringTool.getIconFromDamage(id), 16, 16);
}
@Override
public void addTooltip(int mouseX, int mouseY, List<String> tooltips, boolean shift) {
tooltips.add(Utils.localize("gui.color." + Utils.COLOR_NAMES[id]));
}
}
}