More gui stuff for PP encoder

This commit is contained in:
Raoul Van den Berge
2016-05-01 22:11:13 +02:00
parent d0712fcd7d
commit 078586edf1
7 changed files with 79 additions and 7 deletions

View File

@@ -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);
}
}

View File

@@ -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) {

View File

@@ -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));
}
}
}

View File

@@ -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<MessageGridPatternCreate> implements IMessage {
@@ -16,10 +17,10 @@ public class MessageGridPatternCreate extends MessageHandlerPlayerToServer<Messa
public MessageGridPatternCreate() {
}
public MessageGridPatternCreate(TileGrid grid) {
this.x = grid.getPos().getX();
this.y = grid.getPos().getY();
this.z = grid.getPos().getZ();
public MessageGridPatternCreate(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
@Override
@@ -42,6 +43,8 @@ public class MessageGridPatternCreate extends MessageHandlerPlayerToServer<Messa
if (tile instanceof TileGrid && ((TileGrid) tile).getType() == EnumGridType.PATTERN) {
((TileGrid) tile).onCreatePattern();
} else if (tile instanceof TileProcessingPatternEncoder) {
((TileProcessingPatternEncoder) tile).onCreatePattern();
}
}
}

View File

@@ -146,4 +146,8 @@ public class TileProcessingPatternEncoder extends TileBase implements ISidedInve
public InventorySimple getInputsOutputsInventory() {
return inputsOutputsInventory;
}
public void onCreatePattern() {
System.out.println("Create pattern!!");
}
}

View File

@@ -25,6 +25,7 @@ gui.refinedstorage:wireless_transmitter=Wireless Transmitter
gui.refinedstorage:wireless_transmitter.distance=%d blocks
gui.refinedstorage:crafter=Crafter
gui.refinedstorage:processing_pattern_encoder=Processing Pattern Encoder
gui.refinedstorage:processing_pattern_encoder.pattern_create=Create Pattern
misc.refinedstorage:energy_stored=%d / %d RF
misc.refinedstorage:energy_usage=Usage: %d RF/t

View File

@@ -25,6 +25,7 @@ gui.refinedstorage:wireless_transmitter=Draadloze Zender
gui.refinedstorage:wireless_transmitter.distance=%d blokken
gui.refinedstorage:crafter=Crafter
gui.refinedstorage:processing_pattern_encoder=Verwerkingspatroon Codeerder
gui.refinedstorage:processing_pattern_encoder.pattern_create=Patroon maken
misc.refinedstorage:energy_stored=%d / %d RF
misc.refinedstorage:energy_usage=Vebruik: %d RF/t