GUI work
This commit is contained in:
parent
27d125dc40
commit
c0b470bf71
4 changed files with 169 additions and 5 deletions
|
@ -1,9 +1,13 @@
|
||||||
package mekanism.client.gui;
|
package mekanism.client.gui;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import mekanism.api.EnumColor;
|
||||||
import mekanism.api.ListUtils;
|
import mekanism.api.ListUtils;
|
||||||
|
import mekanism.api.gas.Gas;
|
||||||
import mekanism.api.gas.GasStack;
|
import mekanism.api.gas.GasStack;
|
||||||
|
import mekanism.api.gas.OreGas;
|
||||||
import mekanism.client.gui.GuiEnergyInfo.IInfoHandler;
|
import mekanism.client.gui.GuiEnergyInfo.IInfoHandler;
|
||||||
import mekanism.client.render.MekanismRenderer;
|
import mekanism.client.render.MekanismRenderer;
|
||||||
import mekanism.common.inventory.container.ContainerChemicalCrystalizer;
|
import mekanism.common.inventory.container.ContainerChemicalCrystalizer;
|
||||||
|
@ -11,8 +15,12 @@ import mekanism.common.tile.TileEntityChemicalCrystalizer;
|
||||||
import mekanism.common.util.MekanismUtils;
|
import mekanism.common.util.MekanismUtils;
|
||||||
import mekanism.common.util.MekanismUtils.ResourceType;
|
import mekanism.common.util.MekanismUtils.ResourceType;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
|
import net.minecraft.item.ItemBlock;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.text.WordUtils;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
@ -23,6 +31,16 @@ public class GuiChemicalCrystalizer extends GuiMekanism
|
||||||
{
|
{
|
||||||
public TileEntityChemicalCrystalizer tileEntity;
|
public TileEntityChemicalCrystalizer tileEntity;
|
||||||
|
|
||||||
|
public Gas prevGas;
|
||||||
|
|
||||||
|
public ItemStack renderStack;
|
||||||
|
|
||||||
|
public int stackSwitch = 0;
|
||||||
|
|
||||||
|
public int stackIndex = 0;
|
||||||
|
|
||||||
|
public List<ItemStack> iterStacks;
|
||||||
|
|
||||||
public GuiChemicalCrystalizer(InventoryPlayer inventory, TileEntityChemicalCrystalizer tentity)
|
public GuiChemicalCrystalizer(InventoryPlayer inventory, TileEntityChemicalCrystalizer tentity)
|
||||||
{
|
{
|
||||||
super(tentity, new ContainerChemicalCrystalizer(inventory, tentity));
|
super(tentity, new ContainerChemicalCrystalizer(inventory, tentity));
|
||||||
|
@ -45,7 +63,24 @@ public class GuiChemicalCrystalizer extends GuiMekanism
|
||||||
int xAxis = (mouseX - (width - xSize) / 2);
|
int xAxis = (mouseX - (width - xSize) / 2);
|
||||||
int yAxis = (mouseY - (height - ySize) / 2);
|
int yAxis = (mouseY - (height - ySize) / 2);
|
||||||
|
|
||||||
fontRenderer.drawString(tileEntity.getInvName(), 45, 6, 0x404040);
|
fontRenderer.drawString(tileEntity.getInvName(), 37, 4, 0x404040);
|
||||||
|
|
||||||
|
if(tileEntity.inputTank.getGas() != null)
|
||||||
|
{
|
||||||
|
fontRenderer.drawString(tileEntity.inputTank.getGas().getGas().getLocalizedName(), 29, 12, 0x00CD00);
|
||||||
|
fontRenderer.drawString("(" + ((OreGas)tileEntity.inputTank.getGas().getGas()).getOreName() + ")", 29, 21, 0x00CD00);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(renderStack != null)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
itemRenderer.renderItemAndEffectIntoGUI(fontRenderer, mc.getTextureManager(), renderStack, 12, 19);
|
||||||
|
GL11.glDisable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
} catch(Exception e) {}
|
||||||
|
}
|
||||||
|
|
||||||
if(xAxis >= 116 && xAxis <= 168 && yAxis >= 76 && yAxis <= 80)
|
if(xAxis >= 116 && xAxis <= 168 && yAxis >= 76 && yAxis <= 80)
|
||||||
{
|
{
|
||||||
|
@ -88,6 +123,68 @@ public class GuiChemicalCrystalizer extends GuiMekanism
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Gas getInputGas()
|
||||||
|
{
|
||||||
|
return tileEntity.inputTank.getGas() != null ? tileEntity.inputTank.getGas().getGas() : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resetStacks()
|
||||||
|
{
|
||||||
|
iterStacks.clear();
|
||||||
|
renderStack = null;
|
||||||
|
stackSwitch = 0;
|
||||||
|
stackIndex = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateScreen()
|
||||||
|
{
|
||||||
|
super.updateScreen();
|
||||||
|
|
||||||
|
if(prevGas != getInputGas())
|
||||||
|
{
|
||||||
|
prevGas = getInputGas();
|
||||||
|
|
||||||
|
if(prevGas == null || !(prevGas instanceof OreGas))
|
||||||
|
{
|
||||||
|
resetStacks();
|
||||||
|
}
|
||||||
|
|
||||||
|
OreGas gas = (OreGas)prevGas;
|
||||||
|
|
||||||
|
if(gas != null)
|
||||||
|
{
|
||||||
|
String oreDictName = "ore" + WordUtils.capitalize(gas.getName());
|
||||||
|
updateStackList(oreDictName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(stackSwitch > 0)
|
||||||
|
{
|
||||||
|
stackSwitch--;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(stackSwitch == 0 && iterStacks != null && iterStacks.size() > 0)
|
||||||
|
{
|
||||||
|
stackSwitch = 20;
|
||||||
|
|
||||||
|
if(stackIndex == -1 || stackIndex == iterStacks.size()-1)
|
||||||
|
{
|
||||||
|
stackIndex = 0;
|
||||||
|
}
|
||||||
|
else if(stackIndex < iterStacks.size()-1)
|
||||||
|
{
|
||||||
|
stackIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderStack = iterStacks.get(stackIndex);
|
||||||
|
}
|
||||||
|
else if(iterStacks != null && iterStacks.size() == 0)
|
||||||
|
{
|
||||||
|
renderStack = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void displayGauge(int xPos, int yPos, int scale, FluidStack fluid, GasStack gas)
|
public void displayGauge(int xPos, int yPos, int scale, FluidStack fluid, GasStack gas)
|
||||||
{
|
{
|
||||||
if(fluid == null && gas == null)
|
if(fluid == null && gas == null)
|
||||||
|
@ -136,4 +233,62 @@ public class GuiChemicalCrystalizer extends GuiMekanism
|
||||||
mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalCrystalizer.png"));
|
mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalCrystalizer.png"));
|
||||||
drawTexturedModalRect(guiWidth + xPos, guiHeight + yPos, 176, 4, 16, 59);
|
drawTexturedModalRect(guiWidth + xPos, guiHeight + yPos, 176, 4, 16, 59);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateStackList(String oreName)
|
||||||
|
{
|
||||||
|
if(iterStacks == null)
|
||||||
|
{
|
||||||
|
iterStacks = new ArrayList<ItemStack>();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
iterStacks.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> keys = new ArrayList<String>();
|
||||||
|
|
||||||
|
for(String s : OreDictionary.getOreNames())
|
||||||
|
{
|
||||||
|
if(oreName.equals(s) || oreName.equals("*"))
|
||||||
|
{
|
||||||
|
keys.add(s);
|
||||||
|
}
|
||||||
|
else if(oreName.endsWith("*") && !oreName.startsWith("*"))
|
||||||
|
{
|
||||||
|
if(s.startsWith(oreName.substring(0, oreName.length()-1)))
|
||||||
|
{
|
||||||
|
keys.add(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(oreName.startsWith("*") && !oreName.endsWith("*"))
|
||||||
|
{
|
||||||
|
if(s.endsWith(oreName.substring(1)))
|
||||||
|
{
|
||||||
|
keys.add(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(oreName.startsWith("*") && oreName.endsWith("*"))
|
||||||
|
{
|
||||||
|
if(s.contains(oreName.substring(1, oreName.length()-1)))
|
||||||
|
{
|
||||||
|
keys.add(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(String key : keys)
|
||||||
|
{
|
||||||
|
for(ItemStack stack : OreDictionary.getOres(key))
|
||||||
|
{
|
||||||
|
ItemStack toAdd = stack.copy();
|
||||||
|
|
||||||
|
if(!iterStacks.contains(stack) && toAdd.getItem() instanceof ItemBlock)
|
||||||
|
{
|
||||||
|
iterStacks.add(stack.copy());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stackSwitch = 0;
|
||||||
|
stackIndex = -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class GuiChemicalDissolutionChamber extends GuiMekanism
|
||||||
int xAxis = (mouseX - (width - xSize) / 2);
|
int xAxis = (mouseX - (width - xSize) / 2);
|
||||||
int yAxis = (mouseY - (height - ySize) / 2);
|
int yAxis = (mouseY - (height - ySize) / 2);
|
||||||
|
|
||||||
fontRenderer.drawString(tileEntity.getInvName(), 45, 6, 0x404040);
|
fontRenderer.drawString(tileEntity.getInvName(), 35, 4, 0x404040);
|
||||||
|
|
||||||
if(xAxis >= 116 && xAxis <= 168 && yAxis >= 76 && yAxis <= 80)
|
if(xAxis >= 116 && xAxis <= 168 && yAxis >= 76 && yAxis <= 80)
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class GuiChemicalWasher extends GuiMekanism
|
||||||
int xAxis = (mouseX - (width - xSize) / 2);
|
int xAxis = (mouseX - (width - xSize) / 2);
|
||||||
int yAxis = (mouseY - (height - ySize) / 2);
|
int yAxis = (mouseY - (height - ySize) / 2);
|
||||||
|
|
||||||
fontRenderer.drawString(tileEntity.getInvName(), 45, 6, 0x404040);
|
fontRenderer.drawString(tileEntity.getInvName(), 45, 4, 0x404040);
|
||||||
|
|
||||||
if(xAxis >= 116 && xAxis <= 168 && yAxis >= 76 && yAxis <= 80)
|
if(xAxis >= 116 && xAxis <= 168 && yAxis >= 76 && yAxis <= 80)
|
||||||
{
|
{
|
||||||
|
|
|
@ -71,11 +71,20 @@ public class ContainerChemicalDissolutionChamber extends Container
|
||||||
stack = slotStack.copy();
|
stack = slotStack.copy();
|
||||||
|
|
||||||
if(RecipeHandler.getItemToGasOutput(slotStack, false, Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get()) != null)
|
if(RecipeHandler.getItemToGasOutput(slotStack, false, Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get()) != null)
|
||||||
|
{
|
||||||
|
if(slotID != 1)
|
||||||
{
|
{
|
||||||
if(!mergeItemStack(slotStack, 1, 2, true))
|
if(!mergeItemStack(slotStack, 1, 2, true))
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(!mergeItemStack(slotStack, 4, inventorySlots.size(), true))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(ChargeUtils.canBeDischarged(slotStack))
|
else if(ChargeUtils.canBeDischarged(slotStack))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue