diff options
| author | Draknyte1 <Draknyte1@hotmail.com> | 2016-01-20 14:24:34 +1000 |
|---|---|---|
| committer | Draknyte1 <Draknyte1@hotmail.com> | 2016-01-20 14:24:34 +1000 |
| commit | 869c206c4fcc8001bd2e1d66f704290331813835 (patch) | |
| tree | 96735ce8fe4665e2759c3374221d6f06f4527df2 /src/Java/binnie/craftgui/minecraft/control | |
| parent | ec2c72827f01dd4bb2174137f1ab162f9ddaab62 (diff) | |
| download | GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.gz GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.bz2 GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.zip | |
Initial Commit
Diffstat (limited to 'src/Java/binnie/craftgui/minecraft/control')
21 files changed, 1661 insertions, 0 deletions
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlEnergyBar.java b/src/Java/binnie/craftgui/minecraft/control/ControlEnergyBar.java new file mode 100644 index 0000000000..0337b154c1 --- /dev/null +++ b/src/Java/binnie/craftgui/minecraft/control/ControlEnergyBar.java @@ -0,0 +1,161 @@ +package binnie.craftgui.minecraft.control; + +import binnie.core.machines.Machine; +import binnie.core.machines.TileEntityMachine; +import binnie.core.machines.power.IPoweredMachine; +import binnie.core.machines.power.IProcess; +import binnie.core.machines.power.PowerInfo; +import binnie.craftgui.controls.core.Control; +import binnie.craftgui.core.Attribute; +import binnie.craftgui.core.CraftGUI; +import binnie.craftgui.core.ITooltip; +import binnie.craftgui.core.IWidget; +import binnie.craftgui.core.Tooltip; +import binnie.craftgui.core.Tooltip.Type; +import binnie.craftgui.core.geometry.IArea; +import binnie.craftgui.core.geometry.IPoint; +import binnie.craftgui.core.geometry.Position; +import binnie.craftgui.core.renderer.Renderer; +import binnie.craftgui.minecraft.ContainerCraftGUI; +import binnie.craftgui.minecraft.GuiCraftGUI; +import binnie.craftgui.minecraft.MinecraftTooltip; +import binnie.craftgui.minecraft.MinecraftTooltip.Type; +import binnie.craftgui.minecraft.Window; +import binnie.craftgui.resource.minecraft.CraftGUITexture; +import net.minecraft.inventory.IInventory; +import org.lwjgl.opengl.GL11; + +public class ControlEnergyBar + extends Control + implements ITooltip +{ + public static boolean isError; + private Position direction; + + public ControlEnergyBar(IWidget parent, int x, int y, int width, int height, Position direction) + { + super(parent, x, y, width, height); + this.direction = direction; + addAttribute(Attribute.MouseOver); + } + + public IPoweredMachine getClientPower() + { + IInventory inventory = Window.get(this).getInventory(); + TileEntityMachine machine = (TileEntityMachine)((inventory instanceof TileEntityMachine) ? inventory : null); + if (machine == null) { + return null; + } + IPoweredMachine clientPower = (IPoweredMachine)machine.getMachine().getInterface(IPoweredMachine.class); + return clientPower; + } + + public float getPercentage() + { + float percentage = 100.0F * getStoredEnergy() / getMaxEnergy(); + if (percentage > 100.0F) { + percentage = 100.0F; + } + return percentage; + } + + private float getStoredEnergy() + { + return Window.get(this).getContainer().getPowerInfo().getStoredEnergy(); + } + + private float getMaxEnergy() + { + return Window.get(this).getContainer().getPowerInfo().getMaxEnergy(); + } + + public void getTooltip(Tooltip tooltip) + { + tooltip.add((int)getPercentage() + "% charged"); + + tooltip.add(getStoredEnergy() + "/" + getMaxEnergy() + " RF"); + } + + public void getHelpTooltip(Tooltip tooltip) + { + tooltip.add("Energy Bar"); + tooltip.add("Current: " + getStoredEnergy() + " RF (" + (int)getPercentage() + "%)"); + tooltip.add("Capacity: " + getMaxEnergy() + " RF"); + + IProcess process = (IProcess)Machine.getInterface(IProcess.class, Window.get(this).getInventory()); + if (process != null) { + tooltip.add("Usage: " + (int)process.getEnergyPerTick() + " RF"); + } + } + + public void onRenderBackground() + { + CraftGUI.Render.texture(CraftGUITexture.EnergyBarBack, getArea()); + + float percentage = getPercentage() / 100.0F; + + CraftGUI.Render.colour(getColourFromPercentage(percentage)); + + IArea area = getArea(); + switch (1.$SwitchMap$binnie$craftgui$core$geometry$Position[this.direction.ordinal()]) + { + case 1: + case 2: + float height = area.size().y() * percentage; + area.setSize(new IPoint(area.size().x(), height)); + + break; + case 3: + case 4: + float width = area.size().x() * percentage; + area.setSize(new IPoint(width, area.size().y())); + } + if ((isMouseOver()) && (Window.get(this).getGui().isHelpMode())) + { + int c = -1442840576 + MinecraftTooltip.getOutline(Tooltip.Type.Help); + CraftGUI.Render.gradientRect(getArea().inset(1), c, c); + } + else if (isError) + { + int c = -1442840576 + MinecraftTooltip.getOutline(MinecraftTooltip.Type.Error); + CraftGUI.Render.gradientRect(getArea().inset(1), c, c); + } + CraftGUI.Render.texture(CraftGUITexture.EnergyBarGlow, area); + + GL11.glColor3d(1.0D, 1.0D, 1.0D); + + CraftGUI.Render.texture(CraftGUITexture.EnergyBarGlass, getArea()); + } + + public void onRenderForeground() + { + if ((isMouseOver()) && (Window.get(this).getGui().isHelpMode())) + { + IArea area = getArea(); + CraftGUI.Render.colour(MinecraftTooltip.getOutline(Tooltip.Type.Help)); + CraftGUI.Render.texture(CraftGUITexture.Outline, area.outset(1)); + } + else if (isError) + { + IArea area = getArea(); + CraftGUI.Render.colour(MinecraftTooltip.getOutline(MinecraftTooltip.Type.Error)); + CraftGUI.Render.texture(CraftGUITexture.Outline, area.outset(1)); + } + } + + public int getColourFromPercentage(float percentage) + { + int colour = 16777215; + if (percentage > 0.5D) + { + int r = (int)((1.0D - 2.0D * (percentage - 0.5D)) * 255.0D); + colour = (r << 16) + 65280; + } + else + { + int g = (int)(255.0F * (2.0F * percentage)); + colour = 16711680 + (g << 8); + } + return colour; + } +} diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlErrorState.java b/src/Java/binnie/craftgui/minecraft/control/ControlErrorState.java new file mode 100644 index 0000000000..6027371297 --- /dev/null +++ b/src/Java/binnie/craftgui/minecraft/control/ControlErrorState.java @@ -0,0 +1,113 @@ +package binnie.craftgui.minecraft.control; + +import binnie.core.machines.power.ErrorState; +import binnie.craftgui.controls.core.Control; +import binnie.craftgui.core.Attribute; +import binnie.craftgui.core.CraftGUI; +import binnie.craftgui.core.ITooltip; +import binnie.craftgui.core.IWidget; +import binnie.craftgui.core.Tooltip; +import binnie.craftgui.core.geometry.IPoint; +import binnie.craftgui.core.renderer.Renderer; +import binnie.craftgui.minecraft.ContainerCraftGUI; +import binnie.craftgui.minecraft.CustomSlot; +import binnie.craftgui.minecraft.MinecraftTooltip; +import binnie.craftgui.minecraft.MinecraftTooltip.Type; +import binnie.craftgui.minecraft.Window; +import binnie.craftgui.resource.minecraft.CraftGUITexture; +import java.util.List; +import java.util.Map; +import net.minecraft.entity.player.InventoryPlayer; + +public class ControlErrorState + extends Control + implements ITooltip +{ + private ErrorState errorState; + + public void onRenderBackground() + { + Object texture = CraftGUITexture.StateWarning; + if (this.errorState == null) { + texture = CraftGUITexture.StateNone; + } else if (this.type == 0) { + texture = CraftGUITexture.StateError; + } + CraftGUI.Render.texture(texture, IPoint.ZERO); + + super.onRenderBackground(); + } + + public ErrorState getError() + { + return Window.get(this).getContainer().getErrorState(); + } + + public final void onUpdateClient() + { + this.errorState = getError(); + this.type = Window.get(this).getContainer().getErrorType(); + + ((List)ControlSlot.highlighting.get(EnumHighlighting.Error)).clear(); + ((List)ControlSlot.highlighting.get(EnumHighlighting.Warning)).clear(); + ControlLiquidTank.tankError.clear(); + ControlEnergyBar.isError = false; + if ((!isMouseOver()) || (this.errorState == null)) { + return; + } + ControlEnergyBar.isError = this.errorState.isPowerError(); + if (this.errorState.isItemError()) { + for (int slot : this.errorState.getData()) + { + int id = -1; + for (CustomSlot cslot : Window.get(this).getContainer().getCustomSlots()) { + if ((!(cslot.inventory instanceof InventoryPlayer)) && (cslot.getSlotIndex() == slot)) { + id = cslot.slotNumber; + } + } + if (id >= 0) { + if (this.type == 0) { + ((List)ControlSlot.highlighting.get(EnumHighlighting.Error)).add(Integer.valueOf(id)); + } else { + ((List)ControlSlot.highlighting.get(EnumHighlighting.Warning)).add(Integer.valueOf(id)); + } + } + } + } + if (this.errorState.isTankError()) { + for (int slot : this.errorState.getData()) { + ControlLiquidTank.tankError.add(Integer.valueOf(slot)); + } + } + } + + private int type = 0; + + public ControlErrorState(IWidget parent, float x, float y) + { + super(parent, x, y, 16.0F, 16.0F); + addAttribute(Attribute.MouseOver); + } + + public void getTooltip(Tooltip tooltipOrig) + { + MinecraftTooltip tooltip = (MinecraftTooltip)tooltipOrig; + if (this.errorState != null) + { + if (this.type == 0) { + tooltip.setType(MinecraftTooltip.Type.Error); + } else { + tooltip.setType(MinecraftTooltip.Type.Warning); + } + tooltip.add(this.errorState.toString()); + if (this.errorState.getTooltip().length() > 0) { + tooltip.add(this.errorState.getTooltip()); + } + } + } + + public ErrorState getErrorState() + { + return this.errorState; + } +} diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlHelp.java b/src/Java/binnie/craftgui/minecraft/control/ControlHelp.java new file mode 100644 index 0000000000..d2027747f2 --- /dev/null +++ b/src/Java/binnie/craftgui/minecraft/control/ControlHelp.java @@ -0,0 +1,41 @@ +package binnie.craftgui.minecraft.control; + +import binnie.craftgui.controls.core.Control; +import binnie.craftgui.core.Attribute; +import binnie.craftgui.core.CraftGUI; +import binnie.craftgui.core.ITooltip; +import binnie.craftgui.core.IWidget; +import binnie.craftgui.core.Tooltip; +import binnie.craftgui.core.Tooltip.Type; +import binnie.craftgui.core.renderer.Renderer; +import binnie.craftgui.resource.minecraft.CraftGUITexture; + +public class ControlHelp + extends Control + implements ITooltip +{ + public ControlHelp(IWidget parent, float x, float y) + { + super(parent, x, y, 16.0F, 16.0F); + addAttribute(Attribute.MouseOver); + } + + public void onRenderBackground() + { + CraftGUI.Render.texture(CraftGUITexture.HelpButton, getArea()); + } + + public void getTooltip(Tooltip tooltip) + { + tooltip.setType(Tooltip.Type.Help); + tooltip.add("Help"); + tooltip.add("To activate help tooltips,"); + tooltip.add("hold down the tab key and"); + tooltip.add("mouse over controls."); + } + + public void getHelpTooltip(Tooltip tooltip) + { + getTooltip(tooltip); + } +} diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlIconDisplay.java b/src/Java/binnie/craftgui/minecraft/control/ControlIconDisplay.java new file mode 100644 index 0000000000..071e8ee888 --- /dev/null +++ b/src/Java/binnie/craftgui/minecraft/control/ControlIconDisplay.java @@ -0,0 +1,25 @@ +package binnie.craftgui.minecraft.control; + +import binnie.craftgui.controls.core.Control; +import binnie.craftgui.core.CraftGUI; +import binnie.craftgui.core.IWidget; +import binnie.craftgui.core.geometry.IPoint; +import binnie.craftgui.core.renderer.Renderer; +import net.minecraft.util.IIcon; + +public class ControlIconDisplay + extends Control +{ + private IIcon icon = null; + + public ControlIconDisplay(IWidget parent, float x, float y, IIcon icon) + { + super(parent, x, y, 16.0F, 16.0F); + this.icon = icon; + } + + public void onRenderForeground() + { + CraftGUI.Render.iconItem(IPoint.ZERO, this.icon); + } +} diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlImage.java b/src/Java/binnie/craftgui/minecraft/control/ControlImage.java new file mode 100644 index 0000000000..0d08626852 --- /dev/null +++ b/src/Java/binnie/craftgui/minecraft/control/ControlImage.java @@ -0,0 +1,25 @@ +package binnie.craftgui.minecraft.control; + +import binnie.craftgui.controls.core.Control; +import binnie.craftgui.core.CraftGUI; +import binnie.craftgui.core.IWidget; +import binnie.craftgui.core.geometry.IPoint; +import binnie.craftgui.core.renderer.Renderer; +import binnie.craftgui.resource.Texture; + +public class ControlImage + extends Control +{ + private Object key = null; + + public ControlImage(IWidget parent, float x, float y, Texture text) + { + super(parent, x, y, text.w(), text.h()); + this.key = text; + } + + public void onRenderForeground() + { + CraftGUI.Render.texture(this.key, IPoint.ZERO); + } +} diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlInfo.java b/src/Java/binnie/craftgui/minecraft/control/ControlInfo.java new file mode 100644 index 0000000000..8d9c8e95b6 --- /dev/null +++ b/src/Java/binnie/craftgui/minecraft/control/ControlInfo.java @@ -0,0 +1,38 @@ +package binnie.craftgui.minecraft.control; + +import binnie.craftgui.controls.core.Control; +import binnie.craftgui.core.Attribute; +import binnie.craftgui.core.CraftGUI; +import binnie.craftgui.core.ITooltip; +import binnie.craftgui.core.IWidget; +import binnie.craftgui.core.Tooltip; +import binnie.craftgui.core.Tooltip.Type; +import binnie.craftgui.core.renderer.Renderer; +import binnie.craftgui.resource.minecraft.CraftGUITexture; + +public class ControlInfo + extends Control + implements ITooltip +{ + private String info; + + public ControlInfo(IWidget parent, float x, float y, String info) + { + super(parent, x, y, 16.0F, 16.0F); + addAttribute(Attribute.MouseOver); + this.info = info; + } + + public void onRenderBackground() + { + CraftGUI.Render.texture(CraftGUITexture.InfoButton, getArea()); + } + + public void getTooltip(Tooltip tooltip) + { + tooltip.setType(Tooltip.Type.Information); + tooltip.add("Info"); + tooltip.add(this.info); + tooltip.setMaxWidth(200); + } +} diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlItemDisplay.java b/src/Java/binnie/craftgui/minecraft/control/ControlItemDisplay.java new file mode 100644 index 0000000000..8db438bcc3 --- /dev/null +++ b/src/Java/binnie/craftgui/minecraft/control/ControlItemDisplay.java @@ -0,0 +1,98 @@ +package binnie.craftgui.minecraft.control; + +import binnie.core.BinnieCore; +import binnie.core.proxy.BinnieProxy; +import binnie.craftgui.controls.core.Control; +import binnie.craftgui.core.Attribute; +import binnie.craftgui.core.CraftGUI; +import binnie.craftgui.core.ITooltip; +import binnie.craftgui.core.ITopLevelWidget; +import binnie.craftgui.core.IWidget; +import binnie.craftgui.core.Tooltip; +import binnie.craftgui.core.geometry.IPoint; +import binnie.craftgui.core.renderer.Renderer; +import binnie.craftgui.minecraft.Window; +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import org.lwjgl.opengl.GL11; + +public class ControlItemDisplay + extends Control + implements ITooltip +{ + private ItemStack itemStack = null; + public boolean hastooltip = false; + + public void setTooltip() + { + this.hastooltip = true; + addAttribute(Attribute.MouseOver); + } + + public ControlItemDisplay(IWidget parent, float x, float y) + { + this(parent, x, y, 16.0F); + } + + public ControlItemDisplay(IWidget parent, float f, float y, ItemStack stack, boolean tooltip) + { + this(parent, f, y, 16.0F); + setItemStack(stack); + if (tooltip) { + setTooltip(); + } + } + + public ControlItemDisplay(IWidget parent, float x, float y, float size) + { + super(parent, x, y, size, size); + } + + public void onRenderBackground() + { + IPoint relativeToWindow = getAbsolutePosition().sub(getSuperParent().getPosition()); + if ((relativeToWindow.x() > Window.get(this).getSize().x() + 100.0F) || (relativeToWindow.y() > Window.get(this).getSize().y() + 100.0F)) { + return; + } + if (this.itemStack != null) { + if (getSize().x() != 16.0F) + { + GL11.glPushMatrix(); + float scale = getSize().x() / 16.0F; + GL11.glScalef(scale, scale, 1.0F); + BinnieCore.proxy.getMinecraftInstance();float phase = (float)Minecraft.getSystemTime() / 20.0F; + CraftGUI.Render.item(IPoint.ZERO, this.itemStack, this.rotating); + GL11.glPopMatrix(); + } + else + { + CraftGUI.Render.item(IPoint.ZERO, this.itemStack, this.rotating); + } + } + } + + public void setItemStack(ItemStack itemStack) + { + this.itemStack = itemStack; + } + + public ItemStack getItemStack() + { + return this.itemStack; + } + + public void getTooltip(Tooltip tooltip) + { + if ((this.hastooltip) && (this.itemStack != null)) { + tooltip.add(this.itemStack.getTooltip(((Window)getSuperParent()).getPlayer(), false)); + } + super.getTooltip(tooltip); + } + + private boolean rotating = false; + + public void setRotating() + { + this.rotating = true; + } +} diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlLiquidTank.java b/src/Java/binnie/craftgui/minecraft/control/ControlLiquidTank.java new file mode 100644 index 0000000000..d69c61136d --- /dev/null +++ b/src/Java/binnie/craftgui/minecraft/control/ControlLiquidTank.java @@ -0,0 +1,223 @@ +package binnie.craftgui.minecraft.control; + +import binnie.core.BinnieCore; +import binnie.core.machines.Machine; +import binnie.core.machines.inventory.MachineSide; +import binnie.core.machines.inventory.TankSlot; +import binnie.core.machines.inventory.Validator; +import binnie.core.machines.power.ITankMachine; +import binnie.core.machines.power.TankInfo; +import binnie.core.proxy.BinnieProxy; +import binnie.craftgui.controls.core.Control; +import binnie.craftgui.core.Attribute; +import binnie.craftgui.core.CraftGUI; +import binnie.craftgui.core.ITooltip; +import binnie.craftgui.core.ITopLevelWidget; +import binnie.craftgui.core.IWidget; +import binnie.craftgui.core.Tooltip; +import binnie.craftgui.core.Tooltip.Type; +import binnie.craftgui.core.geometry.IArea; +import binnie.craftgui.core.geometry.IPoint; +import binnie.craftgui.core.renderer.Renderer; +import binnie.craftgui.events.EventMouse.Down; +import binnie.craftgui.events.EventMouse.Down.Handler; +import binnie.craftgui.minecraft.ContainerCraftGUI; +import binnie.craftgui.minecraft.GuiCraftGUI; +import binnie.craftgui.minecraft.MinecraftTooltip; +import binnie.craftgui.minecraft.MinecraftTooltip.Type; +import binnie.craftgui.minecraft.Window; +import binnie.craftgui.resource.minecraft.CraftGUITexture; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.IIcon; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import org.lwjgl.opengl.GL11; + +public class ControlLiquidTank + extends Control + implements ITooltip +{ + public static List<Integer> tankError = new ArrayList(); + private int tankID = 0; + private boolean horizontal = false; + + public ControlLiquidTank(IWidget parent, int x, int y) + { + this(parent, x, y, false); + } + + public ControlLiquidTank(IWidget parent, int x, int y, boolean horizontal) + { + super(parent, x, y, horizontal ? 60.0F : 18.0F, horizontal ? 18.0F : 60.0F); + this.horizontal = horizontal; + addAttribute(Attribute.MouseOver); + + addSelfEventHandler(new EventMouse.Down.Handler() + { + public void onEvent(EventMouse.Down event) + { + if (event.getButton() == 0) + { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setByte("id", (byte)ControlLiquidTank.this.tankID); + Window.get(ControlLiquidTank.this.getWidget()).sendClientAction("tank-click", nbt); + } + } + }); + } + + public void setTankID(int tank) + { + this.tankID = tank; + } + + public TankInfo getTank() + { + return Window.get(this).getContainer().getTankInfo(this.tankID); + } + + public boolean isTankValid() + { + return !getTank().isEmpty(); + } + + public int getTankCapacity() + { + return (int)getTank().getCapacity(); + } + + public void onRenderBackground() + { + CraftGUI.Render.texture(this.horizontal ? CraftGUITexture.HorizontalLiquidTank : CraftGUITexture.LiquidTank, IPoint.ZERO); + if ((isMouseOver()) && (Window.get(this).getGui().isHelpMode())) + { + int c = -1442840576 + MinecraftTooltip.getOutline(Tooltip.Type.Help); + CraftGUI.Render.gradientRect(getArea().inset(1), c, c); + } + else if (tankError.contains(Integer.valueOf(this.tankID))) + { + int c = -1442840576 + MinecraftTooltip.getOutline(MinecraftTooltip.Type.Error); + CraftGUI.Render.gradientRect(getArea().inset(1), c, c); + } + else if (getSuperParent().getMousedOverWidget() == this) + { + if (Window.get(this).getGui().getDraggedItem() != null) { + CraftGUI.Render.gradientRect(getArea().inset(1), -1426089575, -1426089575); + } else { + CraftGUI.Render.gradientRect(getArea().inset(1), -2130706433, -2130706433); + } + } + if (isTankValid()) + { + Object content = null; + + float height = this.horizontal ? 16.0F : 58.0F; + + int squaled = (int)(height * (getTank().getAmount() / getTank().getCapacity())); + + + + int yPos = (int)height + 1; + + Fluid fluid = getTank().liquid.getFluid(); + + int hex = fluid.getColor(getTank().liquid); + + int r = (hex & 0xFF0000) >> 16; + int g = (hex & 0xFF00) >> 8; + int b = hex & 0xFF; + + GL11.glColor4f(r / 255.0F, g / 255.0F, b / 255.0F, 1.0F); + + GL11.glEnable(3042); + + GL11.glBlendFunc(770, 771); + + IPoint pos = getAbsolutePosition(); + IPoint offset = new IPoint(0.0F, height - squaled); + IArea limited = getArea().inset(1); + if (this.horizontal) { + limited.setSize(new IPoint(limited.w() - 1.0F, limited.h())); + } + CraftGUI.Render.limitArea(new IArea(limited.pos().add(pos).add(offset), limited.size().sub(offset))); + + + GL11.glEnable(3089); + + BinnieCore.proxy.bindTexture(TextureMap.locationItemsTexture); + for (int y = 0; y < height; y += 16) { + for (int x = 0; x < (this.horizontal ? 58 : 16); x += 16) + { + IIcon icon = fluid.getIcon(); + + CraftGUI.Render.iconBlock(new IPoint(1 + x, 1 + y), icon); + } + } + GL11.glDisable(3089); + GL11.glDisable(3042); + } + } + + public void onRenderForeground() + { + CraftGUI.Render.texture(this.horizontal ? CraftGUITexture.HorizontalLiquidTankOverlay : CraftGUITexture.LiquidTankOverlay, IPoint.ZERO); + if ((isMouseOver()) && (Window.get(this).getGui().isHelpMode())) + { + IArea area = getArea(); + CraftGUI.Render.colour(MinecraftTooltip.getOutline(Tooltip.Type.Help)); + CraftGUI.Render.texture(CraftGUITexture.Outline, area.outset(1)); + } + if (tankError.contains(Integer.valueOf(this.tankID))) + { + IArea area = getArea(); + CraftGUI.Render.colour(MinecraftTooltip.getOutline(MinecraftTooltip.Type.Error)); + CraftGUI.Render.texture(CraftGUITexture.Outline, area.outset(1)); + } + } + + public void getHelpTooltip(Tooltip tooltip) + { + if (getTankSlot() != null) + { + TankSlot slot = getTankSlot(); + tooltip.add(slot.getName()); + tooltip.add("Capacity: " + getTankCapacity() + " mB"); + tooltip.add("Insert Side: " + MachineSide.asString(slot.getInputSides())); + tooltip.add("Extract Side: " + MachineSide.asString(slot.getOutputSides())); + if (slot.isReadOnly()) { + tooltip.add("Output Only Tank"); + } + tooltip.add("Accepts: " + (slot.getValidator() == null ? "Any Item" : slot.getValidator().getTooltip())); + + return; + } + } + + public void getTooltip(Tooltip tooltip) + { + if (isTankValid()) + { + int percentage = (int)(100.0D * getTank().getAmount() / getTankCapacity()); + + tooltip.add(getTank().getName()); + + tooltip.add(percentage + "% full"); + tooltip.add((int)getTank().getAmount() + " mB"); + + + + return; + } + tooltip.add("Empty"); + } + + private TankSlot getTankSlot() + { + ITankMachine tank = (ITankMachine)Machine.getInterface(ITankMachine.class, Window.get(this).getInventory()); + + return tank != null ? tank.getTankSlot(this.tankID) : null; + } +} diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlMachineProgress.java b/src/Java/binnie/craftgui/minecraft/control/ControlMachineProgress.java new file mode 100644 index 0000000000..f2a64e3e38 --- /dev/null +++ b/src/Java/binnie/craftgui/minecraft/control/ControlMachineProgress.java @@ -0,0 +1,14 @@ +package binnie.craftgui.minecraft.control; + +import binnie.craftgui.core.IWidget; +import binnie.craftgui.core.geometry.Position; +import binnie.craftgui.resource.Texture; + +public class ControlMachineProgress + extends ControlProgress +{ + public ControlMachineProgress(IWidget parent, int x, int y, Texture base, Texture progress, Position dir) + { + super(parent, x, y, base, progress, dir); + } +} diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlPlayerInventory.java b/src/Java/binnie/craftgui/minecraft/control/ControlPlayerInventory.java new file mode 100644 index 0000000000..f15d102789 --- /dev/null +++ b/src/Java/binnie/craftgui/minecraft/control/ControlPlayerInventory.java @@ -0,0 +1,108 @@ +package binnie.craftgui.minecraft.control; + +import binnie.craftgui.controls.core.Control; +import binnie.craftgui.core.IWidget; +import binnie.craftgui.core.geometry.IPoint; +import binnie.craftgui.minecraft.InventoryType; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ControlPlayerInventory + extends Control +{ + private List<ControlSlot> slots = new ArrayList(); + + public ControlPlayerInventory(IWidget parent, boolean wide) + { + super(parent, (int)(parent.getSize().x() / 2.0F) - (wide ? 110 : 81), (int)parent.getSize().y() - (wide ? 54 : 76) - 12, wide ? 'Ü' : '¢', wide ? 54 : 76); + for (int row = 0; row < 3; row++) { + for (int column = 0; column < 9; column++) + { + ControlSlot slot = new ControlSlot(this, (wide ? 58 : 0) + column * 18, row * 18); + this.slots.add(slot); + } + } + if (wide) { + for (int i1 = 0; i1 < 9; i1++) + { + ControlSlot slot = new ControlSlot(this, i1 % 3 * 18, i1 / 3 * 18); + this.slots.add(slot); + } + } else { + for (int i1 = 0; i1 < 9; i1++) + { + ControlSlot slot = new ControlSlot(this, i1 * 18, 58.0F); + this.slots.add(slot); + } + } + create(); + } + + public ControlPlayerInventory(IWidget parent) + { + this(parent, false); + } + + public ControlPlayerInventory(IWidget parent, int x, int y) + { + super(parent, x, y, 54.0F, 220.0F); + for (int row = 0; row < 6; row++) { + for (int column = 0; column < 6; column++) + { + ControlSlot slot = new ControlSlot(this, column * 18, row * 18); + this.slots.add(slot); + } + |
