Search in sources :

Example 1 with MetaTileEntityMultiblockPart

use of gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityMultiblockPart in project GregTech by GregTechCEu.

the class MachineConsoleWidget method initWidgets.

private void initWidgets() {
    if (mte != null) {
        uiWidgetGroup = new UIWidgetGroup();
        uiWidgetGroup.setActive(false);
        uiWidgetGroup.setVisible(false);
        Size size = getSize();
        addWidget(new ImageWidget(0, 0, size.width, size.height, GuiTextures.BACKGROUND));
        addWidget(new SimpleTextWidget(size.width / 2, 12, "", -1, () -> facing.toString().toUpperCase()).setShadow(true));
        int y = 20;
        if (mte.hasFrontFacing()) {
            addWidget(new RectButtonWidget(10, y, size.width - 20, 20, 1).setClickListener(clickData -> {
                if (!isRemote() && mte.isValidFrontFacing(facing)) {
                    mte.setFrontFacing(facing);
                }
            }).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), TerminalTheme.COLOR_B_2.getColor()).setIcon(new TextTexture("terminal.console.front", -1)));
            y += 25;
        }
        // IControllable
        IControllable controllable = mte.getCapability(GregtechTileCapabilities.CAPABILITY_CONTROLLABLE, facing);
        if (controllable != null) {
            addWidget(new RectButtonWidget(10, y, 20, 20, 1).setToggleButton(GuiTextures.BUTTON_WORKING_ENABLE.getSubArea(0, 0, 1, 0.5), (c, p) -> {
                if (!isRemote()) {
                    controllable.setWorkingEnabled(p);
                }
            }).setValueSupplier(false, controllable::isWorkingEnabled).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), 0).setHoverText("terminal.console.controllable").setIcon(GuiTextures.BUTTON_WORKING_ENABLE.getSubArea(0, 0.5, 1, 0.5)));
            // AbstractRecipeLogic
            AbstractRecipeLogic recipeLogic = mte.getCapability(GregtechTileCapabilities.CAPABILITY_RECIPE_LOGIC, facing);
            if (recipeLogic != null) {
                addWidget(new CycleButtonWidget(35, y, 20, 20, recipeLogic.getAvailableOverclockingTiers(), recipeLogic::getOverclockTier, recipeLogic::setOverclockTier).setTooltipHoverString("gregtech.gui.overclock.description").setButtonTexture(GuiTextures.BUTTON_OVERCLOCK));
                addWidget(new ProgressWidget(recipeLogic::getProgressPercent, 60, y, 63, 20, GuiTextures.PROGRESS_BAR_ARC_FURNACE, ProgressWidget.MoveType.HORIZONTAL));
                if (recipeLogic instanceof RecipeLogicSteam) {
                    y += 25;
                    addWidget(new RectButtonWidget(10, y, size.width - 20, 20, 1).setClickListener(clickData -> {
                        EnumFacing currentVentingSide = ((RecipeLogicSteam) recipeLogic).getVentingSide();
                        if (currentVentingSide == facing || mte.getFrontFacing() == facing)
                            return;
                        ((RecipeLogicSteam) recipeLogic).setVentingSide(facing);
                    }).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), TerminalTheme.COLOR_B_2.getColor()).setIcon(new TextTexture("terminal.console.venting", -1)));
                }
            }
            y += 25;
        }
        // SimpleMachineMetaTileEntity
        if (mte instanceof SimpleMachineMetaTileEntity) {
            SimpleMachineMetaTileEntity simpleMTE = (SimpleMachineMetaTileEntity) mte;
            // items output
            if (simpleMTE.getExportItems().getSlots() > 0) {
                addWidget(new ImageWidget(10, y, 20, 20, new ItemStackTexture(Items.GLOWSTONE_DUST)));
                addWidget(new RectButtonWidget(33, y, 50, 20, 1).setClickListener(clickData -> {
                    if (!isRemote() && mte.getFrontFacing() != facing) {
                        simpleMTE.setOutputFacingItems(facing);
                    }
                }).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), TerminalTheme.COLOR_B_2.getColor()).setHoverText("terminal.console.items"));
                addWidget(new SimpleTextWidget(58, y + 10, "", -1, () -> simpleMTE.getOutputFacingItems().toString()));
                addWidget(new RectButtonWidget(83, y, 20, 20, 1).setToggleButton(GuiTextures.BUTTON_ITEM_OUTPUT.getSubArea(0, 0.5, 1, 0.5), (c, p) -> {
                    if (!isRemote()) {
                        simpleMTE.setAutoOutputItems(p);
                    }
                }).setInitValue(simpleMTE.isAutoOutputItems()).setValueSupplier(false, simpleMTE::isAutoOutputItems).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), 0).setHoverText("terminal.console.auto_output").setIcon(GuiTextures.BUTTON_ITEM_OUTPUT.getSubArea(0, 0, 1, 0.5)));
                addWidget(new RectButtonWidget(103, y, 20, 20, 1).setToggleButton(GuiTextures.BUTTON_ALLOW_IMPORT_EXPORT.getSubArea(0, 0.5, 1, 0.5), (c, p) -> {
                    if (!isRemote()) {
                        simpleMTE.setAllowInputFromOutputSideItems(p);
                    }
                }).setInitValue(simpleMTE.isAllowInputFromOutputSideItems()).setValueSupplier(false, simpleMTE::isAllowInputFromOutputSideItems).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), 0).setHoverText("terminal.console.input").setIcon(GuiTextures.BUTTON_ALLOW_IMPORT_EXPORT.getSubArea(0, 0, 1, 0.5)));
                y += 20;
            }
            // fluids output
            if (simpleMTE.getExportFluids().getTanks() > 0) {
                addWidget(new ImageWidget(10, y, 20, 20, new ItemStackTexture(Items.WATER_BUCKET)));
                addWidget(new RectButtonWidget(33, y, 50, 20, 1).setClickListener(clickData -> {
                    if (!isRemote() && simpleMTE.getFrontFacing() != facing) {
                        simpleMTE.setOutputFacingFluids(facing);
                    }
                }).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), TerminalTheme.COLOR_B_2.getColor()).setHoverText("terminal.console.fluids"));
                addWidget(new SimpleTextWidget(58, y + 10, "", -1, () -> simpleMTE.getOutputFacingFluids().toString()));
                addWidget(new RectButtonWidget(83, y, 20, 20, 1).setToggleButton(GuiTextures.BUTTON_FLUID_OUTPUT.getSubArea(0, 0.5, 1, 0.5), (c, p) -> {
                    if (!isRemote()) {
                        simpleMTE.setAutoOutputFluids(p);
                    }
                }).setInitValue(simpleMTE.isAutoOutputFluids()).setValueSupplier(false, simpleMTE::isAutoOutputFluids).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), 0).setHoverText("terminal.console.auto_output").setIcon(GuiTextures.BUTTON_FLUID_OUTPUT.getSubArea(0, 0, 1, 0.5)));
                addWidget(new RectButtonWidget(103, y, 20, 20, 1).setToggleButton(GuiTextures.BUTTON_ALLOW_IMPORT_EXPORT.getSubArea(0, 0.5, 1, 0.5), (c, p) -> {
                    if (!isRemote()) {
                        simpleMTE.setAllowInputFromOutputSideFluids(p);
                    }
                }).setInitValue(simpleMTE.isAllowInputFromOutputSideFluids()).setValueSupplier(false, simpleMTE::isAllowInputFromOutputSideFluids).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), 0).setHoverText("terminal.console.input").setIcon(GuiTextures.BUTTON_ALLOW_IMPORT_EXPORT.getSubArea(0, 0, 1, 0.5)));
                y += 20;
            }
            y += 5;
        }
        // MetaTileEntityQuantumTank
        if (mte instanceof MetaTileEntityQuantumChest) {
            MetaTileEntityQuantumChest chest = (MetaTileEntityQuantumChest) mte;
            addWidget(new ImageWidget(10, y, 20, 20, new ItemStackTexture(Items.GLOWSTONE_DUST)));
            addWidget(new RectButtonWidget(33, y, 50, 20, 1).setClickListener(clickData -> {
                if (!isRemote() && mte.getFrontFacing() != facing) {
                    chest.setOutputFacing(facing);
                }
            }).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), TerminalTheme.COLOR_B_2.getColor()).setHoverText("terminal.console.items"));
            addWidget(new SimpleTextWidget(58, y + 10, "", -1, () -> chest.getOutputFacing().toString()));
            addWidget(new RectButtonWidget(83, y, 20, 20, 1).setToggleButton(GuiTextures.BUTTON_ITEM_OUTPUT.getSubArea(0, 0.5, 1, 0.5), (c, p) -> {
                if (!isRemote()) {
                    chest.setAutoOutputItems(p);
                }
            }).setInitValue(chest.isAutoOutputItems()).setValueSupplier(false, chest::isAutoOutputItems).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), 0).setHoverText("terminal.console.auto_output").setIcon(GuiTextures.BUTTON_ITEM_OUTPUT.getSubArea(0, 0, 1, 0.5)));
            addWidget(new RectButtonWidget(103, y, 20, 20, 1).setToggleButton(GuiTextures.BUTTON_ALLOW_IMPORT_EXPORT.getSubArea(0, 0.5, 1, 0.5), (c, p) -> {
                if (!isRemote()) {
                    chest.setAllowInputFromOutputSide(p);
                }
            }).setInitValue(chest.isAllowInputFromOutputSideItems()).setValueSupplier(false, chest::isAllowInputFromOutputSideItems).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), 0).setHoverText("terminal.console.input").setIcon(GuiTextures.BUTTON_ALLOW_IMPORT_EXPORT.getSubArea(0, 0, 1, 0.5)));
            y += 25;
        } else if (mte instanceof MetaTileEntityQuantumTank) {
            MetaTileEntityQuantumTank tank = (MetaTileEntityQuantumTank) mte;
            addWidget(new ImageWidget(10, y, 20, 20, new ItemStackTexture(Items.WATER_BUCKET)));
            addWidget(new RectButtonWidget(33, y, 50, 20, 1).setClickListener(clickData -> {
                if (!isRemote() && tank.getFrontFacing() != facing) {
                    tank.setOutputFacing(facing);
                }
            }).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), TerminalTheme.COLOR_B_2.getColor()).setHoverText("terminal.console.fluids"));
            addWidget(new SimpleTextWidget(58, y + 10, "", -1, () -> tank.getOutputFacing().toString()));
            addWidget(new RectButtonWidget(83, y, 20, 20, 1).setToggleButton(GuiTextures.BUTTON_FLUID_OUTPUT.getSubArea(0, 0.5, 1, 0.5), (c, p) -> {
                if (!isRemote()) {
                    tank.setAutoOutputFluids(p);
                }
            }).setInitValue(tank.isAutoOutputFluids()).setValueSupplier(false, tank::isAutoOutputFluids).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), 0).setHoverText("terminal.console.auto_output").setIcon(GuiTextures.BUTTON_FLUID_OUTPUT.getSubArea(0, 0, 1, 0.5)));
            addWidget(new RectButtonWidget(103, y, 20, 20, 1).setToggleButton(GuiTextures.BUTTON_ALLOW_IMPORT_EXPORT.getSubArea(0, 0.5, 1, 0.5), (c, p) -> {
                if (!isRemote()) {
                    tank.setAllowInputFromOutputSide(p);
                }
            }).setInitValue(tank.isAllowInputFromOutputSideFluids()).setValueSupplier(false, tank::isAllowInputFromOutputSideFluids).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), 0).setHoverText("terminal.console.input").setIcon(GuiTextures.BUTTON_ALLOW_IMPORT_EXPORT.getSubArea(0, 0, 1, 0.5)));
            y += 25;
        }
        // MultiBlockPart
        if (mte instanceof MetaTileEntityMultiblockPart) {
            // MetaTileEntityMaintenanceHatch
            if (mte instanceof MetaTileEntityMaintenanceHatch) {
                addWidget(new RectButtonWidget(10, y, size.width - 20, 20, 1).setClickListener(clickData -> {
                    if (!isRemote()) {
                        ((MetaTileEntityMaintenanceHatch) mte).fixAllMaintenanceProblems();
                    }
                }).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), TerminalTheme.COLOR_B_2.getColor()).setIcon(new TextTexture("terminal.console.maintenance", -1)));
                y += 25;
            }
        }
        // CoverBehavior
        CoverBehavior cover = mte.getCoverAtSide(facing);
        if (cover != null) {
            this.addWidget(new SlotWidget(new ItemStackHandler(NonNullList.withSize(1, cover.getPickItem())), 0, 10, y, false, false));
            addWidget(new SimpleTextWidget(58, y + 10, "terminal.console.cover_rs", -1, () -> String.valueOf(cover.getRedstoneSignalOutput())).setShadow(true).setCenter(true));
            if (cover instanceof CoverWithUI) {
                addWidget(new RectButtonWidget(83, y, 40, 20, 1).setClickListener(clickData -> uiWidgetGroup.openUI(((CoverWithUI) cover).createUI(gui.entityPlayer))).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), TerminalTheme.COLOR_B_2.getColor()).setIcon(new TextTexture("terminal.console.cover_gui", -1)));
            }
            y += 25;
        }
        addWidget(new RectButtonWidget(10, y, size.width - 20, 20, 1).setClickListener(clickData -> uiWidgetGroup.openUI(mte.getModularUI(gui.entityPlayer))).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_7.getColor(), TerminalTheme.COLOR_B_2.getColor()).setIcon(new TextTexture("terminal.console.gui", -1)));
        addWidget(uiWidgetGroup);
    }
}
Also used : MetaTileEntityQuantumTank(gregtech.common.metatileentities.storage.MetaTileEntityQuantumTank) IRenderContext(gregtech.api.gui.IRenderContext) Size(gregtech.api.util.Size) EnumHand(net.minecraft.util.EnumHand) TerminalTheme(gregtech.api.terminal.os.TerminalTheme) GregtechTileCapabilities(gregtech.api.capability.GregtechTileCapabilities) CoverBehavior(gregtech.api.cover.CoverBehavior) TextTexture(gregtech.api.gui.resources.TextTexture) ItemStackTexture(gregtech.api.gui.resources.ItemStackTexture) CoverWithUI(gregtech.api.cover.CoverWithUI) Widget(gregtech.api.gui.Widget) gregtech.api.gui.widgets(gregtech.api.gui.widgets) SimpleMachineMetaTileEntity(gregtech.api.metatileentity.SimpleMachineMetaTileEntity) MetaTileEntityQuantumChest(gregtech.common.metatileentities.storage.MetaTileEntityQuantumChest) NonNullList(net.minecraft.util.NonNullList) GL11(org.lwjgl.opengl.GL11) MetaTileEntityHolder(gregtech.api.metatileentity.MetaTileEntityHolder) MetaTileEntity(gregtech.api.metatileentity.MetaTileEntity) AbstractRecipeLogic(gregtech.api.capability.impl.AbstractRecipeLogic) Items(net.minecraft.init.Items) GlStateManager(net.minecraft.client.renderer.GlStateManager) EnumFacing(net.minecraft.util.EnumFacing) IControllable(gregtech.api.capability.IControllable) BlockPos(net.minecraft.util.math.BlockPos) MetaTileEntityMaintenanceHatch(gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityMaintenanceHatch) GuiTextures(gregtech.api.gui.GuiTextures) RecipeLogicSteam(gregtech.api.capability.impl.RecipeLogicSteam) RectButtonWidget(gregtech.api.terminal.gui.widgets.RectButtonWidget) ItemStackHandler(net.minecraftforge.items.ItemStackHandler) IGuiTexture(gregtech.api.gui.resources.IGuiTexture) ModularUI(gregtech.api.gui.ModularUI) TileEntity(net.minecraft.tileentity.TileEntity) MetaTileEntityMultiblockPart(gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityMultiblockPart) PacketBuffer(net.minecraft.network.PacketBuffer) ItemStackHandler(net.minecraftforge.items.ItemStackHandler) SimpleMachineMetaTileEntity(gregtech.api.metatileentity.SimpleMachineMetaTileEntity) Size(gregtech.api.util.Size) EnumFacing(net.minecraft.util.EnumFacing) MetaTileEntityQuantumChest(gregtech.common.metatileentities.storage.MetaTileEntityQuantumChest) RecipeLogicSteam(gregtech.api.capability.impl.RecipeLogicSteam) TextTexture(gregtech.api.gui.resources.TextTexture) CoverBehavior(gregtech.api.cover.CoverBehavior) CoverWithUI(gregtech.api.cover.CoverWithUI) AbstractRecipeLogic(gregtech.api.capability.impl.AbstractRecipeLogic) ItemStackTexture(gregtech.api.gui.resources.ItemStackTexture) MetaTileEntityMaintenanceHatch(gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityMaintenanceHatch) IControllable(gregtech.api.capability.IControllable) MetaTileEntityMultiblockPart(gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityMultiblockPart) MetaTileEntityQuantumTank(gregtech.common.metatileentities.storage.MetaTileEntityQuantumTank) RectButtonWidget(gregtech.api.terminal.gui.widgets.RectButtonWidget)

