diff --git a/common/mekanism/client/gui/GuiDigitalMiner.java b/common/mekanism/client/gui/GuiDigitalMiner.java index c0168432f..f61e76080 100644 --- a/common/mekanism/client/gui/GuiDigitalMiner.java +++ b/common/mekanism/client/gui/GuiDigitalMiner.java @@ -6,6 +6,9 @@ import mekanism.api.Object3D; import mekanism.common.PacketHandler; import mekanism.common.PacketHandler.Transmission; import mekanism.common.inventory.container.ContainerDigitalMiner; +import mekanism.common.miner.ThreadMinerSearch.State; +import mekanism.common.network.PacketDigitalMinerGui; +import mekanism.common.network.PacketDigitalMinerGui.MinerGuiPacket; import mekanism.common.network.PacketTileEntity; import mekanism.common.tileentity.TileEntityDigitalMiner; import mekanism.common.util.MekanismUtils; @@ -54,21 +57,21 @@ public class GuiDigitalMiner extends GuiMekanism buttonList.clear(); startButton = new GuiButton(0, guiWidth + 69, guiHeight + 17, 60, 20, "Start"); - if(tileEntity.searcher.finished == true && tileEntity.running) + if(tileEntity.searcher.state != State.IDLE && tileEntity.running) { startButton.enabled = false; } stopButton = new GuiButton(1, guiWidth + 69, guiHeight + 37, 60, 20, "Stop"); - if(tileEntity.searcher.finished == false || !tileEntity.running) + if(tileEntity.searcher.state == State.IDLE || !tileEntity.running) { stopButton.enabled = false; } configButton = new GuiButton(2, guiWidth + 69, guiHeight + 57, 60, 20, "Config"); - if(tileEntity.searcher.finished == true) + if(tileEntity.searcher.state != State.IDLE) { configButton.enabled = false; } @@ -78,25 +81,59 @@ public class GuiDigitalMiner extends GuiMekanism buttonList.add(configButton); } + @Override + protected void actionPerformed(GuiButton guibutton) + { + super.actionPerformed(guibutton); + + if(guibutton.id == 0) + { + ArrayList data = new ArrayList(); + data.add(3); + + PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity().setParams(Object3D.get(tileEntity), data)); + } + else if(guibutton.id == 1) + { + ArrayList data = new ArrayList(); + data.add(4); + + PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity().setParams(Object3D.get(tileEntity), data)); + } + else if(guibutton.id == 2) + { + PacketHandler.sendPacket(Transmission.SERVER, new PacketDigitalMinerGui().setParams(MinerGuiPacket.SERVER, Object3D.get(tileEntity), 0)); + } + } + @Override public void updateScreen() { super.updateScreen(); - if(tileEntity.searcher.finished == true && tileEntity.running) + if(tileEntity.searcher.state != State.IDLE && tileEntity.running) { startButton.enabled = false; } + else { + startButton.enabled = true; + } - if(tileEntity.searcher.finished == false || !tileEntity.running) + if(tileEntity.searcher.state == State.IDLE || !tileEntity.running) { stopButton.enabled = false; } + else { + stopButton.enabled = true; + } - if(tileEntity.searcher.finished == true) + if(tileEntity.searcher.state != State.IDLE) { configButton.enabled = false; } + else { + configButton.enabled = true; + } } @Override @@ -110,6 +147,12 @@ public class GuiDigitalMiner extends GuiMekanism fontRenderer.drawString(tileEntity.fullName, 45, 6, 0x404040); fontRenderer.drawString("Inventory", 8, (ySize - 96) + 2, 0x404040); + fontRenderer.drawString(tileEntity.running ? "Running" : "Idle", 9, 19, 0x00CD00); + fontRenderer.drawString(tileEntity.searcher.state.desc, 9, 28, 0x00CD00); + + fontRenderer.drawString("Eject: " + (tileEntity.doEject ? "On" : "Off"), 9, 40, 0x00CD00); + fontRenderer.drawString("Pull: " + (tileEntity.doPull ? "On" : "Off"), 9, 49, 0x00CD00); + if(tileEntity.replaceStack != null) { GL11.glPushMatrix(); diff --git a/common/mekanism/common/block/BlockMachine.java b/common/mekanism/common/block/BlockMachine.java index c8bcde116..bddfad712 100644 --- a/common/mekanism/common/block/BlockMachine.java +++ b/common/mekanism/common/block/BlockMachine.java @@ -907,7 +907,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds OSMIUM_COMPRESSOR(Mekanism.machineBlockID, 1, "OsmiumCompressor", 4, Mekanism.osmiumCompressorUsage*400, TileEntityOsmiumCompressor.class, false), COMBINER(Mekanism.machineBlockID, 2, "Combiner", 5, Mekanism.combinerUsage*400, TileEntityCombiner.class, false), CRUSHER(Mekanism.machineBlockID, 3, "Crusher", 6, Mekanism.crusherUsage*400, TileEntityCrusher.class, false), - DIGITAL_MINER(Mekanism.machineBlockID, 4, "DigitalMiner", 2, 100000, TileEntityDigitalMiner.class, true), + DIGITAL_MINER(Mekanism.machineBlockID, 4, "DigitalMiner", 2, 100000, TileEntityDigitalMiner.class, false),//TODO BASIC_FACTORY(Mekanism.machineBlockID, 5, "BasicFactory", 11, Mekanism.factoryUsage*3*400, TileEntityFactory.class, false), ADVANCED_FACTORY(Mekanism.machineBlockID, 6, "AdvancedFactory", 11, Mekanism.factoryUsage*5*400, TileEntityAdvancedFactory.class, false), ELITE_FACTORY(Mekanism.machineBlockID, 7, "EliteFactory", 11, Mekanism.factoryUsage*7*400, TileEntityEliteFactory.class, false), diff --git a/common/mekanism/common/miner/ThreadMinerSearch.java b/common/mekanism/common/miner/ThreadMinerSearch.java index 02fc3d455..04ec03844 100644 --- a/common/mekanism/common/miner/ThreadMinerSearch.java +++ b/common/mekanism/common/miner/ThreadMinerSearch.java @@ -6,7 +6,7 @@ public class ThreadMinerSearch extends Thread { public TileEntityDigitalMiner tileEntity; - public boolean finished = false; + public State state = State.IDLE; public ThreadMinerSearch(TileEntityDigitalMiner tile) { @@ -16,14 +16,32 @@ public class ThreadMinerSearch extends Thread @Override public void run() { + state = State.SEARCHING; + if(tileEntity.isInvalid()) { return; } + + state = State.FINISHED; } public void reset() { - finished = false; + state = State.IDLE; + } + + public static enum State + { + IDLE("Not ready"), + SEARCHING("Searching"), + FINISHED("Ready"); + + public String desc; + + private State(String s) + { + desc = s; + } } } diff --git a/common/mekanism/common/tileentity/TileEntityDigitalMiner.java b/common/mekanism/common/tileentity/TileEntityDigitalMiner.java index 89d5cb38a..5e9abdba3 100644 --- a/common/mekanism/common/tileentity/TileEntityDigitalMiner.java +++ b/common/mekanism/common/tileentity/TileEntityDigitalMiner.java @@ -21,6 +21,7 @@ import mekanism.common.inventory.container.ContainerFilter; import mekanism.common.inventory.container.ContainerNull; import mekanism.common.miner.MinerFilter; import mekanism.common.miner.ThreadMinerSearch; +import mekanism.common.miner.ThreadMinerSearch.State; import mekanism.common.network.PacketTileEntity; import mekanism.common.util.ChargeUtils; import mekanism.common.util.MekanismUtils; @@ -100,6 +101,30 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I } } + public void start() + { + if(searcher.state == State.IDLE) + { + searcher.start(); + } + + running = true; + } + + public void stop() + { + if(searcher.state == State.FINISHED) + { + running = false; + } + } + + public void reset() + { + searcher.reset(); + running = false; + } + @Override public void readFromNBT(NBTTagCompound nbtTags) { @@ -211,6 +236,14 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I replaceStack = null; } } + else if(type == 3) + { + start(); + } + else if(type == 4) + { + stop(); + } return; } @@ -228,6 +261,7 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I doPull = dataStream.readBoolean(); isActive = dataStream.readBoolean(); running = dataStream.readBoolean(); + searcher.state = State.values()[dataStream.readInt()]; if(dataStream.readBoolean()) { @@ -258,6 +292,7 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I doPull = dataStream.readBoolean(); isActive = dataStream.readBoolean(); running = dataStream.readBoolean(); + searcher.state = State.values()[dataStream.readInt()]; if(dataStream.readBoolean()) { @@ -297,6 +332,7 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I data.add(doPull); data.add(isActive); data.add(running); + data.add(searcher.state.ordinal()); if(replaceStack != null) { @@ -334,6 +370,7 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I data.add(doPull); data.add(isActive); data.add(running); + data.add(searcher.state.ordinal()); if(replaceStack != null) {