Package pneumaticCraft.client.gui

Source Code of pneumaticCraft.client.gui.GuiPressureChamberInterface

package pneumaticCraft.client.gui;

import java.awt.Point;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.List;

import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.client.resources.I18n;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import pneumaticCraft.client.gui.widget.GuiAnimatedStat;
import pneumaticCraft.client.gui.widget.IGuiWidget;
import pneumaticCraft.common.block.Blockss;
import pneumaticCraft.common.inventory.ContainerPressureChamberInterface;
import pneumaticCraft.common.network.NetworkHandler;
import pneumaticCraft.common.network.PacketUpdateTextfield;
import pneumaticCraft.common.tileentity.TileEntityPressureChamberInterface;
import pneumaticCraft.lib.Textures;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class GuiPressureChamberInterface extends GuiPneumaticContainerBase<TileEntityPressureChamberInterface>{
    private static final ResourceLocation guiTextureCreativeFilter = new ResourceLocation(Textures.GUI_PRESSURE_CHAMBER_INTERFACE_CREATIVE_FILTER_LOCATION);

    private GuiAnimatedStat statusStat;
    private GuiAnimatedStat filterStat;

    private GuiButtonSpecial filterButton;
    private GuiButton creativeTabButton;
    private GuiTextField nameFilterField;

    public GuiPressureChamberInterface(InventoryPlayer player, TileEntityPressureChamberInterface te){

        super(new ContainerPressureChamberInterface(player, te), te, Textures.GUI_PRESSURE_CHAMBER_INTERFACE_LOCATION);
    }

    @Override
    public void initGui(){
        super.initGui();

        int xStart = (width - xSize) / 2;
        int yStart = (height - ySize) / 2;

        statusStat = addAnimatedStat("Interface Status", new ItemStack(Blockss.pressureChamberInterface), 0xFFFFAA00, false);
        filterStat = addAnimatedStat("Filter", new ItemStack(net.minecraft.init.Blocks.hopper), 0xFF005500, false);
        filterStat.setTextWithoutCuttingString(getFilterText());

        Rectangle buttonRect = filterStat.getButtonScaledRectangle(5, 30, 170, 20);
        filterButton = new GuiButtonSpecial(1, buttonRect.x, buttonRect.y, buttonRect.width, buttonRect.height, "-");
        filterStat.addWidget(filterButton);

        creativeTabButton = new GuiButton(2, xStart + 91, yStart + 58, 78, 20, "-");
        nameFilterField = new GuiTextField(fontRendererObj, xStart + 91, yStart + 58, 78, 10);
        nameFilterField.setText(te.itemNameFilter);

        buttonList.add(creativeTabButton);
        if(te.filterMode != TileEntityPressureChamberInterface.EnumFilterMode.ITEM) {
            if(((Slot)inventorySlots.inventorySlots.get(5)).xDisplayPosition < 1000) {
                for(int i = 5; i < 14; i++) {
                    ((Slot)inventorySlots.inventorySlots.get(i)).xDisplayPosition += 1000;
                }
            }
        } else {
            if(((Slot)inventorySlots.inventorySlots.get(5)).xDisplayPosition > 1000) {
                for(int i = 5; i < 14; i++) {
                    ((Slot)inventorySlots.inventorySlots.get(i)).xDisplayPosition -= 1000;
                }
            }
        }
    }

    @Override
    protected void drawGuiContainerForegroundLayer(int x, int y){

        super.drawGuiContainerForegroundLayer(x, y);
        fontRendererObj.drawString("Item Filter", 115, 15, 4210752);
        fontRendererObj.drawString("Upgr.", 24, 16, 4210752);

        creativeTabButton.visible = false;
        switch(te.filterMode){
            case ITEM:
                filterButton.displayString = "Items";
                nameFilterField.setFocused(false);
                nameFilterField.setVisible(false);
                break;
            case CREATIVE_TAB:
                filterButton.displayString = "Creative Tab";
                fontRendererObj.drawString("Tab Name:", 106, 45, 4210752);
                String tabName = I18n.format(CreativeTabs.creativeTabArray[te.creativeTabID].getTranslatedTabLabel());
                if(fontRendererObj.getStringWidth(tabName) > 75) {
                    while(fontRendererObj.getStringWidth(tabName) > 75) {
                        tabName = tabName.substring(0, tabName.length() - 2);
                    }
                    tabName = tabName + ".";
                }
                creativeTabButton.displayString = tabName;
                creativeTabButton.visible = true;
                nameFilterField.setFocused(false);
                nameFilterField.setVisible(false);
                break;
            case NAME_BEGINS:
                filterButton.displayString = "Item Name (begins with)";
                fontRendererObj.drawString("Item Name", 106, 35, 4210752);
                fontRendererObj.drawString("begins with:", 103, 45, 4210752);
                nameFilterField.setVisible(true);
                break;
            case NAME_CONTAINS:
                filterButton.displayString = "Item Name (contains)";
                fontRendererObj.drawString("Item Name", 106, 35, 4210752);
                fontRendererObj.drawString("contains:", 108, 45, 4210752);
                nameFilterField.setVisible(true);

        }

        int inputShift = (int)((1F - (float)Math.cos((float)te.inputProgress / (float)TileEntityPressureChamberInterface.MAX_PROGRESS * Math.PI)) * 11);
        int outputShift = (int)((1F - (float)Math.cos((float)te.outputProgress / (float)TileEntityPressureChamberInterface.MAX_PROGRESS * Math.PI)) * 11);
        Gui.drawRect(63 + inputShift, 30, 87 + inputShift, 32, 0xFF5a62ff);
        Gui.drawRect(63 + outputShift, 54, 87 + outputShift, 56, 0xFFffa800);

    }

    @Override
    protected Point getInvNameOffset(){
        return new Point(0, -2);
    }

    @Override
    protected void bindGuiTexture(){
        if(te.filterMode == TileEntityPressureChamberInterface.EnumFilterMode.ITEM) {
            super.bindGuiTexture();
        } else {
            mc.getTextureManager().bindTexture(guiTextureCreativeFilter);
        }
    }

    @Override
    protected void drawGuiContainerBackgroundLayer(float opacity, int x, int y){
        super.drawGuiContainerBackgroundLayer(opacity, x, y);
        nameFilterField.drawTextBox();
    }

    @Override
    public void updateScreen(){
        super.updateScreen();
        statusStat.setText(getStatusText());
        filterButton.visible = filterStat.isDoneExpanding();
    }

    private List<String> getStatusText(){
        List<String> text = new ArrayList<String>();
        text.add("\u00a77Interface Mode:");
        switch(te.interfaceMode.ordinal()){
            case 0:
                text.add("\u00a70None");
                break;
            case 1:
                text.add("\u00a70Import Mode");
                break;
            case 2:
                text.add("\u00a70Export Mode");
                break;
        }
        return text;
    }

    public List<String> getFilterText(){
        List<String> textList = new ArrayList<String>();
        textList.add("\u00a77Filter on                            "); // the
                                                                      // spaces
                                                                      // are there
                                                                      // to create
                                                                      // space for
                                                                      // the
                                                                      // button
        for(int i = 0; i < 3; i++)
            textList.add("");// create some space for the button
        return textList;
    }

    @Override
    protected void mouseClicked(int par1, int par2, int par3){
        super.mouseClicked(par1, par2, par3);

        if(te.filterMode == TileEntityPressureChamberInterface.EnumFilterMode.NAME_BEGINS || te.filterMode == TileEntityPressureChamberInterface.EnumFilterMode.NAME_CONTAINS) {
            nameFilterField.mouseClicked(par1, par2, par3);
        }
    }

    /**
     * Fired when a control is clicked. This is the equivalent of
     * ActionListener.actionPerformed(ActionEvent e).
     */

    @Override
    public void actionPerformed(IGuiWidget widget){
        if(widget.getID() == 1) {
            if(filterStat != null) {
                filterStat.closeWindow();
                if(te.filterMode == TileEntityPressureChamberInterface.EnumFilterMode.ITEM) {
                    for(int i = 5; i < 14; i++) {
                        ((Slot)inventorySlots.inventorySlots.get(i)).xDisplayPosition += 1000;
                    }
                } else if(te.filterMode.ordinal() == TileEntityPressureChamberInterface.EnumFilterMode.values().length - 1) {
                    for(int i = 5; i < 14; i++) {
                        ((Slot)inventorySlots.inventorySlots.get(i)).xDisplayPosition -= 1000;
                    }
                }
            }
        }
        super.actionPerformed(widget);
    }

    @Override
    protected void keyTyped(char par1, int par2){
        if(nameFilterField.isFocused() && par2 != 1) {
            nameFilterField.textboxKeyTyped(par1, par2);
            te.itemNameFilter = nameFilterField.getText();
            NetworkHandler.sendToServer(new PacketUpdateTextfield(te, 0));
        } else {
            super.keyTyped(par1, par2);
        }
    }
}
TOP

Related Classes of pneumaticCraft.client.gui.GuiPressureChamberInterface

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.