Aggregations

GregtechTileCapabilities (gregtech.api.capability.GregtechTileCapabilities)1 IControllable (gregtech.api.capability.IControllable)1 AbstractRecipeLogic (gregtech.api.capability.impl.AbstractRecipeLogic)1 RecipeLogicSteam (gregtech.api.capability.impl.RecipeLogicSteam)1 CoverBehavior (gregtech.api.cover.CoverBehavior)1 CoverWithUI (gregtech.api.cover.CoverWithUI)1 GuiTextures (gregtech.api.gui.GuiTextures)1 IRenderContext (gregtech.api.gui.IRenderContext)1 ModularUI (gregtech.api.gui.ModularUI)1 Widget (gregtech.api.gui.Widget)1 IGuiTexture (gregtech.api.gui.resources.IGuiTexture)1 ItemStackTexture (gregtech.api.gui.resources.ItemStackTexture)1 TextTexture (gregtech.api.gui.resources.TextTexture)1 gregtech.api.gui.widgets (gregtech.api.gui.widgets)1 MetaTileEntity (gregtech.api.metatileentity.MetaTileEntity)1 MetaTileEntityHolder (gregtech.api.metatileentity.MetaTileEntityHolder)1 SimpleMachineMetaTileEntity (gregtech.api.metatileentity.SimpleMachineMetaTileEntity)1 RectButtonWidget (gregtech.api.terminal.gui.widgets.RectButtonWidget)1 TerminalTheme (gregtech.api.terminal.os.TerminalTheme)1 Size (gregtech.api.util.Size)1