Just about finished new Side Configuration GUI

This commit is contained in:
Aidan C. Brady 2015-03-07 23:38:20 -05:00
parent 28b209800a
commit 1bff3a93da
14 changed files with 219 additions and 17 deletions

View file

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

View file

@ -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<Integer, GuiPos> slotPosMap = new HashMap<Integer, GuiPos>();
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));
}
}
}

View file

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

View file

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

View file

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 B

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 575 B

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 B

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

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