From c12c54f9bf8c74a5b1a2a477312a9558be121e93 Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Tue, 16 Sep 2014 02:28:37 +0100 Subject: [PATCH] Make the Laser Amplifier actually satisfactorily functional. Redstone controls, minimum and maximum energy thresholds, and time delays all work concurrently, removing the need for distinct modes. --- .../client/gui/GuiLaserAmplifier.java | 86 +++++++++++++----- .../common/tile/TileEntityLaserAmplifier.java | 86 ++++++++---------- .../gui/elements/GuiRedstoneControl.png | Bin 4427 -> 3611 bytes .../resources/assets/mekanism/lang/en_US.lang | 4 + 4 files changed, 106 insertions(+), 70 deletions(-) diff --git a/src/main/java/mekanism/client/gui/GuiLaserAmplifier.java b/src/main/java/mekanism/client/gui/GuiLaserAmplifier.java index 50c8dd187..413ed4eb2 100644 --- a/src/main/java/mekanism/client/gui/GuiLaserAmplifier.java +++ b/src/main/java/mekanism/client/gui/GuiLaserAmplifier.java @@ -27,7 +27,8 @@ public class GuiLaserAmplifier extends GuiMekanism { public TileEntityLaserAmplifier tileEntity; - public GuiTextField thresholdField; + public GuiTextField minField; + public GuiTextField maxField; public GuiTextField timerField; public GuiLaserAmplifier(InventoryPlayer inventory, TileEntityLaserAmplifier tentity) @@ -61,6 +62,7 @@ public class GuiLaserAmplifier extends GuiMekanism return "Stored: " + MekanismUtils.getEnergyDisplay(level); } }, Type.STANDARD, this, MekanismUtils.getResource(ResourceType.GUI, "GuiBlank.png"), 6, 10)); + guiElements.add(new GuiRedstoneControl(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiBlank.png"))); } @Override @@ -72,7 +74,9 @@ public class GuiLaserAmplifier extends GuiMekanism fontRendererObj.drawString(tileEntity.getInventoryName(), 55, 6, 0x404040); fontRendererObj.drawString(MekanismUtils.localize("container.inventory"), 8, (ySize - 96) + 2, 0x404040); - fontRendererObj.drawString(MekanismUtils.localize("gui.threshold" + ": " + MekanismUtils.getEnergyDisplay(tileEntity.threshold)), 75, 45, 0x404040); + fontRendererObj.drawString(tileEntity.time > 0 ? MekanismUtils.localize("gui.delay") + ": " + tileEntity.time + "t" : MekanismUtils.localize("gui.noDelay"), 26, 30, 0x404040); + fontRendererObj.drawString(MekanismUtils.localize("gui.min") + ": " + MekanismUtils.getEnergyDisplay(tileEntity.minThreshold), 26, 45, 0x404040); + fontRendererObj.drawString(MekanismUtils.localize("gui.max") + ": " + MekanismUtils.getEnergyDisplay(tileEntity.maxThreshold), 26, 60, 0x404040); super.drawGuiContainerForegroundLayer(mouseX, mouseY); } @@ -88,7 +92,8 @@ public class GuiLaserAmplifier extends GuiMekanism super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); - thresholdField.drawTextBox(); + minField.drawTextBox(); + maxField.drawTextBox(); timerField.drawTextBox(); } @@ -97,7 +102,8 @@ public class GuiLaserAmplifier extends GuiMekanism { super.updateScreen(); - thresholdField.updateCursorCounter(); + minField.updateCursorCounter(); + maxField.updateCursorCounter(); timerField.updateCursorCounter(); } @@ -106,23 +112,28 @@ public class GuiLaserAmplifier extends GuiMekanism { super.mouseClicked(mouseX, mouseY, button); - thresholdField.mouseClicked(mouseX, mouseY, button); + minField.mouseClicked(mouseX, mouseY, button); + maxField.mouseClicked(mouseX, mouseY, button); timerField.mouseClicked(mouseX, mouseY, button); } @Override public void keyTyped(char c, int i) { - if(!(thresholdField.isFocused() || timerField.isFocused()) || i == Keyboard.KEY_ESCAPE) + if(!(minField.isFocused() || maxField.isFocused() || timerField.isFocused()) || i == Keyboard.KEY_ESCAPE) { super.keyTyped(c, i); } if(i == Keyboard.KEY_RETURN) { - if(thresholdField.isFocused()) + if(minField.isFocused()) { - setThreshold(); + setMinThreshold(); + } + if(maxField.isFocused()) + { + setMaxThreshold(); } if(timerField.isFocused()) { @@ -132,24 +143,52 @@ public class GuiLaserAmplifier extends GuiMekanism if(Character.isDigit(c) || c == '.' || c == 'E' || i == Keyboard.KEY_BACK || i == Keyboard.KEY_DELETE || i == Keyboard.KEY_LEFT || i == Keyboard.KEY_RIGHT) { - thresholdField.textboxKeyTyped(c, i); + minField.textboxKeyTyped(c, i); + maxField.textboxKeyTyped(c, i); timerField.textboxKeyTyped(c, i); } } - private void setThreshold() + private void setMinThreshold() { - if(!thresholdField.getText().isEmpty()) + if(!minField.getText().isEmpty()) { double toUse; try { - toUse = Math.max(0, Double.parseDouble(thresholdField.getText())); + toUse = Math.max(0, Double.parseDouble(minField.getText())); } catch(Exception e) { - toUse = 0; + minField.setText(""); + return; + } + + ArrayList data = new ArrayList(); + data.add(0); + data.add(toUse); + + Mekanism.packetHandler.sendToServer(new TileEntityMessage(Coord4D.get(tileEntity), data)); + + minField.setText(""); + } + } + + private void setMaxThreshold() + { + if(!maxField.getText().isEmpty()) + { + double toUse; + + try + { + toUse = Math.max(0, Double.parseDouble(maxField.getText())); + } + catch(Exception e) + { + maxField.setText(""); + return; } ArrayList data = new ArrayList(); @@ -158,7 +197,7 @@ public class GuiLaserAmplifier extends GuiMekanism Mekanism.packetHandler.sendToServer(new TileEntityMessage(Coord4D.get(tileEntity), data)); - thresholdField.setText(""); + maxField.setText(""); } } @@ -186,16 +225,21 @@ public class GuiLaserAmplifier extends GuiMekanism int guiWidth = (width - xSize) / 2; int guiHeight = (height - ySize) / 2; - String prevThresh = thresholdField != null ? thresholdField.getText() : ""; - - thresholdField = new GuiTextField(fontRendererObj, guiWidth + 75, guiHeight + 55, 96, 11); - thresholdField.setMaxStringLength(10); - thresholdField.setText(prevThresh); - String prevTime = timerField != null ? timerField.getText() : ""; - timerField = new GuiTextField(fontRendererObj, guiWidth + 75, guiHeight + 15, 26, 11); + timerField = new GuiTextField(fontRendererObj, guiWidth + 96, guiHeight + 28, 36, 11); timerField.setMaxStringLength(4); timerField.setText(prevTime); + + String prevMin = minField != null ? minField.getText() : ""; + minField = new GuiTextField(fontRendererObj, guiWidth + 96, guiHeight + 43, 72, 11); + minField.setMaxStringLength(10); + minField.setText(prevMin); + + String prevMax = maxField != null ? maxField.getText() : ""; + + maxField = new GuiTextField(fontRendererObj, guiWidth + 96, guiHeight + 58, 72, 11); + maxField.setMaxStringLength(10); + maxField.setText(prevMax); } } diff --git a/src/main/java/mekanism/common/tile/TileEntityLaserAmplifier.java b/src/main/java/mekanism/common/tile/TileEntityLaserAmplifier.java index 689ea71cf..e3bd61f8b 100644 --- a/src/main/java/mekanism/common/tile/TileEntityLaserAmplifier.java +++ b/src/main/java/mekanism/common/tile/TileEntityLaserAmplifier.java @@ -7,7 +7,10 @@ import mekanism.api.MekanismConfig.general; import mekanism.api.lasers.ILaserReceptor; import mekanism.common.LaserManager; import mekanism.common.Mekanism; +import mekanism.common.base.IRedstoneControl; import mekanism.common.network.PacketTileEntity.TileEntityMessage; +import mekanism.common.tile.component.TileComponentUpgrade; +import mekanism.common.util.MekanismUtils; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; @@ -18,19 +21,19 @@ import net.minecraftforge.common.util.ForgeDirection; import io.netty.buffer.ByteBuf; -public class TileEntityLaserAmplifier extends TileEntityContainerBlock implements ILaserReceptor +public class TileEntityLaserAmplifier extends TileEntityContainerBlock implements ILaserReceptor, IRedstoneControl { public static final double MAX_ENERGY = 5E9; public double collectedEnergy = 0; public double lastFired = 0; - public double threshold = 0; + public double minThreshold = 0; + public double maxThreshold = 5E9; public int ticks = 0; public int time = 0; - public LaserEmitterMode mode = LaserEmitterMode.THRESHOLD; - public boolean poweredNow = false; - public boolean poweredLastTick = false; + public RedstoneControl controlType = RedstoneControl.DISABLED; + public boolean on = false; public Coord4D digging; @@ -66,8 +69,6 @@ public class TileEntityLaserAmplifier extends TileEntityContainerBlock implement } else { - poweredNow = worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord); - if(ticks < time) { ticks++; @@ -77,7 +78,7 @@ public class TileEntityLaserAmplifier extends TileEntityContainerBlock implement ticks = 0; } - if(shouldFire() && toFire() > 0) + if(toFire() > 0) { double firing = toFire(); @@ -125,8 +126,6 @@ public class TileEntityLaserAmplifier extends TileEntityContainerBlock implement on = false; Mekanism.packetHandler.sendToAllAround(new TileEntityMessage(Coord4D.get(this), getNetworkedData(new ArrayList())), Coord4D.get(this).getTargetPoint(50D)); } - - poweredLastTick = poweredNow; } } @@ -142,34 +141,12 @@ public class TileEntityLaserAmplifier extends TileEntityContainerBlock implement public boolean shouldFire() { - switch(mode) - { - case THRESHOLD: - return collectedEnergy >= threshold; - case REDSTONE: - return poweredNow; - case REDSTONE_PULSE: - return poweredNow && !poweredLastTick; - case TIMER: - return ticks == time; - } - return false; + return collectedEnergy >= minThreshold && ticks >= time && MekanismUtils.canFunction(this); } public double toFire() { - switch(mode) - { - case THRESHOLD: - return collectedEnergy; - case REDSTONE: - return collectedEnergy; - case REDSTONE_PULSE: - return collectedEnergy; - case TIMER: - return collectedEnergy; - } - return 0; + return shouldFire() ? Math.min(collectedEnergy, maxThreshold) : 0; } @Override @@ -178,11 +155,12 @@ public class TileEntityLaserAmplifier extends TileEntityContainerBlock implement super.getNetworkedData(data); data.add(on); - data.add(mode.ordinal()); - data.add(threshold); + data.add(minThreshold); + data.add(maxThreshold); data.add(time); data.add(collectedEnergy); data.add(lastFired); + data.add(controlType.ordinal()); return data; } @@ -196,35 +174,45 @@ public class TileEntityLaserAmplifier extends TileEntityContainerBlock implement on = dataStream.readBoolean(); - mode = LaserEmitterMode.values()[dataStream.readInt()]; - - threshold = dataStream.readDouble(); + minThreshold = dataStream.readDouble(); + maxThreshold = dataStream.readDouble(); time = dataStream.readInt(); collectedEnergy = dataStream.readDouble(); lastFired = dataStream.readDouble(); + controlType = RedstoneControl.values()[dataStream.readInt()]; return; } switch(dataStream.readInt()) { - case(0): - mode = LaserEmitterMode.values()[dataStream.readInt()]; + case 0: + minThreshold = dataStream.readDouble(); break; - case(1): - threshold = dataStream.readDouble(); + case 1: + maxThreshold = dataStream.readDouble(); break; - case(2): + case 2: time = dataStream.readInt(); break; } } - public static enum LaserEmitterMode + @Override + public RedstoneControl getControlType() { - THRESHOLD, - REDSTONE, - REDSTONE_PULSE, - TIMER; + return controlType; + } + + @Override + public void setControlType(RedstoneControl type) + { + controlType = type; + } + + @Override + public boolean canPulse() + { + return true; } } diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiRedstoneControl.png b/src/main/resources/assets/mekanism/gui/elements/GuiRedstoneControl.png index 19e2b358dd91db48db3c64731c4c08e1078473dd..6801bcc9c663720bbc13f415a16e83de2e2b484d 100644 GIT binary patch literal 3611 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 literal 4427 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 aEY9h>ph&L{6$ty2gadpFVpe71{`5Z*nM-W| diff --git a/src/main/resources/assets/mekanism/lang/en_US.lang b/src/main/resources/assets/mekanism/lang/en_US.lang index ef9251c7f..26d7e5d96 100644 --- a/src/main/resources/assets/mekanism/lang/en_US.lang +++ b/src/main/resources/assets/mekanism/lang/en_US.lang @@ -360,6 +360,10 @@ gui.finished=Finished gui.well=All is well! gui.upgrade=Upgrade gui.infinite=Infinite +gui.min=Min +gui.max=Max +gui.delay=Delay +gui.noDelay=No Delay gui.upgrades=Upgrades gui.upgrades.supported=Supported