/**
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
* http://www.mod-buildcraft.com
* <p/>
* BuildCraft is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package buildcraft.factory.gui;
import org.lwjgl.opengl.GL11;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack;
import buildcraft.api.recipes.CraftingResult;
import buildcraft.core.lib.gui.FluidSlot;
import buildcraft.core.lib.gui.GuiAdvancedInterface;
import buildcraft.core.lib.utils.StringUtils;
import buildcraft.factory.TileRefinery;
public class GuiRefinery extends GuiAdvancedInterface {
private static final ResourceLocation TEXTURE = new ResourceLocation("buildcraftfactory:textures/gui/refinery_filter.png");
private final ContainerRefinery container;
public GuiRefinery(InventoryPlayer inventory, TileRefinery refinery) {
super(new ContainerRefinery(inventory, refinery), null, TEXTURE);
xSize = 175;
ySize = 207;
this.container = (ContainerRefinery) this.inventorySlots;
this.slots.add(new FluidSlot(this, 38, 54));
this.slots.add(new FluidSlot(this, 126, 54));
this.slots.add(new FluidSlot(this, 82, 54));
}
@Override
protected void drawGuiContainerForegroundLayer(int par1, int par2) {
String title = StringUtils.localize("tile.refineryBlock.name");
fontRendererObj.drawString(title, getCenteredOffset(title), 6, 0x404040);
fontRendererObj.drawString("->", 63, 59, 0x404040);
fontRendererObj.drawString("<-", 106, 59, 0x404040);
fontRendererObj.drawString(StringUtils.localize("gui.inventory"), 8, (ySize - 96) + 2, 0x404040);
drawTooltipForSlotAt(par1, par2);
}
@Override
protected void drawGuiContainerBackgroundLayer(float f, int x, int y) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.bindTexture(TEXTURE);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
updateSlots();
drawBackgroundSlots(x, y);
}
@Override
protected void mouseClicked(int i, int j, int k) {
super.mouseClicked(i, j, k);
int position = getSlotIndexAtLocation(i, j);
if (position >= 0 && position < 2) {
if (k == 0) {
if (!isShiftKeyDown()) {
FluidStack liquid = FluidContainerRegistry.getFluidForFilledItem(mc.thePlayer.inventory.getItemStack());
if (liquid == null) {
return;
}
container.setFilter(position, liquid.getFluid());
container.refinery.tankManager.get(position).colorRenderCache = liquid.getFluid().getColor(liquid);
} else {
container.setFilter(position, null);
container.refinery.tankManager.get(position).colorRenderCache = 0xFFFFFF;
}
} else {
if (position == 0) {
container.setFilter(position, container.refinery.tanks[0].getFluidType());
} else if (position == 1) {
container.setFilter(position, container.refinery.tanks[1].getFluidType());
}
}
}
}
private void updateSlots() {
Fluid filter0 = container.getFilter(0);
Fluid filter1 = container.getFilter(1);
((FluidSlot) slots.get(0)).fluid = filter0;
((FluidSlot) slots.get(0)).colorRenderCache = container.refinery.tanks[0].colorRenderCache;
((FluidSlot) slots.get(1)).fluid = filter1;
((FluidSlot) slots.get(1)).colorRenderCache = container.refinery.tanks[1].colorRenderCache;
CraftingResult<FluidStack> crafting = container.refinery.craftingResult;
if (crafting != null) {
((FluidSlot) slots.get(2)).fluid = crafting.crafted.getFluid();
((FluidSlot) slots.get(2)).colorRenderCache = crafting.crafted.getFluid().getColor(crafting.crafted);
} else {
((FluidSlot) slots.get(2)).fluid = null;
}
}
}