Package mods.railcraft.client.gui

Source Code of mods.railcraft.client.gui.GuiTradeStation

/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.client.gui;

import cpw.mods.fml.common.registry.VillagerRegistry;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import mods.railcraft.client.gui.buttons.GuiBetterButton;
import net.minecraft.entity.player.InventoryPlayer;
import mods.railcraft.common.blocks.machine.alpha.TileTradeStation;
import mods.railcraft.common.blocks.machine.alpha.TileTradeStation.GuiPacketType;
import mods.railcraft.common.core.RailcraftConstants;
import mods.railcraft.common.gui.buttons.StandardButtonTextureSets;
import mods.railcraft.common.gui.containers.ContainerTradeStation;
import mods.railcraft.common.gui.tooltips.ToolTip;
import mods.railcraft.common.util.collections.RevolvingList;
import mods.railcraft.common.util.network.PacketBuilder;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.passive.EntityVillager;
import net.minecraft.util.EnumChatFormatting;

import static mods.railcraft.common.blocks.machine.alpha.TileTradeStation.GuiPacketType.*;

public class GuiTradeStation extends TileGui {

    private final String label;
    private final TileTradeStation tile;
    private final RevolvingList<Integer> professions = new RevolvingList<Integer>();
    private final EntityVillager villager;

    public GuiTradeStation(InventoryPlayer playerInv, TileTradeStation tile) {
        super(tile, new ContainerTradeStation(playerInv, tile), RailcraftConstants.GUI_TEXTURE_FOLDER + "gui_trade_station.png");
        xSize = 176;
        ySize = 214;

        this.tile = tile;

        label = tile.getName();

        villager = new EntityVillager(tile.getWorld());

        for (int prof = 0; prof < 5; prof++) {
            professions.add(prof);
        }
        professions.addAll(VillagerRegistry.getRegisteredVillagers());

        professions.setCurrent(tile.getProfession());
        villager.setProfession(professions.getCurrent());
    }

    @Override
    public void initGui() {
        super.initGui();
        buttonList.clear();
        int w = (width - xSize) / 2;
        int h = (height - ySize) / 2;

        buttonList.add(new GuiBetterButton(0, w + 118, h + 64, 10, StandardButtonTextureSets.LEFT_BUTTON, ""));
        buttonList.add(new GuiBetterButton(1, w + 156, h + 64, 10, StandardButtonTextureSets.RIGHT_BUTTON, ""));

        GuiBetterButton[] dice = new GuiBetterButton[3];

        ToolTip tip = ToolTip.buildToolTip("railcraft.gui.trade.station.dice.tip");
        tip.get(0).format = EnumChatFormatting.YELLOW;

        for (int b = 0; b < 3; b++) {
            dice[b] = new GuiBetterButton(2 + b, w + 93, h + 24 + 21 * b, 16, StandardButtonTextureSets.DICE_BUTTON, "");
            dice[b].setToolTip(tip);
            buttonList.add(dice[b]);
        }

    }

    @Override
    protected void actionPerformed(GuiButton button) {
        super.actionPerformed(button);

        switch (button.id) {
            case 0:
                professions.rotateLeft();
                sendUpdateToTile(SET_PROFESSION, professions.getCurrent());
                break;
            case 1:
                professions.rotateRight();
                sendUpdateToTile(SET_PROFESSION, professions.getCurrent());
                break;
            case 2:
                sendUpdateToTile(NEXT_TRADE, (byte) 0);
                break;
            case 3:
                sendUpdateToTile(NEXT_TRADE, (byte) 1);
                break;
            case 4:
                sendUpdateToTile(NEXT_TRADE, (byte) 2);
                break;
        }

        villager.setProfession(professions.getCurrent());
    }

    public void sendUpdateToTile(GuiPacketType type, Object... args) {
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        DataOutputStream data = new DataOutputStream(bytes);
        try {
            data.writeByte(type.ordinal());
            for (Object arg : args) {
                if (arg instanceof Integer)
                    data.writeInt((Integer) arg);
                else if (arg instanceof Byte)
                    data.writeByte((Byte) arg);
            }
        } catch (IOException ex) {
        }
        PacketBuilder.instance().sendGuiReturnPacket(tile, bytes.toByteArray());
    }

    @Override
    protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
        int sWidth = fontRendererObj.getStringWidth(label);
        int sPos = xSize / 4 - sWidth / 2;
        fontRendererObj.drawString(label, sPos, 6, 0x404040);
//        fontRendererObj.drawString(feed, 85, 29, 0x404040);

        GuiTools.drawVillager(villager, 141, 79, 30, (float) (guiLeft + 87) - mouseX, (float) (guiTop + 91 - 50) - mouseY);
    }

}
TOP

Related Classes of mods.railcraft.client.gui.GuiTradeStation

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.