/*******************************************************************************
* Copyright (c) 2011-2014 SirSengir.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Various Contributors including, but not limited to:
* SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges
******************************************************************************/
package forestry.core.gui.widgets;
import forestry.farming.gui.ContainerFarm;
import net.minecraft.inventory.Container;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraftforge.fluids.FluidStack;
import org.lwjgl.opengl.GL11;
import forestry.api.core.IToolPipette;
import forestry.core.fluids.tanks.StandardTank;
import forestry.core.gui.ContainerForestry;
import forestry.core.gui.ContainerLiquidTanks;
import forestry.core.gui.WidgetManager;
import forestry.core.gui.tooltips.ToolTip;
import forestry.core.proxy.Proxies;
import forestry.core.render.SpriteSheet;
/**
* Slot for liquid tanks
*/
public class TankWidget extends Widget {
protected int overlayTexX = 176;
protected int overlayTexY = 0;
protected int slot = 0;
public TankWidget(WidgetManager manager, int xPos, int yPos, int slot) {
super(manager, xPos, yPos);
this.slot = slot;
this.height = 58;
}
public TankWidget setOverlayOrigin(int x, int y) {
overlayTexX = x;
overlayTexY = y;
return this;
}
public StandardTank getTank() {
Container container = manager.gui.inventorySlots;
if (container instanceof ContainerLiquidTanks)
return ((ContainerLiquidTanks) container).getTank(slot);
else if (container instanceof ContainerFarm)
return ((ContainerFarm) container).getTank(slot);
return null;
}
@Override
public void draw(int startX, int startY) {
if (getTank() == null)
return;
FluidStack contents = getTank().getFluid();
if (contents == null || contents.amount <= 0 || contents.getFluid() == null)
return;
IIcon liquidIcon = contents.getFluid().getIcon(contents);
if (liquidIcon == null)
return;
int squaled = (contents.amount * height) / getTank().getCapacity();
Proxies.common.bindTexture(SpriteSheet.BLOCKS);
int start = 0;
GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0F);
while (true) {
int x = 0;
if (squaled > 16) {
x = 16;
squaled -= 16;
} else {
x = squaled;
squaled = 0;
}
manager.gui.drawTexturedModelRectFromIcon(startX + xPos, startY + yPos + height - x - start, liquidIcon, 16, 16 - (16 - x));
start = start + 16;
if (x == 0 || squaled == 0)
break;
}
Proxies.common.bindTexture(manager.gui.textureFile);
manager.gui.drawTexturedModalRect(startX + xPos, startY + yPos, overlayTexX, overlayTexY, 16, 60);
GL11.glPopAttrib();
}
@Override
public ToolTip getToolTip() {
StandardTank tank = getTank();
if (tank == null)
return null;
return tank.getToolTip();
}
@Override
public void handleMouseClick(int mouseX, int mouseY, int mouseButton) {
ItemStack itemstack = manager.minecraft.thePlayer.inventory.getItemStack();
if (itemstack == null)
return;
Item held = itemstack.getItem();
if (held instanceof IToolPipette && manager.gui.inventorySlots instanceof ContainerLiquidTanks)
((ContainerLiquidTanks) manager.gui.inventorySlots).handlePipetteClick(slot, manager.minecraft.thePlayer);
}
}