buildcraft.builders.gui.GuiArchitectOld.java Source code

Java tutorial

Introduction

Here is the source code for buildcraft.builders.gui.GuiArchitectOld.java

Source

/** 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 java.io.IOException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;
import io.netty.buffer.ByteBuf;

import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ResourceLocation;

import buildcraft.BuildCraftCore;
import buildcraft.builders.TileArchitect;
import buildcraft.core.DefaultProps;
import buildcraft.core.blueprints.BlueprintReadConfiguration;
import buildcraft.core.lib.gui.GuiBuildCraft;
import buildcraft.core.lib.gui.tooltips.ToolTipLine;
import buildcraft.core.lib.network.command.CommandWriter;
import buildcraft.core.lib.network.command.PacketCommand;
import buildcraft.core.lib.utils.NetworkUtils;
import buildcraft.lib.gui.button.GuiBetterButton;
import buildcraft.lib.gui.elem.ToolTip;
import buildcraft.lib.misc.LocaleUtil;

public class GuiArchitectOld extends GuiBuildCraft {

    private static final int TEXT_X = 90;
    private static final int TEXT_Y = 62;
    private static final int TEXT_WIDTH = 156;
    private static final int TEXT_HEIGHT = 12;

    private static final ResourceLocation TEXTURE = new ResourceLocation(
            "buildcraftbuilders:textures/gui/architect_gui.png");

    private TileArchitect architect;

    private GuiBetterButton optionRotate;
    private GuiBetterButton optionExcavate;
    private GuiBetterButton optionAllowCreative;

    private GuiTextField textField;

    public GuiArchitectOld(EntityPlayer player, TileArchitect architect) {
        super(new ContainerArchitect(player, architect), architect, TEXTURE);
        this.architect = architect;
        xSize = 256;
        ySize = 166;
    }

    @SuppressWarnings("unchecked")
    @Override
    public void initGui() {
        super.initGui();

        Keyboard.enableRepeatEvents(true);

        optionRotate = new GuiBetterButton(0, guiLeft + 5, guiTop + 30, 79, "");
        buttonList.add(optionRotate);

        optionExcavate = new GuiBetterButton(1, guiLeft + 5, guiTop + 55, 79, "");
        buttonList.add(optionExcavate);

        optionAllowCreative = new GuiBetterButton(2, guiLeft + 5, guiTop + 80, 79, "");
        optionAllowCreative.setToolTip(
                new ToolTip(500, new ToolTipLine(LocaleUtil.localize("tile.architect.tooltip.allowCreative.1")),
                        new ToolTipLine(LocaleUtil.localize("tile.architect.tooltip.allowCreative.2"))));
        buttonList.add(optionAllowCreative);

        textField = new GuiTextField(0, this.fontRendererObj, TEXT_X, TEXT_Y, TEXT_WIDTH, TEXT_HEIGHT);
        textField.setMaxStringLength(DefaultProps.MAX_NAME_SIZE);
        textField.setText(architect.name);
        textField.setFocused(true);

        updateButtons();
    }

    @Override
    public void onGuiClosed() {
        Keyboard.enableRepeatEvents(false);
    }

    @Override
    protected void actionPerformed(GuiButton button) {
        BlueprintReadConfiguration conf = architect.readConfiguration;

        if (button == optionRotate) {
            conf.rotate = !conf.rotate;
        } else if (button == optionExcavate) {
            conf.excavate = !conf.excavate;
        } else if (button == optionAllowCreative) {
            conf.allowCreative = !conf.allowCreative;
        }

        architect.rpcSetConfiguration(conf);

        updateButtons();
    }

    private void updateButtons() {
        BlueprintReadConfiguration conf = architect.readConfiguration;

        if (conf.rotate) {
            optionRotate.displayString = LocaleUtil.localize("tile.architect.rotate");
        } else {
            optionRotate.displayString = LocaleUtil.localize("tile.architect.norotate");
        }

        if (conf.excavate) {
            optionExcavate.displayString = LocaleUtil.localize("tile.architect.excavate");
        } else {
            optionExcavate.displayString = LocaleUtil.localize("tile.architect.noexcavate");
        }

        if (conf.allowCreative) {
            optionAllowCreative.displayString = LocaleUtil.localize("tile.architect.allowCreative");
        } else {
            optionAllowCreative.displayString = LocaleUtil.localize("tile.architect.noallowCreative");
        }
    }

    @Override
    protected void drawGuiContainerForegroundLayer(int par1, int par2) {
        String title = LocaleUtil.localize("tile.architectBlock.name");
        fontRendererObj.drawString(title, getCenteredOffset(title), 6, 0x404040);

        /* if (editMode && ((new Date()).getTime() / 100) % 8 >= 4) { fontRendererObj.drawString(architect.name + "|",
         * 131, 62, 0x404040); } else { fontRendererObj.drawString(architect.name, 131, 62, 0x404040); } */

        textField.drawTextBox();
    }

    @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);
        int i1 = ((ContainerArchitect) container).computingTime;
        drawTexturedModalRect(guiLeft + 159, guiTop + 34, 0, 166, i1 + 1, 16);
    }

    @Override
    protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
        super.mouseClicked(mouseX, mouseY, mouseButton);

        textField.mouseClicked(mouseX - guiLeft, mouseY - guiTop, mouseButton);
    }

    @Override
    protected void keyTyped(char c, int i) throws IOException {
        if (textField.isFocused()) {
            if (c == 13 || c == 27) {
                textField.setFocused(false);
            } else {
                textField.textboxKeyTyped(c, i);
                final String text = textField.getText();
                BuildCraftCore.instance.sendToServer(new PacketCommand(architect, "setName", new CommandWriter() {
                    @Override
                    public void write(ByteBuf data) {
                        NetworkUtils.writeUTF(data, text);
                    }
                }));
            }
        } else {
            super.keyTyped(c, i);
        }
    }
}