diff --git a/src/main/java/mekanism/client/gui/GuiMekanism.java b/src/main/java/mekanism/client/gui/GuiMekanism.java index f5d5d81dd..f3233c51f 100644 --- a/src/main/java/mekanism/client/gui/GuiMekanism.java +++ b/src/main/java/mekanism/client/gui/GuiMekanism.java @@ -7,6 +7,7 @@ import java.util.Set; import mekanism.api.transmitters.TransmissionType; import mekanism.client.gui.element.GuiElement; +import mekanism.client.gui.element.GuiGauge; import mekanism.common.SideData; import mekanism.common.base.ISideConfiguration; import mekanism.common.item.ItemConfigurator; @@ -74,6 +75,23 @@ public abstract class GuiMekanism extends GuiContainer implements IGuiWrapper if(tileEntity instanceof ISideConfiguration) { + for(GuiElement element : guiElements) + { + if(element instanceof GuiGauge) + { + int guiWidth = (width - xSize) / 2; + int guiHeight = (height - ySize) / 2; + + if(element.getBounds(guiWidth, guiHeight).contains(xAxis, yAxis)) + { + if(((GuiGauge)element).color != null) + { + drawCreativeTabHoveringText(((GuiGauge)element).color.getName(), xAxis, yAxis); + } + } + } + } + Slot hovering = null; for(int i = 0; i < inventorySlots.inventorySlots.size(); i++) diff --git a/src/main/java/mekanism/client/gui/GuiSideConfiguration.java b/src/main/java/mekanism/client/gui/GuiSideConfiguration.java index bf1bd0d00..5f8ea466c 100644 --- a/src/main/java/mekanism/client/gui/GuiSideConfiguration.java +++ b/src/main/java/mekanism/client/gui/GuiSideConfiguration.java @@ -6,6 +6,8 @@ import java.util.Map; import mekanism.api.Coord4D; import mekanism.api.EnumColor; import mekanism.api.transmitters.TransmissionType; +import mekanism.client.gui.element.GuiConfigTypeTab; +import mekanism.client.gui.element.GuiElement; import mekanism.client.render.MekanismRenderer; import mekanism.client.sound.SoundHandler; import mekanism.common.Mekanism; @@ -24,7 +26,6 @@ import net.minecraft.tileentity.TileEntity; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -35,14 +36,25 @@ public class GuiSideConfiguration extends GuiMekanism public Map slotPosMap = new HashMap(); public ISideConfiguration configurable; + + public TransmissionType currentType; public GuiSideConfiguration(EntityPlayer player, ISideConfiguration tile) { - super(new ContainerNull(player, (TileEntityContainerBlock)tile)); + super((TileEntityContainerBlock)tile, new ContainerNull(player, (TileEntityContainerBlock)tile)); ySize = 95; configurable = tile; + + for(TransmissionType type : configurable.getConfig().transmissions) + { + guiElements.add(new GuiConfigTypeTab(this, (TileEntity)configurable, type, MekanismUtils.getResource(ResourceType.GUI, "GuiConfiguration.png"))); + } + + currentType = getTopTransmission(); + + updateTabs(); slotPosMap.put(0, new GuiPos(81, 64)); slotPosMap.put(1, new GuiPos(81, 34)); @@ -51,6 +63,34 @@ public class GuiSideConfiguration extends GuiMekanism slotPosMap.put(4, new GuiPos(66, 49)); slotPosMap.put(5, new GuiPos(96, 49)); } + + public TransmissionType getTopTransmission() + { + return configurable.getConfig().transmissions.get(0); + } + + public void updateTabs() + { + int rendered = 0; + + for(GuiElement element : guiElements) + { + if(element instanceof GuiConfigTypeTab) + { + GuiConfigTypeTab tab = (GuiConfigTypeTab)element; + + tab.visible = currentType != tab.transmission; + + if(tab.visible) + { + tab.left = rendered >= 0 && rendered <= 2; + tab.setY(2+((rendered%3)*(26+2))); + } + + rendered++; + } + } + } @Override protected void drawGuiContainerBackgroundLayer(float partialTick, int mouseX, int mouseY) @@ -91,7 +131,7 @@ public class GuiSideConfiguration extends GuiMekanism int x = slotPosMap.get(i).xPos; int y = slotPosMap.get(i).yPos; - SideData data = configurable.getConfig().getOutput(TransmissionType.ITEM, i); + SideData data = configurable.getConfig().getOutput(currentType, i); if(data.color != EnumColor.GREY) { @@ -116,9 +156,9 @@ public class GuiSideConfiguration extends GuiMekanism int xAxis = (mouseX - (width - xSize) / 2); int yAxis = (mouseY - (height - ySize) / 2); - String title = MekanismUtils.localize("gui.configuration.side"); + String title = currentType.localize() + " " + MekanismUtils.localize("gui.config"); fontRendererObj.drawString(title, (xSize/2)-(fontRendererObj.getStringWidth(title)/2), 5, 0x404040); - fontRendererObj.drawString(MekanismUtils.localize("gui.eject") + ": " + (configurable.getConfig().isEjecting(TransmissionType.ITEM) ? "On" : "Off"), 53, 17, 0x00CD00); + fontRendererObj.drawString(MekanismUtils.localize("gui.eject") + ": " + (configurable.getConfig().isEjecting(currentType) ? "On" : "Off"), 53, 17, 0x00CD00); fontRendererObj.drawString(MekanismUtils.localize("gui.slots"), 77, 81, 0x787878); for(int i = 0; i < slotPosMap.size(); i++) @@ -126,7 +166,7 @@ public class GuiSideConfiguration extends GuiMekanism int x = slotPosMap.get(i).xPos; int y = slotPosMap.get(i).yPos; - SideData data = configurable.getConfig().getOutput(TransmissionType.ITEM, i); + SideData data = configurable.getConfig().getOutput(currentType, i); if(xAxis >= x && xAxis <= x+14 && yAxis >= y && yAxis <= y+14) { @@ -177,7 +217,7 @@ public class GuiSideConfiguration extends GuiMekanism if(xAxis >= 156 && xAxis <= 170 && yAxis >= 6 && yAxis <= 20) { SoundHandler.playSound("gui.button.press"); - Mekanism.packetHandler.sendToServer(new ConfigurationUpdateMessage(ConfigurationPacket.EJECT, Coord4D.get(tile), 0, 0, TransmissionType.ITEM)); + Mekanism.packetHandler.sendToServer(new ConfigurationUpdateMessage(ConfigurationPacket.EJECT, Coord4D.get(tile), 0, 0, currentType)); } } @@ -194,7 +234,7 @@ public class GuiSideConfiguration extends GuiMekanism if(xAxis >= x && xAxis <= x+14 && yAxis >= y && yAxis <= y+14) { SoundHandler.playSound("gui.button.press"); - Mekanism.packetHandler.sendToServer(new ConfigurationUpdateMessage(ConfigurationPacket.SIDE_DATA, Coord4D.get(tile), button, i, TransmissionType.ITEM)); + Mekanism.packetHandler.sendToServer(new ConfigurationUpdateMessage(ConfigurationPacket.SIDE_DATA, Coord4D.get(tile), button, i, currentType)); } } } diff --git a/src/main/java/mekanism/client/gui/GuiTransporterConfig.java b/src/main/java/mekanism/client/gui/GuiTransporterConfig.java index 3bd63c1f7..b33522d8d 100644 --- a/src/main/java/mekanism/client/gui/GuiTransporterConfig.java +++ b/src/main/java/mekanism/client/gui/GuiTransporterConfig.java @@ -38,7 +38,7 @@ public class GuiTransporterConfig extends GuiMekanism public GuiTransporterConfig(EntityPlayer player, ISideConfiguration tile) { - super(new ContainerNull(player, (TileEntityContainerBlock)tile)); + super((TileEntityContainerBlock)tile, new ContainerNull(player, (TileEntityContainerBlock)tile)); ySize = 95; diff --git a/src/main/java/mekanism/client/gui/element/GuiConfigTypeTab.java b/src/main/java/mekanism/client/gui/element/GuiConfigTypeTab.java index b50311fd4..69aa43e87 100644 --- a/src/main/java/mekanism/client/gui/element/GuiConfigTypeTab.java +++ b/src/main/java/mekanism/client/gui/element/GuiConfigTypeTab.java @@ -1,5 +1,122 @@ package mekanism.client.gui.element; -public class GuiConfigTypeTab { +import mekanism.api.transmitters.TransmissionType; +import mekanism.client.gui.GuiSideConfiguration; +import mekanism.client.gui.IGuiWrapper; +import mekanism.client.sound.SoundHandler; +import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import codechicken.lib.vec.Rectangle4i; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +@SideOnly(Side.CLIENT) +public class GuiConfigTypeTab extends GuiElement +{ + private TileEntity tileEntity; + public TransmissionType transmission; + + private int yPos; + + public boolean visible; + public boolean left; + + public GuiConfigTypeTab(IGuiWrapper gui, TileEntity tile, TransmissionType type, ResourceLocation def) + { + super(getResource(type), gui, def); + + tileEntity = tile; + transmission = type; + } + + private static ResourceLocation getResource(TransmissionType t) + { + return MekanismUtils.getResource(ResourceType.GUI_ELEMENT, "Gui" + t.getTransmission() + "Tab.png"); + } + + public void setY(int y) + { + yPos = y; + } + + @Override + public Rectangle4i getBounds(int guiWidth, int guiHeight) + { + return new Rectangle4i(guiWidth + getLeftBound(false)-4, guiHeight + yPos, 26, 26); + } + + @Override + public void renderBackground(int xAxis, int yAxis, int guiWidth, int guiHeight) + { + if(!visible) + { + return; + } + + mc.renderEngine.bindTexture(RESOURCE); + + guiObj.drawTexturedRect(guiWidth + getLeftBound(false)-4, guiHeight + yPos, 0, left ? 0 : 26, 26, 26); + + if(xAxis >= getLeftBound(true) && xAxis <= getRightBound(true) && yAxis >= yPos+4 && yAxis <= yPos+22) + { + guiObj.drawTexturedRect(guiWidth + getLeftBound(true), guiHeight + yPos+4, 26, 0, 18, 18); + } + else { + guiObj.drawTexturedRect(guiWidth + getLeftBound(true), guiHeight + yPos+4, 26, 18, 18, 18); + } + + mc.renderEngine.bindTexture(defaultLocation); + } + + @Override + public void renderForeground(int xAxis, int yAxis) + { + if(!visible) + { + return; + } + + mc.renderEngine.bindTexture(RESOURCE); + + if(xAxis >= getLeftBound(true) && xAxis <= getRightBound(true) && yAxis >= yPos+4 && yAxis <= yPos+22) + { + displayTooltip(transmission.localize(), xAxis, yAxis); + } + + mc.renderEngine.bindTexture(defaultLocation); + } + + public int getLeftBound(boolean adjust) + { + return left ? -21+(adjust ? 1 : 0) : 179-(adjust ? 1 : 0); + } + + public int getRightBound(boolean adjust) + { + return left ? -3+(adjust ? 1 : 0) : 197-(adjust ? 1 : 0); + } + + @Override + public void preMouseClicked(int xAxis, int yAxis, int button) {} + + @Override + public void mouseClicked(int xAxis, int yAxis, int button) + { + if(!visible) + { + return; + } + + if(button == 0) + { + if(xAxis >= getLeftBound(true) && xAxis <= getRightBound(true) && yAxis >= yPos+4 && yAxis <= yPos+22) + { + ((GuiSideConfiguration)guiObj).currentType = transmission; + ((GuiSideConfiguration)guiObj).updateTabs(); + SoundHandler.playSound("gui.button.press"); + } + } + } } diff --git a/src/main/java/mekanism/client/gui/element/GuiGauge.java b/src/main/java/mekanism/client/gui/element/GuiGauge.java index c92bf1d79..ac0e4f694 100644 --- a/src/main/java/mekanism/client/gui/element/GuiGauge.java +++ b/src/main/java/mekanism/client/gui/element/GuiGauge.java @@ -1,11 +1,10 @@ package mekanism.client.gui.element; +import mekanism.api.EnumColor; import mekanism.client.gui.IGuiWrapper; import mekanism.client.render.MekanismRenderer; -import mekanism.common.base.IDropperHandler; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; import codechicken.lib.vec.Rectangle4i; @@ -14,10 +13,14 @@ public abstract class GuiGauge extends GuiElement { protected int xLocation; protected int yLocation; + + protected int texX; + protected int texY; protected int width; protected int height; + public EnumColor color; protected int number; protected boolean dummy; @@ -32,6 +35,11 @@ public abstract class GuiGauge extends GuiElement width = type.width; height = type.height; + + texX = type.texX; + texY = type.texY; + + color = type.color; number = type.number; } @@ -46,7 +54,7 @@ public abstract class GuiGauge extends GuiElement { mc.renderEngine.bindTexture(RESOURCE); - guiObj.drawTexturedRect(guiWidth + xLocation, guiHeight + yLocation, 0, 0, width, height); + guiObj.drawTexturedRect(guiWidth + xLocation, guiHeight + yLocation, texX, texY, width, height); if(!dummy) { @@ -134,19 +142,37 @@ public abstract class GuiGauge extends GuiElement public static enum Type { - STANDARD(18, 60, 1, "GuiGaugeStandard.png"), - WIDE(66, 50, 4, "GuiGaugeWide.png"), - SMALL(18, 30, 1, "GuiGaugeSmall.png"); + STANDARD(null, 18, 60, 0, 0, 1, "GuiGaugeStandard.png"), + STANDARD_YELLOW(EnumColor.YELLOW, 18, 60, 0, 60, 1, "GuiGaugeStandard.png"), + STANDARD_RED(EnumColor.DARK_RED, 18, 60, 0, 120, 1, "GuiGaugeStandard.png"), + STANDARD_ORANGE(EnumColor.ORANGE, 18, 60, 0, 180, 1, "GuiGaugeStandard.png"), + STANDARD_BLUE(EnumColor.DARK_BLUE, 18, 60, 0, 240, 1, "GuiGaugeStandard.png"), + WIDE(null, 66, 50, 0, 0, 4, "GuiGaugeWide.png"), + WIDE_YELLOW(EnumColor.YELLOW, 66, 50, 0, 50, 4, "GuiGaugeWide.png"), + WIDE_RED(EnumColor.DARK_RED, 66, 50, 0, 100, 4, "GuiGaugeWide.png"), + WIDE_ORANGE(EnumColor.ORANGE, 66, 50, 0, 150, 4, "GuiGaugeWide.png"), + WIDE_BLUE(EnumColor.DARK_BLUE, 66, 50, 0, 200, 4, "GuiGaugeWide.png"), + SMALL(null, 18, 30, 0, 0, 1, "GuiGaugeSmall.png"), + SMALL_YELLOW(EnumColor.YELLOW, 18, 30, 0, 30, 1, "GuiGaugeSmall.png"), + SMALL_RED(EnumColor.DARK_RED, 18, 30, 0, 60, 1, "GuiGaugeSmall.png"), + SMALL_ORANGE(EnumColor.ORANGE, 18, 30, 0, 90, 1, "GuiGaugeSmall.png"), + SMALL_BLUE(EnumColor.DARK_BLUE, 18, 30, 0, 120, 1, "GuiGaugeSmall.png"); + public EnumColor color; public int width; public int height; + public int texX; + public int texY; public int number; public String textureLocation; - private Type(int w, int h, int n, String t) + private Type(EnumColor c, int w, int h, int tx, int ty, int n, String t) { + color = c; width = w; height = h; + texX = tx; + texY = ty; number = n; textureLocation = t; } diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiEnergyTab.png b/src/main/resources/assets/mekanism/gui/elements/GuiEnergyTab.png index 01f8170f3..2893b0927 100644 Binary files a/src/main/resources/assets/mekanism/gui/elements/GuiEnergyTab.png and b/src/main/resources/assets/mekanism/gui/elements/GuiEnergyTab.png differ diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiFluidsTab.png b/src/main/resources/assets/mekanism/gui/elements/GuiFluidsTab.png index 2a1c1ad64..d8104fda2 100644 Binary files a/src/main/resources/assets/mekanism/gui/elements/GuiFluidsTab.png and b/src/main/resources/assets/mekanism/gui/elements/GuiFluidsTab.png differ diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiGasesTab.png b/src/main/resources/assets/mekanism/gui/elements/GuiGasesTab.png index 2bac68734..09f62b719 100644 Binary files a/src/main/resources/assets/mekanism/gui/elements/GuiGasesTab.png and b/src/main/resources/assets/mekanism/gui/elements/GuiGasesTab.png differ diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiGaugeSmall.png b/src/main/resources/assets/mekanism/gui/elements/GuiGaugeSmall.png index 5a1a55008..c420890e6 100644 Binary files a/src/main/resources/assets/mekanism/gui/elements/GuiGaugeSmall.png and b/src/main/resources/assets/mekanism/gui/elements/GuiGaugeSmall.png differ diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiGaugeStandard.png b/src/main/resources/assets/mekanism/gui/elements/GuiGaugeStandard.png index 050910ebd..b94826636 100644 Binary files a/src/main/resources/assets/mekanism/gui/elements/GuiGaugeStandard.png and b/src/main/resources/assets/mekanism/gui/elements/GuiGaugeStandard.png differ diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiGaugeWide.png b/src/main/resources/assets/mekanism/gui/elements/GuiGaugeWide.png index e6f6415d1..21b4227de 100644 Binary files a/src/main/resources/assets/mekanism/gui/elements/GuiGaugeWide.png and b/src/main/resources/assets/mekanism/gui/elements/GuiGaugeWide.png differ diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiHeatTab.png b/src/main/resources/assets/mekanism/gui/elements/GuiHeatTab.png index 691a64f26..eaeb1fb30 100644 Binary files a/src/main/resources/assets/mekanism/gui/elements/GuiHeatTab.png and b/src/main/resources/assets/mekanism/gui/elements/GuiHeatTab.png differ diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiItemsTab.png b/src/main/resources/assets/mekanism/gui/elements/GuiItemsTab.png index 795251c4b..e427834bc 100644 Binary files a/src/main/resources/assets/mekanism/gui/elements/GuiItemsTab.png and b/src/main/resources/assets/mekanism/gui/elements/GuiItemsTab.png differ diff --git a/src/main/resources/assets/mekanism/lang/en_US.lang b/src/main/resources/assets/mekanism/lang/en_US.lang index 1a9b579b7..8e16daa7f 100644 --- a/src/main/resources/assets/mekanism/lang/en_US.lang +++ b/src/main/resources/assets/mekanism/lang/en_US.lang @@ -448,6 +448,7 @@ gui.solarEvaporationController.short=Solar E. Controller gui.dictionary.noKey=No key. gui.configuration=Configuration +gui.config=Config gui.configuration.side=Side Config gui.configuration.transporter=Transporter Config gui.configuration.strictInput=Strict Input