From 95e8d2c5bb77f320f856832024a5b8e568650c9a Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Fri, 18 Apr 2014 02:34:19 +0100 Subject: [PATCH] More gui work. I've just noticed this all has screwed up NEI. I'll try to sort that later. --- .../gui/GuiAdvancedElectricMachine.java | 16 +-- .../mekanism/client/gui/GuiChanceMachine.java | 12 ++- .../client/gui/GuiChemicalCrystallizer.java | 73 ++----------- .../gui/GuiChemicalDissolutionChamber.java | 63 ++---------- .../client/gui/GuiChemicalInfuser.java | 75 ++++---------- .../client/gui/GuiChemicalOxidizer.java | 11 ++ .../client/gui/GuiChemicalWasher.java | 71 +++---------- .../client/gui/GuiElectricMachine.java | 21 ++-- .../mekanism/client/gui/GuiElectricPump.java | 48 --------- .../client/gui/GuiElectrolyticSeparator.java | 11 ++ common/mekanism/client/gui/GuiGasGauge.java | 2 +- .../client/gui/GuiMetallurgicInfuser.java | 11 ++ common/mekanism/client/gui/GuiPRC.java | 11 ++ common/mekanism/client/gui/GuiProgress.java | 97 ++++++++++++++++++ .../client/gui/GuiRotaryCondensentrator.java | 88 ++++++---------- .../TileEntityAdvancedElectricMachine.java | 7 +- .../common/tile/TileEntityBasicMachine.java | 14 ++- .../common/tile/TileEntityChanceMachine.java | 2 +- .../tile/TileEntityChemicalCrystallizer.java | 5 + .../TileEntityChemicalDissolutionChamber.java | 5 + .../TileEntityChemicalInjectionChamber.java | 9 +- .../tile/TileEntityChemicalOxidizer.java | 5 + .../common/tile/TileEntityCombiner.java | 9 +- .../common/tile/TileEntityCrusher.java | 9 +- .../tile/TileEntityElectricMachine.java | 7 +- .../tile/TileEntityElectrolyticSeparator.java | 13 +++ .../tile/TileEntityEnergizedSmelter.java | 13 ++- .../tile/TileEntityEnrichmentChamber.java | 9 +- .../tile/TileEntityMetallurgicInfuser.java | 5 + .../tile/TileEntityOsmiumCompressor.java | 9 +- .../mekanism/common/tile/TileEntityPRC.java | 11 +- .../tile/TileEntityPrecisionSawmill.java | 12 ++- .../tile/TileEntityPurificationChamber.java | 9 +- .../tile/TileEntityHydrogenGenerator.java | 11 +- resources/assets/mekanism/gui/GuiChamber.png | Bin 2799 -> 0 bytes .../mekanism/gui/GuiChemicalCrystallizer.png | Bin 2329 -> 2298 bytes .../gui/GuiChemicalDissolutionChamber.png | Bin 2201 -> 2167 bytes .../gui/GuiChemicalInjectionChamber.png | Bin 2828 -> 0 bytes .../mekanism/gui/GuiChemicalOxidizer.png | Bin 2202 -> 2168 bytes resources/assets/mekanism/gui/GuiCombiner.png | Bin 3200 -> 0 bytes .../assets/mekanism/gui/GuiCompressor.png | Bin 2817 -> 0 bytes resources/assets/mekanism/gui/GuiCrusher.png | Bin 2855 -> 0 bytes .../mekanism/gui/GuiEnergizedSmelter.png | Bin 2801 -> 0 bytes .../mekanism/gui/GuiMetallurgicInfuser.png | Bin 2244 -> 2207 bytes .../mekanism/gui/GuiPrecisionSawmill.png | Bin 2626 -> 0 bytes .../mekanism/gui/GuiPurificationChamber.png | Bin 2817 -> 0 bytes .../mekanism/gui/elements/GuiProgress.png | Bin 3231 -> 5077 bytes 47 files changed, 390 insertions(+), 384 deletions(-) create mode 100644 common/mekanism/client/gui/GuiProgress.java delete mode 100644 resources/assets/mekanism/gui/GuiChamber.png delete mode 100644 resources/assets/mekanism/gui/GuiChemicalInjectionChamber.png delete mode 100644 resources/assets/mekanism/gui/GuiCombiner.png delete mode 100644 resources/assets/mekanism/gui/GuiCompressor.png delete mode 100644 resources/assets/mekanism/gui/GuiCrusher.png delete mode 100644 resources/assets/mekanism/gui/GuiEnergizedSmelter.png delete mode 100644 resources/assets/mekanism/gui/GuiPrecisionSawmill.png delete mode 100644 resources/assets/mekanism/gui/GuiPurificationChamber.png diff --git a/common/mekanism/client/gui/GuiAdvancedElectricMachine.java b/common/mekanism/client/gui/GuiAdvancedElectricMachine.java index 63efb82df..fd6f842be 100644 --- a/common/mekanism/client/gui/GuiAdvancedElectricMachine.java +++ b/common/mekanism/client/gui/GuiAdvancedElectricMachine.java @@ -5,6 +5,8 @@ import java.util.List; import mekanism.api.ListUtils; import mekanism.api.gas.GasStack; import mekanism.client.gui.GuiEnergyInfo.IInfoHandler; +import mekanism.client.gui.GuiProgress.IProgressInfoHandler; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.client.gui.GuiSlot.SlotOverlay; import mekanism.client.gui.GuiSlot.SlotType; import mekanism.client.render.MekanismRenderer; @@ -46,6 +48,14 @@ public class GuiAdvancedElectricMachine extends GuiMekanism guiElements.add(new GuiSlot(SlotType.EXTRA, this, tileEntity, tileEntity.guiLocation, 55, 52)); guiElements.add(new GuiSlot(SlotType.OUTPUT_LARGE, this, tileEntity, tileEntity.guiLocation, 111, 30)); + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return tileEntity.getScaledProgress(); + } + }, tileEntity.getProgressType(), this, tileEntity, tileEntity.guiLocation, 77, 37)); } @Override @@ -74,14 +84,8 @@ public class GuiAdvancedElectricMachine extends GuiMekanism int guiHeight = (height - ySize) / 2; drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize); - int xAxis = mouseX - guiWidth; - int yAxis = mouseY - guiHeight; - int displayInt; - displayInt = tileEntity.getScaledProgress(24); - drawTexturedModalRect(guiWidth + 79, guiHeight + 39, 176, 0, displayInt + 1, 7); - if(tileEntity.getScaledGasLevel(12) > 0) { displayInt = tileEntity.getScaledGasLevel(12); diff --git a/common/mekanism/client/gui/GuiChanceMachine.java b/common/mekanism/client/gui/GuiChanceMachine.java index b55cfd3e5..7675c2159 100644 --- a/common/mekanism/client/gui/GuiChanceMachine.java +++ b/common/mekanism/client/gui/GuiChanceMachine.java @@ -4,6 +4,7 @@ import java.util.List; import mekanism.api.ListUtils; import mekanism.client.gui.GuiEnergyInfo.IInfoHandler; +import mekanism.client.gui.GuiProgress.IProgressInfoHandler; import mekanism.client.gui.GuiSlot.SlotOverlay; import mekanism.client.gui.GuiSlot.SlotType; import mekanism.common.inventory.container.ContainerChanceMachine; @@ -43,14 +44,19 @@ public class GuiChanceMachine extends GuiMekanism guiElements.add(new GuiSlot(SlotType.POWER, this, tileEntity, tileEntity.guiLocation, 55, 52).with(SlotOverlay.POWER)); guiElements.add(new GuiSlot(SlotType.OUTPUT_WIDE, this, tileEntity, tileEntity.guiLocation, 111, 30)); + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return tileEntity.getScaledProgress(); + } + }, tileEntity.getProgressType(), this, tileEntity, tileEntity.guiLocation, 77, 37)); } @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - int xAxis = (mouseX - (width - xSize) / 2); - int yAxis = (mouseY - (height - ySize) / 2); - fontRenderer.drawString(tileEntity.getInvName(), 45, 6, 0x404040); fontRenderer.drawString(MekanismUtils.localize("container.inventory"), 8, (ySize - 96) + 2, 0x404040); diff --git a/common/mekanism/client/gui/GuiChemicalCrystallizer.java b/common/mekanism/client/gui/GuiChemicalCrystallizer.java index a35978332..b6e60881e 100644 --- a/common/mekanism/client/gui/GuiChemicalCrystallizer.java +++ b/common/mekanism/client/gui/GuiChemicalCrystallizer.java @@ -11,6 +11,8 @@ import mekanism.api.gas.GasTank; import mekanism.api.gas.OreGas; import mekanism.client.gui.GuiEnergyInfo.IInfoHandler; import mekanism.client.gui.GuiGasGauge.IGasInfoHandler; +import mekanism.client.gui.GuiProgress.IProgressInfoHandler; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.client.gui.GuiSlot.SlotOverlay; import mekanism.client.gui.GuiSlot.SlotType; import mekanism.client.render.MekanismRenderer; @@ -73,6 +75,15 @@ public class GuiChemicalCrystallizer extends GuiMekanism guiElements.add(new GuiSlot(SlotType.EXTRA, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalCrystallizer.png"), 5, 64).with(SlotOverlay.PLUS)); guiElements.add(new GuiSlot(SlotType.POWER, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalCrystallizer.png"), 154, 4).with(SlotOverlay.POWER)); guiElements.add(new GuiSlot(SlotType.OUTPUT, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalCrystallizer.png"), 130, 56)); + + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return tileEntity.getScaledProgress(); + } + }, ProgressBar.LARGE_RIGHT, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalCrystallizer.png"), 51, 60)); } @Override @@ -116,19 +127,6 @@ public class GuiChemicalCrystallizer extends GuiMekanism int guiHeight = (height - ySize) / 2; drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize); - int xAxis = mouseX - guiWidth; - int yAxis = mouseY - guiHeight; - - int displayInt; - - displayInt = tileEntity.getScaledProgress(48); - drawTexturedModalRect(guiWidth + 53, guiHeight + 61, 176, 63, displayInt, 8); - - if(tileEntity.getScaledInputGasLevel(58) > 0) - { - displayGauge(6, 5, tileEntity.getScaledInputGasLevel(58), null, tileEntity.inputTank.getGas()); - } - super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); } @@ -218,55 +216,6 @@ public class GuiChemicalCrystallizer extends GuiMekanism } } - public void displayGauge(int xPos, int yPos, int scale, FluidStack fluid, GasStack gas) - { - if(fluid == null && gas == null) - { - return; - } - - int guiWidth = (width - xSize) / 2; - int guiHeight = (height - ySize) / 2; - - int start = 0; - - while(true) - { - int renderRemaining = 0; - - if(scale > 16) - { - renderRemaining = 16; - scale -= 16; - } - else { - renderRemaining = scale; - scale = 0; - } - - mc.renderEngine.bindTexture(MekanismRenderer.getBlocksTexture()); - - if(fluid != null) - { - drawTexturedModelRectFromIcon(guiWidth + xPos, guiHeight + yPos + 58 - renderRemaining - start, fluid.getFluid().getIcon(), 16, 16 - (16 - renderRemaining)); - } - else if(gas != null) - { - drawTexturedModelRectFromIcon(guiWidth + xPos, guiHeight + yPos + 58 - renderRemaining - start, gas.getGas().getIcon(), 16, 16 - (16 - renderRemaining)); - } - - start+=16; - - if(renderRemaining == 0 || scale == 0) - { - break; - } - } - - mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalCrystallizer.png")); - drawTexturedModalRect(guiWidth + xPos, guiHeight + yPos, 176, 4, 16, 59); - } - private void updateStackList(String oreName) { if(iterStacks == null) diff --git a/common/mekanism/client/gui/GuiChemicalDissolutionChamber.java b/common/mekanism/client/gui/GuiChemicalDissolutionChamber.java index ee3223dea..225ad204f 100644 --- a/common/mekanism/client/gui/GuiChemicalDissolutionChamber.java +++ b/common/mekanism/client/gui/GuiChemicalDissolutionChamber.java @@ -3,19 +3,18 @@ package mekanism.client.gui; import java.util.List; import mekanism.api.ListUtils; -import mekanism.api.gas.GasStack; import mekanism.api.gas.GasTank; import mekanism.client.gui.GuiEnergyInfo.IInfoHandler; import mekanism.client.gui.GuiGasGauge.IGasInfoHandler; +import mekanism.client.gui.GuiProgress.IProgressInfoHandler; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.client.gui.GuiSlot.SlotOverlay; import mekanism.client.gui.GuiSlot.SlotType; -import mekanism.client.render.MekanismRenderer; import mekanism.common.inventory.container.ContainerChemicalDissolutionChamber; import mekanism.common.tile.TileEntityChemicalDissolutionChamber; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraftforge.fluids.FluidStack; import org.lwjgl.opengl.GL11; @@ -60,6 +59,15 @@ public class GuiChemicalDissolutionChamber extends GuiMekanism guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalDissolutionChamber.png"), 25, 35)); guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalDissolutionChamber.png"), 154, 24).with(SlotOverlay.PLUS)); guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalDissolutionChamber.png"), 5, 64).with(SlotOverlay.MINUS)); + + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return tileEntity.getScaledProgress(); + } + }, ProgressBar.LARGE_RIGHT, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalDissolutionChamber.png"), 62, 39)); } @Override @@ -94,53 +102,4 @@ public class GuiChemicalDissolutionChamber extends GuiMekanism super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); } - - public void displayGauge(int xPos, int yPos, int scale, FluidStack fluid, GasStack gas) - { - if(fluid == null && gas == null) - { - return; - } - - int guiWidth = (width - xSize) / 2; - int guiHeight = (height - ySize) / 2; - - int start = 0; - - while(true) - { - int renderRemaining = 0; - - if(scale > 16) - { - renderRemaining = 16; - scale -= 16; - } - else { - renderRemaining = scale; - scale = 0; - } - - mc.renderEngine.bindTexture(MekanismRenderer.getBlocksTexture()); - - if(fluid != null) - { - drawTexturedModelRectFromIcon(guiWidth + xPos, guiHeight + yPos + 58 - renderRemaining - start, fluid.getFluid().getIcon(), 16, 16 - (16 - renderRemaining)); - } - else if(gas != null) - { - drawTexturedModelRectFromIcon(guiWidth + xPos, guiHeight + yPos + 58 - renderRemaining - start, gas.getGas().getIcon(), 16, 16 - (16 - renderRemaining)); - } - - start+=16; - - if(renderRemaining == 0 || scale == 0) - { - break; - } - } - - mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalDissolutionChamber.png")); - drawTexturedModalRect(guiWidth + xPos, guiHeight + yPos, 176, 4, 16, 59); - } } diff --git a/common/mekanism/client/gui/GuiChemicalInfuser.java b/common/mekanism/client/gui/GuiChemicalInfuser.java index 8f1c2f3b0..a53799f6f 100644 --- a/common/mekanism/client/gui/GuiChemicalInfuser.java +++ b/common/mekanism/client/gui/GuiChemicalInfuser.java @@ -9,6 +9,8 @@ import mekanism.api.gas.GasStack; import mekanism.api.gas.GasTank; import mekanism.client.gui.GuiEnergyInfo.IInfoHandler; import mekanism.client.gui.GuiGasGauge.IGasInfoHandler; +import mekanism.client.gui.GuiProgress.IProgressInfoHandler; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.client.gui.GuiSlot.SlotOverlay; import mekanism.client.gui.GuiSlot.SlotType; import mekanism.client.render.MekanismRenderer; @@ -57,7 +59,7 @@ public class GuiChemicalInfuser extends GuiMekanism @Override public GasTank getTank() { - return tileEntity.rightTank; + return tileEntity.centerTank; } }, GuiGauge.Type.STANDARD, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalInfuser.png"), 79, 4)); guiElements.add(new GuiGasGauge(new IGasInfoHandler() { @@ -73,6 +75,22 @@ public class GuiChemicalInfuser extends GuiMekanism guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalInfuser.png"), 4, 55).with(SlotOverlay.MINUS)); guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalInfuser.png"), 79, 64).with(SlotOverlay.PLUS)); + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return tileEntity.isActive ? 1 : 0; + } + }, ProgressBar.SMALL_RIGHT, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalInfuser.png"), 45, 38)); + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return tileEntity.isActive ? 1 : 0; + } + }, ProgressBar.SMALL_LEFT, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalInfuser.png"), 99, 38)); } @Override @@ -96,12 +114,6 @@ public class GuiChemicalInfuser extends GuiMekanism int guiHeight = (height - ySize) / 2; drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize); - if(tileEntity.isActive) - { - drawTexturedModalRect(guiWidth + 47, guiHeight + 39, 176, 71, 28, 8); - drawTexturedModalRect(guiWidth + 101, guiHeight + 39, 176, 63, 28, 8); - } - super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); } @@ -133,53 +145,4 @@ public class GuiChemicalInfuser extends GuiMekanism } } } - - public void displayGauge(int xPos, int yPos, int scale, FluidStack fluid, GasStack gas) - { - if(fluid == null && gas == null) - { - return; - } - - int guiWidth = (width - xSize) / 2; - int guiHeight = (height - ySize) / 2; - - int start = 0; - - while(true) - { - int renderRemaining = 0; - - if(scale > 16) - { - renderRemaining = 16; - scale -= 16; - } - else { - renderRemaining = scale; - scale = 0; - } - - mc.renderEngine.bindTexture(MekanismRenderer.getBlocksTexture()); - - if(fluid != null) - { - drawTexturedModelRectFromIcon(guiWidth + xPos, guiHeight + yPos + 58 - renderRemaining - start, fluid.getFluid().getIcon(), 16, 16 - (16 - renderRemaining)); - } - else if(gas != null) - { - drawTexturedModelRectFromIcon(guiWidth + xPos, guiHeight + yPos + 58 - renderRemaining - start, gas.getGas().getIcon(), 16, 16 - (16 - renderRemaining)); - } - - start+=16; - - if(renderRemaining == 0 || scale == 0) - { - break; - } - } - - mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalInfuser.png")); - drawTexturedModalRect(guiWidth + xPos, guiHeight + yPos, 176, 4, 16, 59); - } } diff --git a/common/mekanism/client/gui/GuiChemicalOxidizer.java b/common/mekanism/client/gui/GuiChemicalOxidizer.java index 994f65f49..26bb9b4b2 100644 --- a/common/mekanism/client/gui/GuiChemicalOxidizer.java +++ b/common/mekanism/client/gui/GuiChemicalOxidizer.java @@ -6,6 +6,8 @@ import mekanism.api.ListUtils; import mekanism.api.gas.GasTank; import mekanism.client.gui.GuiEnergyInfo.IInfoHandler; import mekanism.client.gui.GuiGasGauge.IGasInfoHandler; +import mekanism.client.gui.GuiProgress.IProgressInfoHandler; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.client.gui.GuiSlot.SlotOverlay; import mekanism.client.gui.GuiSlot.SlotType; import mekanism.common.inventory.container.ContainerChemicalOxidizer; @@ -49,6 +51,15 @@ public class GuiChemicalOxidizer extends GuiMekanism guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalOxidizer.png"), 154, 4).with(SlotOverlay.POWER)); guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalOxidizer.png"), 25, 35)); guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalOxidizer.png"), 154, 24).with(SlotOverlay.PLUS)); + + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return tileEntity.getScaledProgress(); + } + }, ProgressBar.LARGE_RIGHT, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalOxidizer.png"), 62, 39)); } @Override diff --git a/common/mekanism/client/gui/GuiChemicalWasher.java b/common/mekanism/client/gui/GuiChemicalWasher.java index 85c3c0bb5..a3728e8e1 100644 --- a/common/mekanism/client/gui/GuiChemicalWasher.java +++ b/common/mekanism/client/gui/GuiChemicalWasher.java @@ -11,6 +11,8 @@ import mekanism.client.gui.GuiEnergyInfo.IInfoHandler; import mekanism.client.gui.GuiFluidGauge.IFluidInfoHandler; import mekanism.client.gui.GuiGasGauge.IGasInfoHandler; import mekanism.client.gui.GuiGauge.Type; +import mekanism.client.gui.GuiProgress.IProgressInfoHandler; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.client.gui.GuiSlot.SlotOverlay; import mekanism.client.gui.GuiSlot.SlotType; import mekanism.client.render.MekanismRenderer; @@ -64,18 +66,26 @@ public class GuiChemicalWasher extends GuiMekanism { return tileEntity.inputTank; } - }, GuiGauge.Type.STANDARD, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalInfuser.png"), 26, 13)); + }, GuiGauge.Type.STANDARD, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalWasher.png"), 26, 13)); guiElements.add(new GuiGasGauge(new IGasInfoHandler() { @Override public GasTank getTank() { return tileEntity.outputTank; } - }, GuiGauge.Type.STANDARD, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalInfuser.png"), 133, 13)); + }, GuiGauge.Type.STANDARD, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalWasher.png"), 133, 13)); - guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalInfuser.png"), 154, 4).with(SlotOverlay.POWER)); - guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalInfuser.png"), 154, 55).with(SlotOverlay.MINUS)); + guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalWasher.png"), 154, 4).with(SlotOverlay.POWER)); + guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalWasher.png"), 154, 55).with(SlotOverlay.MINUS)); + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return tileEntity.isActive ? 1 : 0; + } + }, ProgressBar.LARGE_RIGHT, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalWasher.png"), 62, 38)); } @Override @@ -95,11 +105,6 @@ public class GuiChemicalWasher extends GuiMekanism int guiHeight = (height - ySize) / 2; drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize); - if(tileEntity.isActive) - { - drawTexturedModalRect(guiWidth + 61, guiHeight + 39, 176, 63, 55, 8); - } - super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); } @@ -124,52 +129,4 @@ public class GuiChemicalWasher extends GuiMekanism } } - public void displayGauge(int xPos, int yPos, int scale, FluidStack fluid, GasStack gas) - { - if(fluid == null && gas == null) - { - return; - } - - int guiWidth = (width - xSize) / 2; - int guiHeight = (height - ySize) / 2; - - int start = 0; - - while(true) - { - int renderRemaining = 0; - - if(scale > 16) - { - renderRemaining = 16; - scale -= 16; - } - else { - renderRemaining = scale; - scale = 0; - } - - mc.renderEngine.bindTexture(MekanismRenderer.getBlocksTexture()); - - if(fluid != null) - { - drawTexturedModelRectFromIcon(guiWidth + xPos, guiHeight + yPos + 58 - renderRemaining - start, fluid.getFluid().getIcon(), 16, 16 - (16 - renderRemaining)); - } - else if(gas != null) - { - drawTexturedModelRectFromIcon(guiWidth + xPos, guiHeight + yPos + 58 - renderRemaining - start, gas.getGas().getIcon(), 16, 16 - (16 - renderRemaining)); - } - - start+=16; - - if(renderRemaining == 0 || scale == 0) - { - break; - } - } - - mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalWasher.png")); - drawTexturedModalRect(guiWidth + xPos, guiHeight + yPos, 176, 4, 16, 59); - } } diff --git a/common/mekanism/client/gui/GuiElectricMachine.java b/common/mekanism/client/gui/GuiElectricMachine.java index 84b10f53b..4f6a03a44 100644 --- a/common/mekanism/client/gui/GuiElectricMachine.java +++ b/common/mekanism/client/gui/GuiElectricMachine.java @@ -4,6 +4,8 @@ import java.util.List; import mekanism.api.ListUtils; import mekanism.client.gui.GuiEnergyInfo.IInfoHandler; +import mekanism.client.gui.GuiProgress.IProgressInfoHandler; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.client.gui.GuiSlot.SlotOverlay; import mekanism.client.gui.GuiSlot.SlotType; import mekanism.common.inventory.container.ContainerElectricMachine; @@ -45,14 +47,19 @@ public class GuiElectricMachine extends GuiMekanism guiElements.add(new GuiSlot(SlotType.POWER, this, tileEntity, tileEntity.guiLocation, 55, 52).with(SlotOverlay.POWER)); guiElements.add(new GuiSlot(SlotType.OUTPUT_LARGE, this, tileEntity, tileEntity.guiLocation, 111, 30)); + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return tileEntity.getScaledProgress(); + } + }, tileEntity.getProgressType(), this, tileEntity, tileEntity.guiLocation, 77, 37)); } @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - int xAxis = (mouseX - (width - xSize) / 2); - int yAxis = (mouseY - (height - ySize) / 2); - fontRenderer.drawString(tileEntity.getInvName(), 45, 6, 0x404040); fontRenderer.drawString(MekanismUtils.localize("container.inventory"), 8, (ySize - 96) + 2, 0x404040); @@ -68,14 +75,6 @@ public class GuiElectricMachine extends GuiMekanism int guiHeight = (height - ySize) / 2; drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize); - int xAxis = mouseX - guiWidth; - int yAxis = mouseY - guiHeight; - - int displayInt; - - displayInt = tileEntity.getScaledProgress(24); - drawTexturedModalRect(guiWidth + 79, guiHeight + 39, 176, 0, displayInt + 1, 7); - super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); } } \ No newline at end of file diff --git a/common/mekanism/client/gui/GuiElectricPump.java b/common/mekanism/client/gui/GuiElectricPump.java index 31d8494be..fe24ebc33 100644 --- a/common/mekanism/client/gui/GuiElectricPump.java +++ b/common/mekanism/client/gui/GuiElectricPump.java @@ -47,9 +47,6 @@ public class GuiElectricPump extends GuiMekanism @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - int xAxis = (mouseX - (width - xSize) / 2); - int yAxis = (mouseY - (height - ySize) / 2); - fontRenderer.drawString(tileEntity.getInvName(), 45, 6, 0x404040); fontRenderer.drawString(MekanismUtils.localize("container.inventory"), 8, (ySize - 94) + 2, 0x404040); fontRenderer.drawString(MekanismUtils.getEnergyDisplay(tileEntity.getEnergy()), 51, 26, 0x00CD00); @@ -67,51 +64,6 @@ public class GuiElectricPump extends GuiMekanism int guiHeight = (height - ySize) / 2; drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize); - if(tileEntity.getScaledFluidLevel(58) > 0) - { - displayGauge(7, 14, tileEntity.getScaledFluidLevel(58), tileEntity.fluidTank.getFluid()); - } - super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); } - - public void displayGauge(int xPos, int yPos, int scale, FluidStack fluid) - { - if(fluid == null) - { - return; - } - - int guiWidth = (width - xSize) / 2; - int guiHeight = (height - ySize) / 2; - - int start = 0; - - while(true) - { - int renderRemaining = 0; - - if(scale > 16) - { - renderRemaining = 16; - scale -= 16; - } - else { - renderRemaining = scale; - scale = 0; - } - - mc.renderEngine.bindTexture(MekanismRenderer.getBlocksTexture()); - drawTexturedModelRectFromIcon(guiWidth + xPos, guiHeight + yPos + 58 - renderRemaining - start, fluid.getFluid().getIcon(), 16, 16 - (16 - renderRemaining)); - start+=16; - - if(renderRemaining == 0 || scale == 0) - { - break; - } - } - - mc.renderEngine.bindTexture(guiLocation); - drawTexturedModalRect(guiWidth + xPos, guiHeight + yPos, 176, 52, 16, 60); - } } diff --git a/common/mekanism/client/gui/GuiElectrolyticSeparator.java b/common/mekanism/client/gui/GuiElectrolyticSeparator.java index dece4904e..93cccbe4f 100755 --- a/common/mekanism/client/gui/GuiElectrolyticSeparator.java +++ b/common/mekanism/client/gui/GuiElectrolyticSeparator.java @@ -9,6 +9,8 @@ import mekanism.api.gas.GasTank; import mekanism.client.gui.GuiEnergyInfo.IInfoHandler; import mekanism.client.gui.GuiFluidGauge.IFluidInfoHandler; import mekanism.client.gui.GuiGasGauge.IGasInfoHandler; +import mekanism.client.gui.GuiProgress.IProgressInfoHandler; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.client.gui.GuiSlot.SlotOverlay; import mekanism.client.gui.GuiSlot.SlotType; import mekanism.common.Mekanism; @@ -73,6 +75,15 @@ public class GuiElectrolyticSeparator extends GuiMekanism guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiElectrolyticSeparator.png"), 58, 51)); guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiElectrolyticSeparator.png"), 100, 51)); guiElements.add(new GuiSlot(SlotType.NORMAL, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiElectrolyticSeparator.png"), 142, 34).with(SlotOverlay.POWER)); + + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return tileEntity.isActive ? 1 : 0; + } + }, ProgressBar.BI, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalDissolutionChamber.png"), 78, 29)); } @Override diff --git a/common/mekanism/client/gui/GuiGasGauge.java b/common/mekanism/client/gui/GuiGasGauge.java index 1122e08bb..92f224baa 100644 --- a/common/mekanism/client/gui/GuiGasGauge.java +++ b/common/mekanism/client/gui/GuiGasGauge.java @@ -33,7 +33,7 @@ public class GuiGasGauge extends GuiGauge @Override public String getTooltipText() { - return (infoHandler.getTank().getGas() != null && infoHandler.getTank().getStored() != 0) ? infoHandler.getTank().getGas().getGas().getLocalizedName() + ": " + infoHandler.getTank().getStored() + "mB" : MekanismUtils.localize("gui.empty"); + return (infoHandler.getTank().getGas() != null) ? infoHandler.getTank().getGas().getGas().getLocalizedName() + ": " + infoHandler.getTank().getStored() + "mB" : MekanismUtils.localize("gui.empty"); } public static interface IGasInfoHandler diff --git a/common/mekanism/client/gui/GuiMetallurgicInfuser.java b/common/mekanism/client/gui/GuiMetallurgicInfuser.java index afb84b0dc..23bb667df 100644 --- a/common/mekanism/client/gui/GuiMetallurgicInfuser.java +++ b/common/mekanism/client/gui/GuiMetallurgicInfuser.java @@ -6,6 +6,8 @@ import java.util.List; import mekanism.api.Coord4D; import mekanism.api.ListUtils; import mekanism.client.gui.GuiEnergyInfo.IInfoHandler; +import mekanism.client.gui.GuiProgress.IProgressInfoHandler; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.client.gui.GuiSlot.SlotOverlay; import mekanism.client.gui.GuiSlot.SlotType; import mekanism.common.PacketHandler; @@ -49,6 +51,15 @@ public class GuiMetallurgicInfuser extends GuiMekanism guiElements.add(new GuiSlot(SlotType.INPUT, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiMetallurgicInfuser.png"), 50, 42)); guiElements.add(new GuiSlot(SlotType.POWER, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiMetallurgicInfuser.png"), 142, 34).with(SlotOverlay.POWER)); guiElements.add(new GuiSlot(SlotType.OUTPUT, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiMetallurgicInfuser.png"), 108, 42)); + + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return tileEntity.getScaledProgress(); + } + }, ProgressBar.MEDIUM, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiMetallurgicInfuser.png"), 70, 46)); } @Override diff --git a/common/mekanism/client/gui/GuiPRC.java b/common/mekanism/client/gui/GuiPRC.java index a7be02a0b..5248bea2c 100644 --- a/common/mekanism/client/gui/GuiPRC.java +++ b/common/mekanism/client/gui/GuiPRC.java @@ -3,6 +3,8 @@ package mekanism.client.gui; import mekanism.api.gas.GasTank; import mekanism.client.gui.GuiFluidGauge.IFluidInfoHandler; import mekanism.client.gui.GuiGasGauge.IGasInfoHandler; +import mekanism.client.gui.GuiProgress.IProgressInfoHandler; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.client.gui.GuiSlot.SlotOverlay; import mekanism.client.gui.GuiSlot.SlotType; import mekanism.common.inventory.container.ContainerPRC; @@ -50,6 +52,15 @@ public class GuiPRC extends GuiMekanism guiElements.add(new GuiSlot(SlotType.INPUT, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiPRC.png"), 53, 34)); guiElements.add(new GuiSlot(SlotType.POWER, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiPRC.png"), 140, 18).with(SlotOverlay.POWER)); guiElements.add(new GuiSlot(SlotType.OUTPUT, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiPRC.png"), 115, 34)); + + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return tileEntity.getScaledProgress(); + } + }, ProgressBar.MEDIUM, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiPRC.png"), 75, 37)); } @Override diff --git a/common/mekanism/client/gui/GuiProgress.java b/common/mekanism/client/gui/GuiProgress.java new file mode 100644 index 000000000..394a1d6e5 --- /dev/null +++ b/common/mekanism/client/gui/GuiProgress.java @@ -0,0 +1,97 @@ +package mekanism.client.gui; + +import mekanism.common.tile.TileEntityElectricBlock; +import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; + +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class GuiProgress extends GuiElement +{ + private int xLocation; + private int yLocation; + + private int innerOffsetX = 2; + + private ProgressBar type; + private IProgressInfoHandler handler; + + public GuiProgress(IProgressInfoHandler handler, ProgressBar type, GuiMekanism gui, TileEntity tile, ResourceLocation def, int x, int y) + { + super(MekanismUtils.getResource(ResourceType.GUI_ELEMENT, "GuiProgress.png"), gui, tile, def); + tileEntity = tile; + xLocation = x; + yLocation = y; + + this.type = type; + this.handler = handler; + } + + @Override + public void renderBackground(int xAxis, int yAxis, int guiWidth, int guiHeight) + { + mc.renderEngine.bindTexture(RESOURCE); + if(handler.isActive()) + { + guiObj.drawTexturedModalRect(guiWidth + xLocation, guiHeight + yLocation, type.textureX, type.textureY, type.width, type.height); + int displayInt = (int)(handler.getProgress() * (type.width-2*innerOffsetX)); + guiObj.drawTexturedModalRect(guiWidth + xLocation + innerOffsetX, guiHeight + yLocation, type.textureX + type.width + innerOffsetX, type.textureY, displayInt, type.height); + } + mc.renderEngine.bindTexture(defaultLocation); + } + + @Override + public void renderForeground(int xAxis, int yAxis) {} + + @Override + public void preMouseClicked(int xAxis, int yAxis, int button) {} + + @Override + public void mouseClicked(int xAxis, int yAxis, int button) {} + + public static abstract class IProgressInfoHandler + { + public abstract double getProgress(); + + public boolean isActive() + { + return true; + } + } + + public enum ProgressBar + { + BLUE(28, 11, 0, 0), + YELLOW(28, 11, 0, 11), + RED(28, 11, 0, 22), + GREEN(28, 11, 0, 33), + PURPLE(28, 11, 0, 44), + STONE(28, 11, 0, 55), + CRUSH(28, 11, 0, 66), + + LARGE_RIGHT(52, 10, 128, 0), + LARGE_LEFT(52, 10, 128, 10), + MEDIUM(36, 10, 128, 20), + SMALL_RIGHT(32, 10, 128, 30), + SMALL_LEFT(32, 10, 128, 40), + BI(20, 8, 128, 50); + + public int width; + public int height; + + public int textureX; + public int textureY; + + private ProgressBar(int w, int h, int u, int v) + { + width = w; + height = h; + textureX = u; + textureY = v; + } + } +} diff --git a/common/mekanism/client/gui/GuiRotaryCondensentrator.java b/common/mekanism/client/gui/GuiRotaryCondensentrator.java index ef1f6c962..065ed5ac6 100644 --- a/common/mekanism/client/gui/GuiRotaryCondensentrator.java +++ b/common/mekanism/client/gui/GuiRotaryCondensentrator.java @@ -7,6 +7,8 @@ import mekanism.api.gas.GasStack; import mekanism.api.gas.GasTank; import mekanism.client.gui.GuiFluidGauge.IFluidInfoHandler; import mekanism.client.gui.GuiGasGauge.IGasInfoHandler; +import mekanism.client.gui.GuiProgress.IProgressInfoHandler; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.client.gui.GuiSlot.SlotOverlay; import mekanism.client.gui.GuiSlot.SlotType; import mekanism.client.render.MekanismRenderer; @@ -60,6 +62,34 @@ public class GuiRotaryCondensentrator extends GuiMekanism } }, GuiGauge.Type.STANDARD, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiRotaryCondensentrator.png"), 25, 13)); + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return tileEntity.isActive ? 1 : 0; + } + + @Override + public boolean isActive() + { + return tileEntity.mode == 0; + } + }, ProgressBar.LARGE_RIGHT, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiRotaryCondensentrator.png"), 62, 38)); + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return tileEntity.isActive ? 1 : 0; + } + + @Override + public boolean isActive() + { + return tileEntity.mode == 1; + } + }, ProgressBar.LARGE_LEFT, this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiRotaryCondensentrator.png"), 62, 38)); } @@ -109,15 +139,6 @@ public class GuiRotaryCondensentrator extends GuiMekanism drawTexturedModalRect(guiWidth + 4, guiHeight + 4, 176, 18, 18, 18); } - if(tileEntity.mode == 0) - { - drawTexturedModalRect(guiWidth + 64, guiHeight + 39, 176, tileEntity.isActive ? 123 : 107, 48, 8); - } - else if(tileEntity.mode == 1) - { - drawTexturedModalRect(guiWidth + 64, guiHeight + 39, 176, tileEntity.isActive ? 115 : 99, 48, 8); - } - super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); } @@ -141,53 +162,4 @@ public class GuiRotaryCondensentrator extends GuiMekanism } } } - - public void displayGauge(int xPos, int yPos, int scale, FluidStack fluid, GasStack gas) - { - if(fluid == null && gas == null) - { - return; - } - - int guiWidth = (width - xSize) / 2; - int guiHeight = (height - ySize) / 2; - - int start = 0; - - while(true) - { - int renderRemaining = 0; - - if(scale > 16) - { - renderRemaining = 16; - scale -= 16; - } - else { - renderRemaining = scale; - scale = 0; - } - - mc.renderEngine.bindTexture(MekanismRenderer.getBlocksTexture()); - - if(fluid != null) - { - drawTexturedModelRectFromIcon(guiWidth + xPos, guiHeight + yPos + 58 - renderRemaining - start, fluid.getFluid().getIcon(), 16, 16 - (16 - renderRemaining)); - } - else if(gas != null) - { - drawTexturedModelRectFromIcon(guiWidth + xPos, guiHeight + yPos + 58 - renderRemaining - start, gas.getGas().getIcon(), 16, 16 - (16 - renderRemaining)); - } - - start+=16; - - if(renderRemaining == 0 || scale == 0) - { - break; - } - } - - mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiRotaryCondensentrator.png")); - drawTexturedModalRect(guiWidth + xPos, guiHeight + yPos, 176, 40, 16, 59); - } } diff --git a/common/mekanism/common/tile/TileEntityAdvancedElectricMachine.java b/common/mekanism/common/tile/TileEntityAdvancedElectricMachine.java index fbd6ef008..825a7362d 100644 --- a/common/mekanism/common/tile/TileEntityAdvancedElectricMachine.java +++ b/common/mekanism/common/tile/TileEntityAdvancedElectricMachine.java @@ -18,6 +18,7 @@ import mekanism.common.tile.component.TileComponentUpgrade; import mekanism.common.util.ChargeUtils; import mekanism.common.util.InventoryUtils; import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; import mekanism.common.util.StackUtils; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -45,16 +46,14 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM * * @param soundPath - location of the sound effect * @param name - full name of this machine - * @param location - GUI texture path of this machine * @param perTick - how much energy this machine uses per tick. * @param secondaryPerTick - how much secondary energy (fuel) this machine uses per tick. * @param ticksRequired - how many ticks it takes to smelt an item. * @param maxEnergy - maximum amount of energy this machine can hold. - * @param maxSecondaryEnergy - maximum amount of secondary energy (fuel) this machine can hold. */ - public TileEntityAdvancedElectricMachine(String soundPath, String name, ResourceLocation location, double perTick, int secondaryPerTick, int ticksRequired, double maxEnergy) + public TileEntityAdvancedElectricMachine(String soundPath, String name, double perTick, int secondaryPerTick, int ticksRequired, double maxEnergy) { - super(soundPath, name, location, perTick, ticksRequired, maxEnergy); + super(soundPath, name, MekanismUtils.getResource(ResourceType.GUI, "GuiAdvancedMachine.png"), perTick, ticksRequired, maxEnergy); sideOutputs.add(new SideData(EnumColor.GREY, InventoryUtils.EMPTY)); sideOutputs.add(new SideData(EnumColor.DARK_RED, new int[] {0})); diff --git a/common/mekanism/common/tile/TileEntityBasicMachine.java b/common/mekanism/common/tile/TileEntityBasicMachine.java index afe21a30d..44590383b 100644 --- a/common/mekanism/common/tile/TileEntityBasicMachine.java +++ b/common/mekanism/common/tile/TileEntityBasicMachine.java @@ -3,6 +3,7 @@ package mekanism.common.tile; import java.util.ArrayList; import mekanism.api.Coord4D; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.client.sound.IHasSound; import mekanism.common.IActiveState; import mekanism.common.IInvConfiguration; @@ -71,7 +72,7 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp * The foundation of all machines - a simple tile entity with a facing, active state, initialized state, sound effect, and animated texture. * @param soundPath - location of the sound effect * @param name - full name of this machine - * @param path - GUI texture path of this machine + * @param location - GUI texture path of this machine * @param perTick - the energy this machine consumes every tick in it's active state * @param ticksRequired - how many ticks it takes to run a cycle * @param maxEnergy - how much energy this machine can store @@ -86,6 +87,8 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp isActive = false; } + public abstract ProgressBar getProgressType(); + @Override public void onUpdate() { @@ -212,6 +215,15 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp return operatingTicks*i / MekanismUtils.getTicks(getSpeedMultiplier(), TICKS_REQUIRED); } + /** + * Gets the scaled progress level for the GUI. + * @return + */ + public double getScaledProgress() + { + return ((double)operatingTicks) / ((double)MekanismUtils.getTicks(getSpeedMultiplier(), TICKS_REQUIRED)); + } + @Override public double getMaxEnergy() { diff --git a/common/mekanism/common/tile/TileEntityChanceMachine.java b/common/mekanism/common/tile/TileEntityChanceMachine.java index 031bab9a6..242b19f4d 100644 --- a/common/mekanism/common/tile/TileEntityChanceMachine.java +++ b/common/mekanism/common/tile/TileEntityChanceMachine.java @@ -17,7 +17,7 @@ import net.minecraft.util.ResourceLocation; import dan200.computercraft.api.peripheral.IComputerAccess; import dan200.computercraft.api.lua.ILuaContext; -public class TileEntityChanceMachine extends TileEntityBasicMachine +public abstract class TileEntityChanceMachine extends TileEntityBasicMachine { public TileEntityChanceMachine(String soundPath, String name, ResourceLocation location, double perTick, int ticksRequired, double maxEnergy) { diff --git a/common/mekanism/common/tile/TileEntityChemicalCrystallizer.java b/common/mekanism/common/tile/TileEntityChemicalCrystallizer.java index 6257ddedf..fb6743087 100644 --- a/common/mekanism/common/tile/TileEntityChemicalCrystallizer.java +++ b/common/mekanism/common/tile/TileEntityChemicalCrystallizer.java @@ -325,6 +325,11 @@ public class TileEntityChemicalCrystallizer extends TileEntityElectricBlock impl return operatingTicks*i / TICKS_REQUIRED; } + public double getScaledProgress() + { + return ((double)operatingTicks) / ((double)TICKS_REQUIRED); + } + @Override public void setActive(boolean active) { diff --git a/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java b/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java index eddf721c3..ddb330d9a 100644 --- a/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java +++ b/common/mekanism/common/tile/TileEntityChemicalDissolutionChamber.java @@ -218,6 +218,11 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc return operatingTicks*i / TICKS_REQUIRED; } + public double getScaledProgress() + { + return ((double)operatingTicks) / ((double)TICKS_REQUIRED); + } + public boolean canOperate() { if(inventory[1] == null) diff --git a/common/mekanism/common/tile/TileEntityChemicalInjectionChamber.java b/common/mekanism/common/tile/TileEntityChemicalInjectionChamber.java index 6da679821..12ad56a04 100644 --- a/common/mekanism/common/tile/TileEntityChemicalInjectionChamber.java +++ b/common/mekanism/common/tile/TileEntityChemicalInjectionChamber.java @@ -9,6 +9,7 @@ import mekanism.api.gas.GasTransmission; import mekanism.api.gas.IGasHandler; import mekanism.api.gas.IGasItem; import mekanism.api.gas.ITubeConnection; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.common.Mekanism; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.recipe.RecipeHandler.Recipe; @@ -21,7 +22,7 @@ public class TileEntityChemicalInjectionChamber extends TileEntityAdvancedElectr { public TileEntityChemicalInjectionChamber() { - super("ChemicalInjectionChamber.ogg", "ChemicalInjectionChamber", new ResourceLocation("mekanism", "gui/GuiChemicalInjectionChamber.png"), Mekanism.chemicalInjectionChamberUsage, 1, 200, MachineType.CHEMICAL_INJECTION_CHAMBER.baseEnergy); + super("ChemicalInjectionChamber.ogg", "ChemicalInjectionChamber", Mekanism.chemicalInjectionChamberUsage, 1, 200, MachineType.CHEMICAL_INJECTION_CHAMBER.baseEnergy); } @Override @@ -87,4 +88,10 @@ public class TileEntityChemicalInjectionChamber extends TileEntityAdvancedElectr { return gas == GasRegistry.getGas("sulfuricAcid") || gas == GasRegistry.getGas("water") || gas == GasRegistry.getGas("hydrogenChloride"); } + + @Override + public ProgressBar getProgressType() + { + return ProgressBar.YELLOW; + } } diff --git a/common/mekanism/common/tile/TileEntityChemicalOxidizer.java b/common/mekanism/common/tile/TileEntityChemicalOxidizer.java index 7d15f71d5..73eb08395 100644 --- a/common/mekanism/common/tile/TileEntityChemicalOxidizer.java +++ b/common/mekanism/common/tile/TileEntityChemicalOxidizer.java @@ -198,6 +198,11 @@ public class TileEntityChemicalOxidizer extends TileEntityElectricBlock implemen return operatingTicks*i / TICKS_REQUIRED; } + public double getScaledProgress() + { + return ((double)operatingTicks) / ((double)TICKS_REQUIRED); + } + public boolean canOperate() { if(inventory[0] == null) diff --git a/common/mekanism/common/tile/TileEntityCombiner.java b/common/mekanism/common/tile/TileEntityCombiner.java index 4f4b623a9..57315799c 100644 --- a/common/mekanism/common/tile/TileEntityCombiner.java +++ b/common/mekanism/common/tile/TileEntityCombiner.java @@ -5,6 +5,7 @@ import java.util.Map; import mekanism.api.gas.Gas; import mekanism.api.gas.GasRegistry; import mekanism.api.gas.GasStack; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.common.Mekanism; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.recipe.RecipeHandler.Recipe; @@ -17,7 +18,7 @@ public class TileEntityCombiner extends TileEntityAdvancedElectricMachine { public TileEntityCombiner() { - super("Combiner.ogg", "Combiner", new ResourceLocation("mekanism", "gui/GuiCombiner.png"), Mekanism.combinerUsage, 1, 200, MachineType.COMBINER.baseEnergy); + super("Combiner.ogg", "Combiner", Mekanism.combinerUsage, 1, 200, MachineType.COMBINER.baseEnergy); } @Override @@ -42,4 +43,10 @@ public class TileEntityCombiner extends TileEntityAdvancedElectricMachine { return false; } + + @Override + public ProgressBar getProgressType() + { + return ProgressBar.STONE; + } } diff --git a/common/mekanism/common/tile/TileEntityCrusher.java b/common/mekanism/common/tile/TileEntityCrusher.java index 1877af373..9179e4d16 100644 --- a/common/mekanism/common/tile/TileEntityCrusher.java +++ b/common/mekanism/common/tile/TileEntityCrusher.java @@ -3,6 +3,7 @@ package mekanism.common.tile; import java.util.EnumSet; import java.util.Map; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.common.Mekanism; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.recipe.RecipeHandler.Recipe; @@ -15,7 +16,7 @@ public class TileEntityCrusher extends TileEntityElectricMachine public TileEntityCrusher() { - super("Crusher.ogg", "Crusher", new ResourceLocation("mekanism", "gui/GuiCrusher.png"), Mekanism.crusherUsage, 200, MachineType.CRUSHER.baseEnergy); + super("Crusher.ogg", "Crusher", Mekanism.crusherUsage, 200, MachineType.CRUSHER.baseEnergy); } @Override @@ -59,4 +60,10 @@ public class TileEntityCrusher extends TileEntityElectricMachine { return 0.5F; } + + @Override + public ProgressBar getProgressType() + { + return ProgressBar.CRUSH; + } } diff --git a/common/mekanism/common/tile/TileEntityElectricMachine.java b/common/mekanism/common/tile/TileEntityElectricMachine.java index b8fc5d904..0e22d8c70 100644 --- a/common/mekanism/common/tile/TileEntityElectricMachine.java +++ b/common/mekanism/common/tile/TileEntityElectricMachine.java @@ -9,6 +9,8 @@ import mekanism.common.tile.component.TileComponentUpgrade; import mekanism.common.util.ChargeUtils; import mekanism.common.util.InventoryUtils; import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; + import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import dan200.computercraft.api.peripheral.IComputerAccess; @@ -22,14 +24,13 @@ public abstract class TileEntityElectricMachine extends TileEntityBasicMachine * * @param soundPath - location of the sound effect * @param name - full name of this machine - * @param location - GUI texture path of this machine * @param perTick - energy used per tick. * @param ticksRequired - ticks required to operate -- or smelt an item. * @param maxEnergy - maximum energy this machine can hold. */ - public TileEntityElectricMachine(String soundPath, String name, ResourceLocation location, double perTick, int ticksRequired, double maxEnergy) + public TileEntityElectricMachine(String soundPath, String name, double perTick, int ticksRequired, double maxEnergy) { - super(soundPath, name, location, perTick, ticksRequired, maxEnergy); + super(soundPath, name, MekanismUtils.getResource(ResourceType.GUI, "GuiBasicMachine.png"), perTick, ticksRequired, maxEnergy); sideOutputs.add(new SideData(EnumColor.GREY, InventoryUtils.EMPTY)); sideOutputs.add(new SideData(EnumColor.DARK_RED, new int[] {0})); diff --git a/common/mekanism/common/tile/TileEntityElectrolyticSeparator.java b/common/mekanism/common/tile/TileEntityElectrolyticSeparator.java index 2b29e916f..9c4b9b56c 100644 --- a/common/mekanism/common/tile/TileEntityElectrolyticSeparator.java +++ b/common/mekanism/common/tile/TileEntityElectrolyticSeparator.java @@ -64,6 +64,8 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp /** Type type of gas this block is dumping. */ public boolean dumpRight = false; + public boolean isActive = false; + public TileEntityElectrolyticSeparator() { super("ElectrolyticSeparator", MachineType.ELECTROLYTIC_SEPARATOR.baseEnergy); @@ -122,9 +124,13 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp if(canOperate()) { + setActive(true); fillTanks(RecipeHandler.getElectrolyticSeparatorOutput(fluidTank, true)); setEnergy(getEnergy() - Mekanism.FROM_H2*2); } + else { + setActive(false); + } if(leftTank.getGas() != null) { @@ -401,6 +407,7 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp dumpLeft = dataStream.readBoolean(); dumpRight = dataStream.readBoolean(); + isActive = dataStream.readBoolean(); } else if(type == 1) { @@ -447,6 +454,7 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp data.add(dumpLeft); data.add(dumpRight); + data.add(isActive); return data; } @@ -654,4 +662,9 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp return false; } + + public void setActive(boolean active) + { + isActive = active; + } } diff --git a/common/mekanism/common/tile/TileEntityEnergizedSmelter.java b/common/mekanism/common/tile/TileEntityEnergizedSmelter.java index daa38e083..838d25a67 100644 --- a/common/mekanism/common/tile/TileEntityEnergizedSmelter.java +++ b/common/mekanism/common/tile/TileEntityEnergizedSmelter.java @@ -1,22 +1,23 @@ package mekanism.common.tile; import java.util.HashMap; -import java.util.List; import java.util.Map; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.common.Mekanism; import mekanism.common.block.BlockMachine.MachineType; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.util.ResourceLocation; +import com.sun.javaws.progress.Progress; + public class TileEntityEnergizedSmelter extends TileEntityElectricMachine { public static Map furnaceRecipes = new HashMap(); public TileEntityEnergizedSmelter() { - super("Smelter.ogg", "EnergizedSmelter", new ResourceLocation("mekanism", "gui/GuiEnergizedSmelter.png"), Mekanism.energizedSmelterUsage, 200, MachineType.ENERGIZED_SMELTER.baseEnergy); + super("Smelter.ogg", "EnergizedSmelter", Mekanism.energizedSmelterUsage, 200, MachineType.ENERGIZED_SMELTER.baseEnergy); } @Override @@ -24,4 +25,10 @@ public class TileEntityEnergizedSmelter extends TileEntityElectricMachine { return furnaceRecipes; } + + @Override + public ProgressBar getProgressType() + { + return ProgressBar.GREEN; + } } diff --git a/common/mekanism/common/tile/TileEntityEnrichmentChamber.java b/common/mekanism/common/tile/TileEntityEnrichmentChamber.java index dc8ca4397..c343185fb 100644 --- a/common/mekanism/common/tile/TileEntityEnrichmentChamber.java +++ b/common/mekanism/common/tile/TileEntityEnrichmentChamber.java @@ -2,6 +2,7 @@ package mekanism.common.tile; import java.util.Map; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.common.Mekanism; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.recipe.RecipeHandler.Recipe; @@ -11,7 +12,7 @@ public class TileEntityEnrichmentChamber extends TileEntityElectricMachine { public TileEntityEnrichmentChamber() { - super("Chamber.ogg", "EnrichmentChamber", new ResourceLocation("mekanism", "gui/GuiChamber.png"), Mekanism.enrichmentChamberUsage, 200, MachineType.ENRICHMENT_CHAMBER.baseEnergy); + super("Chamber.ogg", "EnrichmentChamber", Mekanism.enrichmentChamberUsage, 200, MachineType.ENRICHMENT_CHAMBER.baseEnergy); } @Override @@ -25,4 +26,10 @@ public class TileEntityEnrichmentChamber extends TileEntityElectricMachine { return 0.3F; } + + @Override + public ProgressBar getProgressType() + { + return ProgressBar.BLUE; + } } diff --git a/common/mekanism/common/tile/TileEntityMetallurgicInfuser.java b/common/mekanism/common/tile/TileEntityMetallurgicInfuser.java index 423245fc4..b46fefc74 100644 --- a/common/mekanism/common/tile/TileEntityMetallurgicInfuser.java +++ b/common/mekanism/common/tile/TileEntityMetallurgicInfuser.java @@ -321,6 +321,11 @@ public class TileEntityMetallurgicInfuser extends TileEntityElectricBlock implem return operatingTicks*i / MekanismUtils.getTicks(getSpeedMultiplier(), TICKS_REQUIRED); } + public double getScaledProgress() + { + return ((double)operatingTicks) / ((double)MekanismUtils.getTicks(getSpeedMultiplier(), TICKS_REQUIRED)); + } + @Override public void invalidate() { diff --git a/common/mekanism/common/tile/TileEntityOsmiumCompressor.java b/common/mekanism/common/tile/TileEntityOsmiumCompressor.java index 09721e0ff..73d39a150 100644 --- a/common/mekanism/common/tile/TileEntityOsmiumCompressor.java +++ b/common/mekanism/common/tile/TileEntityOsmiumCompressor.java @@ -5,6 +5,7 @@ import java.util.Map; import mekanism.api.gas.Gas; import mekanism.api.gas.GasRegistry; import mekanism.api.gas.GasStack; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.common.Mekanism; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.recipe.RecipeHandler.Recipe; @@ -16,7 +17,7 @@ public class TileEntityOsmiumCompressor extends TileEntityAdvancedElectricMachin { public TileEntityOsmiumCompressor() { - super("Compressor.ogg", "OsmiumCompressor", new ResourceLocation("mekanism", "gui/GuiCompressor.png"), Mekanism.osmiumCompressorUsage, 1, 200, MachineType.OSMIUM_COMPRESSOR.baseEnergy); + super("Compressor.ogg", "OsmiumCompressor", Mekanism.osmiumCompressorUsage, 1, 200, MachineType.OSMIUM_COMPRESSOR.baseEnergy); } @Override @@ -54,4 +55,10 @@ public class TileEntityOsmiumCompressor extends TileEntityAdvancedElectricMachin { return false; } + + @Override + public ProgressBar getProgressType() + { + return ProgressBar.RED; + } } diff --git a/common/mekanism/common/tile/TileEntityPRC.java b/common/mekanism/common/tile/TileEntityPRC.java index 9cf1dcc92..433291a24 100644 --- a/common/mekanism/common/tile/TileEntityPRC.java +++ b/common/mekanism/common/tile/TileEntityPRC.java @@ -14,6 +14,7 @@ import mekanism.api.gas.GasTank; import mekanism.api.gas.GasTransmission; import mekanism.api.gas.IGasHandler; import mekanism.api.gas.ITubeConnection; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.common.Mekanism; import mekanism.common.SideData; import mekanism.common.block.BlockMachine.MachineType; @@ -127,6 +128,12 @@ public class TileEntityPRC extends TileEntityBasicMachine implements IFluidHandl } } + @Override + public ProgressBar getProgressType() + { + return ProgressBar.MEDIUM; + } + @Override public boolean isItemValidForSlot(int slotID, ItemStack itemstack) { @@ -195,9 +202,9 @@ public class TileEntityPRC extends TileEntityBasicMachine implements IFluidHandl } } - if(products.getGasOutput() != null) + if(products.getGasOutput() != null && outputGasTank.getGas() != null) { - products.getGasOutput().isGasEqual(outputGasTank.getGas()); + return products.getGasOutput().isGasEqual(outputGasTank.getGas()) && products.getGasOutput().amount <= outputGasTank.getNeeded(); } return true; diff --git a/common/mekanism/common/tile/TileEntityPrecisionSawmill.java b/common/mekanism/common/tile/TileEntityPrecisionSawmill.java index f5b5557a0..41d21d0de 100644 --- a/common/mekanism/common/tile/TileEntityPrecisionSawmill.java +++ b/common/mekanism/common/tile/TileEntityPrecisionSawmill.java @@ -2,16 +2,20 @@ package mekanism.common.tile; import java.util.Map; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.common.Mekanism; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; + import net.minecraft.util.ResourceLocation; public class TileEntityPrecisionSawmill extends TileEntityChanceMachine { public TileEntityPrecisionSawmill() { - super("PrecisionSawmill.ogg", "PrecisionSawmill", new ResourceLocation("mekanism", "gui/GuiPrecisionSawmill.png"), Mekanism.precisionSawmillUsage, 200, MachineType.PRECISION_SAWMILL.baseEnergy); + super("PrecisionSawmill.ogg", "PrecisionSawmill", MekanismUtils.getResource(ResourceType.GUI, "GuiBasicMachine.png"), Mekanism.precisionSawmillUsage, 200, MachineType.PRECISION_SAWMILL.baseEnergy); } @Override @@ -25,4 +29,10 @@ public class TileEntityPrecisionSawmill extends TileEntityChanceMachine { return 0.7F; } + + @Override + public ProgressBar getProgressType() + { + return ProgressBar.PURPLE; + } } diff --git a/common/mekanism/common/tile/TileEntityPurificationChamber.java b/common/mekanism/common/tile/TileEntityPurificationChamber.java index 7a13cac4f..b86ebe224 100644 --- a/common/mekanism/common/tile/TileEntityPurificationChamber.java +++ b/common/mekanism/common/tile/TileEntityPurificationChamber.java @@ -9,6 +9,7 @@ import mekanism.api.gas.GasTransmission; import mekanism.api.gas.IGasHandler; import mekanism.api.gas.IGasItem; import mekanism.api.gas.ITubeConnection; +import mekanism.client.gui.GuiProgress.ProgressBar; import mekanism.common.Mekanism; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.recipe.RecipeHandler.Recipe; @@ -21,7 +22,7 @@ public class TileEntityPurificationChamber extends TileEntityAdvancedElectricMac { public TileEntityPurificationChamber() { - super("PurificationChamber.ogg", "PurificationChamber", new ResourceLocation("mekanism", "gui/GuiPurificationChamber.png"), Mekanism.purificationChamberUsage, 1, 200, MachineType.PURIFICATION_CHAMBER.baseEnergy); + super("PurificationChamber.ogg", "PurificationChamber", Mekanism.purificationChamberUsage, 1, 200, MachineType.PURIFICATION_CHAMBER.baseEnergy); } @Override @@ -81,4 +82,10 @@ public class TileEntityPurificationChamber extends TileEntityAdvancedElectricMac { return gas == GasRegistry.getGas("oxygen"); } + + @Override + public ProgressBar getProgressType() + { + return ProgressBar.RED; + } } diff --git a/common/mekanism/generators/common/tile/TileEntityHydrogenGenerator.java b/common/mekanism/generators/common/tile/TileEntityHydrogenGenerator.java index ffde68601..1610f0703 100644 --- a/common/mekanism/generators/common/tile/TileEntityHydrogenGenerator.java +++ b/common/mekanism/generators/common/tile/TileEntityHydrogenGenerator.java @@ -214,13 +214,7 @@ public class TileEntityHydrogenGenerator extends TileEntityGenerator implements { super.readFromNBT(nbtTags); - String gasName = nbtTags.getString("gasName"); - int stored = nbtTags.getInteger("gasStored"); - - if(stored > 0 && !gasName.equals("none")) - { - fuelTank.setGas(new GasStack(GasRegistry.getGas(gasName), stored)); - } + fuelTank.read(nbtTags.getCompoundTag("fuelTank")); } @Override @@ -228,8 +222,7 @@ public class TileEntityHydrogenGenerator extends TileEntityGenerator implements { super.writeToNBT(nbtTags); - nbtTags.setString("gasName", fuelTank.getGas() == null ? "none" : fuelTank.getGas().getGas().getName()); - nbtTags.setInteger("gasStored", fuelTank.getStored()); + nbtTags.setCompoundTag("fuelTank", fuelTank.write(new NBTTagCompound())); } @Override diff --git a/resources/assets/mekanism/gui/GuiChamber.png b/resources/assets/mekanism/gui/GuiChamber.png deleted file mode 100644 index 7af0c041ccf5ab2f70795d886c0a6bd8fba055ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2799 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 VNgq_tiGNK1+`-NM>50Ife*@P7yHEfC diff --git a/resources/assets/mekanism/gui/GuiChemicalCrystallizer.png b/resources/assets/mekanism/gui/GuiChemicalCrystallizer.png index edaa31b24782cc3774115969e14649d32cdbd334..cd0dc63d80eb07d3161ee19bc5f3a1599ef4ce8e 100644 GIT binary patch delta 1108 zcmbO!^h zDiu$jtTWZsDDnaO3GNUs9&@ABs;5^NaeXirX?1s3D((Ju?(E&0x!3B;%IxH?Xq>W; zP2YDf@^tVK`&SJnB4_RG{zQIxX8-lq+P>-f$7|1gPWyO$>sNoJ`qle2UY+IGQ}_D# z{deD|Kem51^QeE;v(G!Vui3_V{S|4rnw1*%V#~=CAwj|Jqe}mNNF3FSv*dree*N;B zOc8%nUf!sFw$IX-Re_;_fq{u3<>4KX37h<*_kF+lg@fU5+Qi#TK+%#a?hhY6Bpj>G zGm)Cf!uX@UzrR0iZ*$w>M4NhB+pSWMU%fiz!o?udU(U$V&=dLO?G8>3CI$`$1qKJX zJ1i=h_gDoOjG$(LL=WWUF-hVVIK#o~=N5>|eWV6|Sw`?%q&%XbVQvUNdH@f%hoLw<<$BNfhU5ierGwja$ z)yR>ug|(qpf7uipd;4-NCMJhZvs|a%dcP-b{o_xcJ}ueb?$7LWEQav`*Mkl{J-vVb z=KBAArO%+U-n;xt{n4tueH|~3Jlf9M5GwrQ)FW|*6BQr18B+X!er8~VdLGVbn3DU~ zHyDeo^XE>2!LPl@5I@P%U)HhnKkvSc3bsh$H&E=zAQO@7ZV zUJnXaaH4pU_PUax`JlqF$Az!i4f_gTEK^c?wQHTS(!bIVO~Q>mms<<(&Eqhc>7%5S zv@yb@{;u(yb71gcE{-7;x8B}apC|1pbKv8Bw?@_WPZErdo(Tsw zx;|5zsx#Hq$nXR66ILzOHtCsjRZp)l(%Q+XZ}~IH~QVZ=vL2x?dR`S zys!IT^yhtL+Na60Zst7eEbZ?P+Ru`(HEO5UmRl7zeH|S?YvkVl>v<$ne$M&lua_p? z43p=p$X1`dW16nV$ibk%(7?bDX;IGUakE`F{`ZSd91M5UCPgzbFfnYY;{5RA$BVA= zI|&8_f-DdA+uGXhe5HHk{rCFEKY#ALC=nhWuD68Yz{ejV4h$z|c;4&rbr4{1U|?Wm z_>>?#VaZR3a2_WE)SBHlSyVFZSOpl2z&6Zd$T;=>GdIJ`TgM%B|JL1a-NM3P!+1cj zCgaC@doG40r6Ncu42SnTFFcs9+-mU1lm?4rHS+!N+sCvW2j4Lnh>x*$SK8XJ*qOj4n z;bn=GpkQj`u@bAlsY&^DymjrK_s-nhs9qmAEn2-omaTq4GUE^Xi40a^4Zq&)t8B0T z`(0)}!?e>&%atnMFy`F58-M@h>;2DvuxyCYd;IL#G3!ZrtO+JkN0T-dxQj9>En2l| zl}4A+Y=$?tzBseEC@fZGcvEe(^vmacd-iP6Vq&^r^zL8&{E(G@&%FM+YuBDVIxGsG zJwx6{&iKR8U~Mm3$E2}i$BrLAjpzS*r_Z2P|LNA2#s93Yy)G3MTsz~BARkNP;_TB; z#2HRhe42cnO}0Mw!0+F`kKJEz{q@llBg4MJdp76ZzFj-Bs*B-@zJu`LhX!hsI}3Y0 zKPwDdJ#}UlJhni=4o)3N3=ng|?6uDszf|p&;A`*Q57g*vEh-oo8Y(LIvA2S zxog6W3wnWOLcDiicFtXv60Hq|w+zm`4sNszVt6IKfOGjhspT&%%$DmiPQJh{?gvWC z4h%6&0t^byeynDGua7@0n8W2$G>0n(VoJ*QALr}lxVr?3xSGyB`{?1rgQAT+Ie800 z%FD~wad>WE-0`2m#U(_KvvXfL-#$lK;Y@>=d#Wz Gp$PzRoX*Ms diff --git a/resources/assets/mekanism/gui/GuiChemicalDissolutionChamber.png b/resources/assets/mekanism/gui/GuiChemicalDissolutionChamber.png index ceb27bc6dc157d6d4c8a7b987d37dcf2ef53c615..3c2b3dceb40402deecad778bdf590476225f7943 100644 GIT binary patch delta 923 zcmbO!_+4N_Fbj_mgT8j?1${OK1{Rjd@hqbCGL6g%;UYT^$SI1-PKuUq;4a|$t}!iU z;fby1Cv?dzbv(7iNYUk^+M4>bvU$t9L{fXM&zn9sGBxPWB<5EW%<6yquQ% zrPD`Nwkh{}7|!!Kc4Z_+h z7iMg}siRb{H0^Y1%@2{668kN`KmC3Eu@0k8-Kvrork`)j*}(T$-oqH{GcY+E_9^lP3NSDNWnQEUPgqsSrNCfv zhLF;Fu-aJuKi|ul7`}cIIUoc!7ii3{n=DJR{^>U`Trik?2UT<)69)sY@kw1qux$bi z3+DSeta_$Nj8X@N1say=j0}Pr&Bq&N_^{W1`SIh&r{d*PSQyGoS7!a5dHr>1OiWA! z6T>@(gfHa`>FMeE_MbP_|K?`6s+}nN*Z$h;QWqD&$@hgA`W8$%sn2lX!xM3aj5(ly z()}co;36j{=k{}-+T>3DaE2e^-@kufTxI|K`E#ZOP6iGJV0hXx{M(eq#+Y#-#b{$< zn`%A7hGy%A*|TRK)W1*~d**rZV~OW?AIHSS&02Xpim4>l`~~Z>%b76oHDTJuSK(m+ zi2`UCK!YA6w!k#{JoAfPddn`qd?0SvSEv!()iI~Iuj9w#2dwH$lFM5P@6F>dnSEAC zDQRbPOy0i3Zyxg{d}ic%ctrX!kL>YIhi{N*1Vu2a=^zmYh8QNG9gco1Mt&b3Z?K2Z z7J@H4${A+!Cvd3WlSqGI;m5LxeR3YVq%|=4Fg*|gh7NC$(uBe;`S!mztCR$$oal6z z21#6dPG9qNSk5F3b{5x}My3rv8QKb7tu1Vue1KiuN$N>R!ebG8zTb~S5>^2*B#|xH zdAq*sv58WUm!`g0_l~`LOI;Tzt~U?(boJ^~Z70zjhIe)hf`T_y7hZa=H`$OQaIymj chj`Bce^%!&o*}yXe=-1pr>mdKI;Vst0MCwI2><{9 delta 923 zcmew^FjH_tFbfY4gS?V+Pvc((1{Sr+@hqbCc1*S>L|yeZxO=#^Ke@*KfN9Pl+b-2` zjUC@4SG)+6TH>=xwMD}$@$cr%pKU^yXe96Xw&%?mt;vtJ%LKGt`S`v&#{_SeoRFo;U^A2&O*frVjP0eeAd>D8aCvzB$<%t@1ZTvIXU^XFpY zuL0f-%QCI@9!N2Qi$5*OTo%PNIgnk{2Nb>ykT|)L_O_D2_wtbxqnCe_jv4a(ouZ`l ze2%ixKdXv^oesxd9=6E$XPM= diff --git a/resources/assets/mekanism/gui/GuiChemicalInjectionChamber.png b/resources/assets/mekanism/gui/GuiChemicalInjectionChamber.png deleted file mode 100644 index 0d353fbd03505e59a6f80b0bf858dd27c891d9a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2828 zcmcImc{tSD8~>7!iW1qzrARI!DO=X86OEcm2)Sj6WGpdC%yiud*;6sJ*e0gQHiL|1 zT+EOyMPV$%$Pi;N3}eaty7!;o^Lu``|9| zU@z3x5)J@-pvngb3xb1d@EdOc*sf?*#zigNaYN5fWa~R8tbC z>+LRmp^JP8jd7;vlrxncDT3xmQhVk3c5m8s+VkhES=w;f=YfTsfkh?bpdPt5D0Do; z=y~{w#%udE$>uwDnOpeV+Uq}ARk9S(^?quX2&A4$j13sdLn*-RjnvseHPu%Xcd}Gu49ZXe)o~ z&4aTL)b%R~O5}u;n%P*MNU01QMewEslXY!PPvJ!$TdgkPj>_gC_-7Q|LjG**(MSD> zku`zz6?S)=6uW%A!|U|aOMw@$OPw(gNc_glUeDLUOX$j?9@$4cVszt>ZBQoDG7qIc z-qU-!FWT#s9AV{hMX>(j+nm&ZBJqV=Qk$iah>r)2k>RT25`}x>mD+iw+J^i3;)h?$ zCf;h9AcS}vr*y9e+*Msv=_+>g(xABFi?9DWz8__W(3tGi>n(n0K^FbE5~6(B>XWBP zTp~46L+wfHjj_C&ClaIWcE!b7j^)4b6!ejFm5GaIh~_3W-`M{!x=us|UM+tk>v~;l zyxU=QZv3G#huQs+PUEK*YWlTA4y&&PeAcs&jBqA{n39n=I zUx5wZeO1GI=MvB2t=K3X(hz#zn^}+v?kL1Nok%sA)Eg_1M#YIiJmiA&~*I>e#u~l^FKk zkaBE#=Z~~aoe1M~U#>rQCAP43{0SkMP(ol6ONa=9LK%TGxRWKs%H1CIdh-IEk9>Bw?goxVN25?fR5_=j9m z)0nEbm6@beGDD1oay_OS=dQi_@yp!)2rF8_g_9!IqV4_OOEPs7bEU5fKK|Mw)-TIi zR82}lxoYyQ0%`-yu)-99j#q)tEyl$aE$(UvOd-~&85a?MeChJ%N~$y0-w_0jBW#i{ zhq~DrEL%%EofU+4whf9>j;i3Nq#~=%h}hyupV}TG$n_0oq`|gxmGlJQOT$pxZB`7{ zG$w?^dYYB6#VhJ{*k{ikl!?T5Mn{GCPS1I_-WOgmb#hr_c6|D@*==?e&6#U(27NJ4K1TBEijK32`!RWAzQY}`GnMWXImNq z&mw;pEQo*i*faNl@!lRsiG9wZ_4<`TX!UaLnJ}%Yjhb&%&dEyY@KlP9!idaOEhSzH zlpZE6^9#ZBTmIIOX%w_(cp^lPw`9OuJTkqKj;cx@8T-nN-7KN4n56W8wVJoGFj-PgLBXK_ z4#j?!iNX&DT${EZFMgh?2z;ftBuEVm4t}6etOr?Pg;*?Sfk6#PT$mqg8sjwjk1yS5 z7V&mibZ*Qd#ivaPcPrg%*y)E)6+A*KGJ|<3x9JNZb$OTCR$fkRxVC< zVhA+WSleB9FXuwl_}crt6Q&#U7HRpTY%zt1I`_%RNjTmy*0iFuG$mIRj_ZRLT`I4r zNQYt5i;9X)VmdFWW#}-_fNNP?T%5nZe}2!+e2w-eUYTWOWg*ErIy&1s@p$}OJib7q z{f=SI7-M3>6LfBv16$jSiqEyJb9X5D+TPe`o|KdXmuShH{;{!f-;d}*p;F~@gvp_A zE~&{VD0DYBH_vNrS;4Ava&kI4JNG*LKsZb)Plu5*v$O4qF7lMI)m8n9iV9z%OH;`y zOy?|{?Gq7k+Q!DlR~M566QCRJfvq(zHPBdvG?x36xCauc2ZjtU@ihTa2`+e00Ud(z_z|e)1#6JmbUO;O7r~D5y7H-1mLn zWxbZopDhYagFqmAe57bJ+OP44!O*wUPC~MS!^59j=cT&fb!)Zz{fH+F4YQ`Fr$5O^`n-S7SMl3S687Uu3*4l)PcUaxd|rR z9tJA}r&um{>7byX@DdLc%9Ki_8W#ikU2 zs$Tl!DE+{LXtB`^cRM>fXBU^?B@phRYi%OV(aeFl;}?U|_;hP-?tc30Sw($)0EFQho{e>QX?St#5wOP{-R|V<+_tt>6ZAM_EJ#;R zFQ-V853Gv>fPH}3c7gO?%HP-=hW$>cw6-=oBO}9ZOPnDci}6)%0|lD4;WxHZonMBj z@|eSlH^bp@&@>{E*r?qR+5re^k-eN2DEiOjsqtoWKVt_p(7zL86Jt*+MaIx-P_>Dp zz=^Iz1<(xjagWD5ziW&n;&I48&|Be&U;dq7gaKi+8%RAv7XO&X&Txh$AJA3G52x7u z6P)G*NskXN;-8H<-c^O;=b%K$^qtjva3iwJaz?cQOZ;E5@ONGW$eQ3dcL>KX$D|}T zEtjbsuS&Z7z>WWJwp$5U>+X|2cLJ1Pc*$3mYc*B}oqE*aMZesTYyjY%h(OZg-2Oaf h9JXDE{$GSHx++$tkXp+@$?x5E0JVZyzB}Xb`(GZu2!{Xw diff --git a/resources/assets/mekanism/gui/GuiChemicalOxidizer.png b/resources/assets/mekanism/gui/GuiChemicalOxidizer.png index acd11f5ba95a4055c05db518f838e164a520260b..2264bfbf50ff83172e69410869c49c953d506afd 100644 GIT binary patch delta 904 zcmbOw_(NbrFiX7nH6f(eN;T;%SqW8nrBZ4KaaF zn5tVsN<8vv8T1Zl-dP+`)T(sdj(KYJ6gJJtryM#S`9}Od^Tx(sRP&U?dRu+#&8JL0 zYOzjPc=O-G&)3ro?%#fXT*Uu=-2K~zJ=-SRtA3vElvaOv$#%ht`Z}3o<=>xQ{uuxH z%#-CN-A50}zLv{hTE~4LYim*HiCZ~l-5niIizMgooAb>4`NBUx>Sn1nob;dAw>M30 zmhp5376t(Z2Zjc%o){*tvb~Srzl)J$Ot|4w@q8b{3fW zJTpekS<4xi9O{n}rS?|o`TBZwh5$W(Mjb}5xdIFeX8SsHJ^RnZ!60gUQWsTJvwTI;B;ORJ7;xhZ}v!~DVX1OsW#7|ze zWq#$}xZ_8UwyH8b;A3E`XD_I$`}fIs{;%!(83OjmT)X%`d2gJ%ON!x7UB(A2MKk{} zF^KxtF*cmyWZ+;3Q1)kJd-CvM;)M6vMl*jDur|~O7S`9>ulQ~(*Ux$Y>e_0CKdEPV zm;x4_Oi4P-XaOXPkjrqmlmD`WKwC+2b2~R1& zgfzLDo!1wXqy!j1No&P~;Kts`e=TJCf*Un~7!t`1uk!xi><@G?@x8p{Xp-Re?c3LJ zggkl6=Cy0rt|C{BCf);o*%g$OcB+W{y30D*kRx!i0|&cA1LF_Y%%5MqKI^^y!Tn!^-i@?YG6VO3Fmz5Md!%k^4-+5(DM4#+wjoqTdG!#jo} zr(J=r@NRe&!BoMez%bQ!(YtN;pO~N2Wpv?YIq-y?k)fW2;fIDlqXxt^1RcY~5b3F@ z%E%yiqUm_U3?J(+KYsl9RBY~hnS&uGBWUV3WBuu;ONxp%UFV1ZdhQP61HOdzzP`S= zx@Wcjzlk$+O+Re)t6pdNX%WFlpE_@b8_o4GYWo?0&W&eSPy`B|D<^^*7{j3L|!CKAmC;2Q7Q^3ND87YT(ycrUh%NfGM!}rE7$h|$o zZ}~C9bIXrgT3Z_jf8WZIaeLc!?w;e1Vd9ZGVri>XAwdg_yUAUg<)LQD;ZT&zgI+?Kh9fI(%pR^6-fC<1ezu zI~~4(;u#Vrm<$Jo7$yOR1x|h}MtXB zn}z6%M;4+tAc3>u-M9H?EqXeZWzI60efH6>U$;aXyY}35@O=LK`8p2Q4U9W}GPt;? qOmA`8zk9MEhyP>+4lW4;hW(7L@A$Yb{FEza00K`}KbLh*2~7Yg0&+0` diff --git a/resources/assets/mekanism/gui/GuiCombiner.png b/resources/assets/mekanism/gui/GuiCombiner.png deleted file mode 100644 index d407ad292d1524da517b8be9873d8aceef52d049..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3200 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 diff --git a/resources/assets/mekanism/gui/GuiCompressor.png b/resources/assets/mekanism/gui/GuiCompressor.png deleted file mode 100644 index d834f11f6861279f7a59f189376b0082e1094682..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2817 zcmcImXH-+!7QVqyLm2GIclfrlb3AP^WpK$=n_T^?12NN5r%!P@x=6A^hqy~ zc0?Vc=hb02w+$rWZ5$#h<@+kP6fS*CU1!y`PVWi#iN}vuS0<>h2gf#Y#^_Qyf&Jny za8dCv?ZV@n<47oGXgpc!c* z;rHVHRT$3wMuJpxLQ3sQ>@IJ)s5Or4-4@iWZh}xF^8I48vsof5R)FSMKI0Pn?rlFD z_by9J7dHI7w@a1Z&b`a)@?st|H+Hi-1_q1&a%;%*8P8@^6`^13=iSQax05D;nKZ)! z9DKHa=<;y1*HdxwwjC)5PJfm2(4Qc<;U~;0hhh7KbTD`2W=}pp8ZXtkTdu5id^n!^ zOf1o_b)FpTcCoE@-#<)_F4OZ8>804_Onm8nepUcyhE`k{(inRAlR-0I-*&LHozZ|N zZ(L$~gra$K1;nv0`}qCD&@uC}hSvH)Y< zusV9fk{b53cK2tWH!HH55DxG0j#bLn3*ETtXDxv)+1TaraWe)iax#3&X)iz0rKxDD zPgskGbt6LmW*<7GrL`!@Qz$MvR@ww^!VG{sN|9G;n&~&6K7B2lX^Fx3uP79+b!^A1 z9}BK1PV4@f%2L7V?E5lN%e7dT*wgUM; zyrpGEPS8m2lyLGK|0>S;AL?6A$Ex*H*m*{}XkI_P(r$D=&20S*H6+B}QrU+d`@3rG?&<{p>P|Q;bwEa>tmk!oA z+3t>unda6N5&NrL*4>nGzBXAI;-YXw_4m9c#JT~>Pw3{xCcV0Gibd6Q0x;4vNx8im zQ;diSu3OD`lEB_23|SpFUmq8ZAa+Mb2Kz3pd3S{KY$NO)_h?-M1FT*>rzpl+lLHWV zci2`w5Nrcn?qWb%82JA~sNq^q~85+1X- z3dns=Z68)8cvcAN96NvhOa)9k5Y-Y@EsDLL+0DmRKb~tGuP4Gcu%(0OX{fSnqf16N zQ!lE2nU|}4OM?~T=gm?rxpud4jPIeyJ_eO}Tq6i2RM2dC8+)xV4TINpbP{$@j0=%Xz!Mu1WRT@k0S*?w#GvtHQs4yX#`vO zrO>*9vO8KielDiY!U}@WX|DQvTk=j$PGh5^CdGr4l@*jO?rZon<EWO0{U3>h0<>PfAWUp4#4+Gxm|w_|3JEw-2RGs;tCg z);|>uF8v}yGs1gi=F8FdwwATAOhwb6kPy|q(e-VcvX3@Iq%ne2Q}Z}q&bnmSnqXT& zBBl9PXJuw)k{yY*@_3cGD8QLSAP`U}RN)xvxngI!S7uyX+>vAz4UI?ONFtH=ibyO{ z>3kHMD@9e;hu4g-}T~JgkM3#631r3bF0h14| z7Nt@s6mtuU#IN+5-tSgdRtjCql4aPtlx*n+*9(J#g9Kzr0X#c9+cPp!cQq8dS&1yc zvsf$?8chRZ5|N#M#F;6SRAOTrT<>OeWJh!%Ik5m;`Q1dTD## z!QS5F`bomaW#8(F^YPzZzI^$7=cVBv)bLl&f!b32la&rxwnL%QV#m<$?MjCGE15<& zIpGqi(wcC%2vMo3y4vQX(Za&QB^8x4eo5W=&z~=Ld#hAB-VX67r~3PZhiijOAWzul zV*f3*fW1?^$D{mgiAWV?<%ghZ>0X+(7Xn1h%*;Uk%)C4+BGRm6Sj=J?+!3g^xs_G% z@DGU@OfLs-UtiylGB+F!AuB7ZsjYo*o}#(=!6aqpOx9p`FS(J%%qtyr7^yC#vHH*O zJl%*7ZEbCf3ov|dtUqd#oU`CfLhRo)ZAloZe+J1vhyA}judcXwN;44?a}T>nmVP{7R* zjBXZ?i@@dL@puKc;G9V8gs&pS?V^Y@MN-|hTq-5dzXeXiKpkCNEK?AF!paP=9@L20r((1Kmh-kKnJ`!66W8dfr0)w(UGL51o?xwCLR3=N>(WU zbGe)g?2~^6Z%_k+2L_M-cO{|>z}_}#5X!0ELzIlo^0?u)2CL(!J7|N)fi)^UZ&^9l z6RcxY-z`;`b4{^A)N5I*T)5bzs6XJE%-{}~P6;sXbpgL4|DS6I@b}i?C O!PLmou=IPkAAbk>TlB5~ diff --git a/resources/assets/mekanism/gui/GuiCrusher.png b/resources/assets/mekanism/gui/GuiCrusher.png deleted file mode 100644 index faaf37b350bf9abceebc85982f138dd9010e9109..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2855 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 diff --git a/resources/assets/mekanism/gui/GuiEnergizedSmelter.png b/resources/assets/mekanism/gui/GuiEnergizedSmelter.png deleted file mode 100644 index 0d385c9f640bd474e33ec3f0dcee555b5e136eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2801 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 V$+(zLOnzqr`Z~t9s&6<({}-+?W#0e* literal 3231 zcmeHJ_gfQd)83#I1Bhr)I?{VN(gZ>gX^}&fNEbn>lptMtzyk^f1P-7m(tDNO6GcTp zdM5&*9YTqKlu*OFeBb%;{S)5VYv*}(_S)Tn#(P%KNb83%(59We$P5Tk zjk4tR0RV#pLhFuM&@^f0%$3Ub$QoQd<-$`e#USFh8O zG{adX9Mw0{DYt1(-54Ga6=Zf}F%$^LUkUz#uxn}lc9+ zWf-*ch8jo|_vG$;uelD%uBVO}h3pueYP%d`*N7Fzu@v)kvvj!iZyN*)LLO0OI+DcR zkk8WH+Pc4&E%_{Asp4k{hF@O7t-593zn1Tre914p;KU>vgGiz3F&e^+L-DG%T=HCm z9SVEeU^9^_&|E3r_4IGUBBaFi=o>D#*uoCxW2f6g8U;kN2K1A!zI=YK0MuGrN0|2~ zsU_A^>T5lliNC9qzc?J-l7kHF1dN__Ei5VrQR3W*;#Xg~K7DGk9c1(NPn{``2jC`Q z(bd60^Dj+a)<0Nda=;IPnZP%&ywq}J)u~o^ttT*@acN823VXRaMF)8N`0=L!&TmuL z3W!A-3+zd=O`3o)05*VT5tr9(fT>W&ZZaD)+b+I+Op-P!qD3e0M|(EuXg20D`FB$|4U`m3#2sw2K3?rSax zJQ(b~0#li~#ID7RH*e^405Hft=lk_m25C-i-rh163>S~;-8=<;ETre7OG-qm-YEf5 z8XAcekSl|bqb3NP{L|O=S*?dc?_3ZMRJ?A49?{A*1iYY%78>kg)L09LO&%x08>O24 zORQ4GkZuKhW9!N5_X5oYiyHQu{;Bi~-1ID)G##_VdsURHRw^eimXlm6^de4+ZWHk$ z{W2N2Ji}jmn!{dQa*@@!xEOzJRHka#X4{sSZXS~^)l8EYkMnTl1a&$jr90mP?-fsV z+^q&e9RD>+q$o*o^h_`CgnRjJjo#%{cq5ILCFtue0<&_av$ z=r(^FBrQFZ79a)ufMxGVw41;t7zjmU0wC~`T2b~b;U<&;d(as)ml+^lC2b2{z8YVM7{xpaW3QI~NG_iB4G2h+NB4~bEnL)UPZypC z5^xaGY`gW?6C_xSH>4kq5{bnQA1!3Wlp-i?IyyRXva)$yJP|en>Sv*N@|5ebzI6MS zPqPpg%J^PRW{^5I)2q6k2-ex?=-&xkDnbaZJlv40T+maYlq7rBdjePEwD@{fc4|DW z3*Ac1#6+*YtP9I}kmgikEJEB}9Z?QHX_9)_Ry;p%Kep}r+X9faCmulH-a?NYA!1)8@%zcOHN%~ zdPMHre#0)*1bowUtxF<1CT4$g4!auQfzsptCi3W9z`}Po*x=2l86=5peNYYY+a;Rx z_4lt4hw@sy=cCk)i2SNMKV+v{1FLSmeU-qelFJ64eb{FB0p7eC z01v%J{0AA?8Oy}HI#EV){!-4c-7CF-&h^WiP6F5;wW<2_hCUk zKBh7Du1-#ZbTCN?3F42pvLF%lIM=oWkTO05EnGqj)AEF7gT&QbSr*(*!I2I^<9%ne z=E*p^Y8W8M1!{yMgb%B}Sb3&ja=$oEojx$}3YLFBRnV6^4!(292WA(?^MQd&sa` zz&unE%J~W^b!KpOw3>MPs_Njyju#W~KY8z;s15?3+r+mfA}H<&UoN{-y(6_|Mim}} z6VV#}|>Uv2`V*XZ=c;G#< z9@rhP@s6{*Dl?64-pM!4!xg%%t({=^(gV*Vz-CZaDcjx+G9E2-n>C-zJJ#`E|Hq(S zfeCx(pz6X`qis|z7P>L8Vm&aKB^h@8{mcXtiHQ?F84#mra36fW4OJ@Bg4*qnrvjK< z0eda)I2Bix>3SHLQ(Zmh9(3pzM<{D)7plJ0P?`n`pUsyp*f_(@tlbD z+^n-ORtR8y7sg6_tc6C0qd@*ft9kvaP04wL znYuaZUVV(?gka;x{igBP?6cDoV=YSx6Z>U~;}1g?FS|41E<6u6CuD_@W0mVSIXExf z{6TYN+!npF*-@mJKD(#~*egU<|AL+rs&ttE!S?5+fL8MaezLF<7in(#t3w%X+MK(i z1A0fM(E#=0zxw><#`hhu(&BOztFh7^v9kQLp0tWMvC) z-Z0)Q7uk|dIE%~!c0a=+MPvqx7|%60y7{0CyYC3M2>)d|nXV*;&K5wVMj-8j038wh fXa1l3ivY(FkBcQXe}I2V`P_ogHq@%rd=&K`Q+C6|