From 078586edf12d04b824718b4756e2cc7d556ff967 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sun, 1 May 2016 22:11:13 +0200 Subject: [PATCH] More gui stuff for PP encoder --- .../ContainerProcessingPatternEncoder.java | 2 +- src/main/java/refinedstorage/gui/GuiGrid.java | 4 +- .../gui/GuiProcessingPatternEncoder.java | 63 ++++++++++++++++++- .../network/MessageGridPatternCreate.java | 11 ++-- .../TileProcessingPatternEncoder.java | 4 ++ .../assets/refinedstorage/lang/en_US.lang | 1 + .../assets/refinedstorage/lang/nl_NL.lang | 1 + 7 files changed, 79 insertions(+), 7 deletions(-) diff --git a/src/main/java/refinedstorage/container/ContainerProcessingPatternEncoder.java b/src/main/java/refinedstorage/container/ContainerProcessingPatternEncoder.java index 846143038..6b384b7cb 100755 --- a/src/main/java/refinedstorage/container/ContainerProcessingPatternEncoder.java +++ b/src/main/java/refinedstorage/container/ContainerProcessingPatternEncoder.java @@ -36,6 +36,6 @@ public class ContainerProcessingPatternEncoder extends ContainerBase { addSlotToContainer(new SlotFiltered(ppEncoder, 0, 152, 18, new BasicItemValidator(RefinedStorageItems.PATTERN))); addSlotToContainer(new SlotOutput(ppEncoder, 1, 152, 58)); - addPlayerInventory(8, 93); + addPlayerInventory(8, 90); } } diff --git a/src/main/java/refinedstorage/gui/GuiGrid.java b/src/main/java/refinedstorage/gui/GuiGrid.java index 340f2a85f..803c9c8c7 100755 --- a/src/main/java/refinedstorage/gui/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/GuiGrid.java @@ -7,6 +7,7 @@ import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.init.SoundEvents; import net.minecraft.inventory.Slot; +import net.minecraft.util.math.BlockPos; import net.minecraftforge.fml.client.config.GuiCheckBox; import net.minecraftforge.fml.common.FMLCommonHandler; import refinedstorage.RefinedStorage; @@ -303,7 +304,8 @@ public class GuiGrid extends GuiBase { if (grid.isConnected()) { if (clickedCreatePattern) { - RefinedStorage.NETWORK.sendToServer(new MessageGridPatternCreate((TileGrid) grid)); + BlockPos gridPos = ((TileGrid) grid).getPos(); + RefinedStorage.NETWORK.sendToServer(new MessageGridPatternCreate(gridPos.getX(), gridPos.getY(), gridPos.getZ())); } else if (isHoveringOverSlot() && container.getPlayer().inventory.getItemStack() != null && (clickedButton == 0 || clickedButton == 1)) { grid.onItemPush(-1, clickedButton == 1); } else if (isHoveringOverItemInSlot() && container.getPlayer().inventory.getItemStack() == null) { diff --git a/src/main/java/refinedstorage/gui/GuiProcessingPatternEncoder.java b/src/main/java/refinedstorage/gui/GuiProcessingPatternEncoder.java index e1cd34aaf..d4513d208 100755 --- a/src/main/java/refinedstorage/gui/GuiProcessingPatternEncoder.java +++ b/src/main/java/refinedstorage/gui/GuiProcessingPatternEncoder.java @@ -1,15 +1,27 @@ package refinedstorage.gui; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.init.SoundEvents; +import refinedstorage.RefinedStorage; +import refinedstorage.block.EnumGridType; import refinedstorage.container.ContainerProcessingPatternEncoder; import refinedstorage.gui.sidebutton.SideButtonCompare; import refinedstorage.gui.sidebutton.SideButtonMode; import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; +import refinedstorage.network.MessageGridPatternCreate; import refinedstorage.tile.autocrafting.TileProcessingPatternEncoder; +import refinedstorage.tile.grid.TileGrid; import refinedstorage.util.InventoryUtils; +import java.io.IOException; + public class GuiProcessingPatternEncoder extends GuiBase { + private TileProcessingPatternEncoder ppEncoder; + public GuiProcessingPatternEncoder(ContainerProcessingPatternEncoder container, TileProcessingPatternEncoder ppEncoder) { super(container, 176, 172); + + this.ppEncoder = ppEncoder; } @Override @@ -20,16 +32,65 @@ public class GuiProcessingPatternEncoder extends GuiBase { public void update(int x, int y) { } + public boolean isHoveringOverCreatePattern(int mouseX, int mouseY) { + return inBounds(152, 38, 16, 16, mouseX, mouseY) && isCreatePatternEnabled(); + } + + public boolean isCreatePatternEnabled() { + int inputsFilled = 0, outputsFilled = 0; + + for (int i = 0; i < 9; ++i) { + if (ppEncoder.getInputsOutputsInventory().getStackInSlot(i) != null) { + inputsFilled++; + } + } + + for (int i = 9; i < 18; ++i) { + if (ppEncoder.getInputsOutputsInventory().getStackInSlot(i) != null) { + outputsFilled++; + } + } + + return inputsFilled > 0 && outputsFilled > 0 && ppEncoder.getStackInSlot(0) != null; + } + @Override public void drawBackground(int x, int y, int mouseX, int mouseY) { bindTexture("gui/processing_pattern_encoder.png"); drawTexture(x, y, 0, 0, width, height); + + int ty = 0; + + if (isHoveringOverCreatePattern(mouseX - guiLeft, mouseY - guiTop)) { + ty = 1; + } + + if (!isCreatePatternEnabled()) { + ty = 2; + } + + drawTexture(x + 152, y + 38, 178, ty * 16, 16, 16); } @Override public void drawForeground(int mouseX, int mouseY) { drawString(7, 7, t("gui.refinedstorage:processing_pattern_encoder")); - drawString(7, 77, t("container.inventory")); + drawString(7, 78, t("container.inventory")); + + if (isHoveringOverCreatePattern(mouseX, mouseY)) { + drawTooltip(mouseX, mouseY, t("gui.refinedstorage:processing_pattern_encoder.pattern_create")); + } + } + + @Override + protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { + super.mouseClicked(mouseX, mouseY, mouseButton); + + if (isHoveringOverCreatePattern(mouseX - guiLeft, mouseY - guiTop)) { + RefinedStorage.NETWORK.sendToServer(new MessageGridPatternCreate(ppEncoder.getPos().getX(), ppEncoder.getPos().getY(), ppEncoder.getPos().getZ())); + + mc.getSoundHandler().playSound(PositionedSoundRecord.getMasterRecord(SoundEvents.ui_button_click, 1.0F)); + } } } diff --git a/src/main/java/refinedstorage/network/MessageGridPatternCreate.java b/src/main/java/refinedstorage/network/MessageGridPatternCreate.java index 6d4cf42cf..4ebb2be84 100755 --- a/src/main/java/refinedstorage/network/MessageGridPatternCreate.java +++ b/src/main/java/refinedstorage/network/MessageGridPatternCreate.java @@ -6,6 +6,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import refinedstorage.block.EnumGridType; +import refinedstorage.tile.autocrafting.TileProcessingPatternEncoder; import refinedstorage.tile.grid.TileGrid; public class MessageGridPatternCreate extends MessageHandlerPlayerToServer implements IMessage { @@ -16,10 +17,10 @@ public class MessageGridPatternCreate extends MessageHandlerPlayerToServer