From 7afb7cb1fc298171aa238eb84301f02e34dc91d0 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sun, 31 Jan 2016 14:01:25 +0100 Subject: [PATCH] make the storage gui an interface --- .../container/ContainerStorage.java | 6 +- .../java/storagecraft/gui/GuiHandler.java | 5 +- .../java/storagecraft/gui/GuiStorage.java | 32 ++-- .../network/MessageStoragePriorityUpdate.java | 8 +- .../storagecraft/storage/IStorageGui.java | 26 +++ .../java/storagecraft/tile/TileStorage.java | 179 +++++------------- 6 files changed, 100 insertions(+), 156 deletions(-) create mode 100644 src/main/java/storagecraft/storage/IStorageGui.java diff --git a/src/main/java/storagecraft/container/ContainerStorage.java b/src/main/java/storagecraft/container/ContainerStorage.java index cdd85cf3d..04d549c5a 100644 --- a/src/main/java/storagecraft/container/ContainerStorage.java +++ b/src/main/java/storagecraft/container/ContainerStorage.java @@ -1,18 +1,18 @@ package storagecraft.container; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; import storagecraft.container.slot.SlotSpecimen; -import storagecraft.tile.TileStorage; public class ContainerStorage extends ContainerBase { - public ContainerStorage(EntityPlayer player, TileStorage storage) + public ContainerStorage(EntityPlayer player, IInventory inventory) { super(player); for (int i = 0; i < 9; ++i) { - addSlotToContainer(new SlotSpecimen(storage, i, 8 + (18 * i), 20)); + addSlotToContainer(new SlotSpecimen(inventory, i, 8 + (18 * i), 20)); } addPlayerInventory(8, 129); diff --git a/src/main/java/storagecraft/gui/GuiHandler.java b/src/main/java/storagecraft/gui/GuiHandler.java index f96a2937e..46f169d89 100644 --- a/src/main/java/storagecraft/gui/GuiHandler.java +++ b/src/main/java/storagecraft/gui/GuiHandler.java @@ -9,6 +9,7 @@ import net.minecraftforge.fml.common.network.IGuiHandler; import storagecraft.StorageCraftGUI; import storagecraft.container.*; import storagecraft.tile.*; +import storagecraft.storage.IStorageGui; public class GuiHandler implements IGuiHandler { @@ -39,7 +40,7 @@ public class GuiHandler implements IGuiHandler case StorageCraftGUI.CONSTRUCTOR: return new ContainerConstructor(player, (TileConstructor) tile); case StorageCraftGUI.STORAGE: - return new ContainerStorage(player, (TileStorage) tile); + return new ContainerStorage(player, ((IStorageGui) tile).getInventory()); default: return null; } @@ -81,7 +82,7 @@ public class GuiHandler implements IGuiHandler case StorageCraftGUI.CONSTRUCTOR: return new GuiConstructor((ContainerConstructor) getContainer(ID, player, tile), (TileConstructor) tile); case StorageCraftGUI.STORAGE: - return new GuiStorage((ContainerStorage) getContainer(ID, player, tile), (TileStorage) tile); + return new GuiStorage((ContainerStorage) getContainer(ID, player, tile), (IStorageGui) tile); default: return null; } diff --git a/src/main/java/storagecraft/gui/GuiStorage.java b/src/main/java/storagecraft/gui/GuiStorage.java index d4d28250f..809e7f2db 100644 --- a/src/main/java/storagecraft/gui/GuiStorage.java +++ b/src/main/java/storagecraft/gui/GuiStorage.java @@ -3,16 +3,13 @@ package storagecraft.gui; import com.google.common.primitives.Ints; import java.io.IOException; import net.minecraft.client.gui.GuiTextField; -import storagecraft.StorageCraft; -import storagecraft.block.EnumStorageType; import storagecraft.container.ContainerStorage; import storagecraft.gui.sidebutton.SideButtonRedstoneMode; -import storagecraft.network.MessageStoragePriorityUpdate; -import storagecraft.tile.TileStorage; +import storagecraft.storage.IStorageGui; public class GuiStorage extends GuiBase { - private TileStorage storage; + private IStorageGui gui; private GuiTextField priorityField; @@ -21,20 +18,23 @@ public class GuiStorage extends GuiBase private int barWidth = 16; private int barHeight = 58; - public GuiStorage(ContainerStorage container, TileStorage storage) + public GuiStorage(ContainerStorage container, IStorageGui gui) { super(container, 176, 211); - this.storage = storage; + this.gui = gui; } @Override public void init(int x, int y) { - addSideButton(new SideButtonRedstoneMode(storage)); + if (gui.getRedstoneModeSetting() != null) + { + addSideButton(new SideButtonRedstoneMode(gui.getRedstoneModeSetting())); + } priorityField = new GuiTextField(0, fontRendererObj, x + 116 + 1, y + 54 + 1, 25, fontRendererObj.FONT_HEIGHT); - priorityField.setText(String.valueOf(storage.getPriority())); + priorityField.setText(String.valueOf(gui.getStorage().getPriority())); priorityField.setEnableBackgroundDrawing(false); priorityField.setVisible(true); priorityField.setTextColor(16777215); @@ -54,7 +54,7 @@ public class GuiStorage extends GuiBase drawTexture(x, y, 0, 0, xSize, ySize); - int barHeightNew = storage.getStoredScaled(barHeight); + int barHeightNew = (int) ((float) gui.getStored() / (float) gui.getCapacity() * (float) barHeight); drawTexture(x + barX, y + barY + barHeight - barHeightNew, 179, 0 + (barHeight - barHeightNew), barWidth, barHeightNew); @@ -64,21 +64,21 @@ public class GuiStorage extends GuiBase @Override public void drawForeground(int mouseX, int mouseY) { - drawString(7, 7, t("block.storagecraft:storage." + storage.getType().getId() + ".name")); + drawString(7, 7, t(gui.getName())); drawString(7, 42, t("misc.storagecraft:storage")); drawString(115, 42, t("misc.storagecraft:priority")); drawString(7, 117, t("container.inventory")); - drawString(30, 54, t("misc.storagecraft:storage.stored", storage.getStored())); + drawString(30, 54, t("misc.storagecraft:storage.stored", gui.getStored())); - if (storage.getType() != EnumStorageType.TYPE_CREATIVE) + if (gui.getCapacity() != -1) { - drawString(30, 64, t("misc.storagecraft:storage.capacity", storage.getType().getCapacity())); + drawString(30, 64, t("misc.storagecraft:storage.capacity", gui.getCapacity())); } if (inBounds(barX, barY, barWidth, barHeight, mouseX, mouseY)) { - drawTooltip(mouseX, mouseY, t("misc.storagecraft:storage.full", storage.getStoredScaled(100))); + drawTooltip(mouseX, mouseY, t("misc.storagecraft:storage.full", (int) ((float) gui.getStored() / (float) gui.getCapacity() * 100f))); } } @@ -91,7 +91,7 @@ public class GuiStorage extends GuiBase if (result != null) { - StorageCraft.NETWORK.sendToServer(new MessageStoragePriorityUpdate(storage, result)); + gui.getPriorityHandler().onPriorityChanged(result); } } else diff --git a/src/main/java/storagecraft/network/MessageStoragePriorityUpdate.java b/src/main/java/storagecraft/network/MessageStoragePriorityUpdate.java index 938ca8b67..4681f4f57 100644 --- a/src/main/java/storagecraft/network/MessageStoragePriorityUpdate.java +++ b/src/main/java/storagecraft/network/MessageStoragePriorityUpdate.java @@ -18,11 +18,11 @@ public class MessageStoragePriorityUpdate extends MessageHandlerPlayerToServer