diff options
author | Matej Dipčár <492666@mail.muni.cz> | 2022-09-21 18:50:50 +0200 |
---|---|---|
committer | Matej Dipčár <492666@mail.muni.cz> | 2022-09-23 02:15:52 +0200 |
commit | bb4e90ecb495ba4f6b03ac450c7401ebcc5408f3 (patch) | |
tree | c328820aa598c753a86d4f59e29e0d5681b76b8e /src/main/java/gregtech/common/covers/redstone | |
parent | 8491230594480a2fefc8f2b8df7d5f379fd35054 (diff) | |
download | GT5-Unofficial-bb4e90ecb495ba4f6b03ac450c7401ebcc5408f3.tar.gz GT5-Unofficial-bb4e90ecb495ba4f6b03ac450c7401ebcc5408f3.tar.bz2 GT5-Unofficial-bb4e90ecb495ba4f6b03ac450c7401ebcc5408f3.zip |
Add Wireless Fluid Detector Cover
Diffstat (limited to 'src/main/java/gregtech/common/covers/redstone')
-rw-r--r-- | src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java | 54 | ||||
-rw-r--r-- | src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java | 171 |
2 files changed, 198 insertions, 27 deletions
diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java index 4ee53002e3..ccfc691545 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java @@ -191,7 +191,7 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase<T extends GT_Cover_A return true; } - protected abstract class WirelessGUI<X extends WirelessData> extends GT_GUICover { + protected abstract static class WirelessGUI<X extends WirelessData> extends GT_GUICover { protected final byte side; protected final int coverID; @@ -251,17 +251,21 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase<T extends GT_Cover_A frequencyBox.setFocused(true); } + protected void genericMouseWheel(GT_GuiIntegerTextBox box, int delta, int maxValue, int minValue) { + long step = Math.max(1, Math.abs(delta / 120)); + step = (isShiftKeyDown() ? 1000 : isCtrlKeyDown() ? 50 : 1) * (delta > 0 ? step : -step); + + long value = parseTextBox(box) + step; + if (value > maxValue) value = maxValue; + else if (value < minValue) value = minValue; + + box.setText(Long.toString(value)); + } + @Override public void onMouseWheel(int x, int y, int delta) { if (frequencyBox.isFocused()) { - long step = Math.max(1, Math.abs(delta / 120)); - step = (isShiftKeyDown() ? 1000 : isCtrlKeyDown() ? 50 : 1) * (delta > 0 ? step : -step); - - long frequency = parseTextBox(frequencyBox) + step; - if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; - else if (frequency < 0) frequency = 0; - - frequencyBox.setText(Long.toString(frequency)); + genericMouseWheel(frequencyBox, delta, Integer.MAX_VALUE, 0); } } @@ -297,27 +301,23 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase<T extends GT_Cover_A update(); } - private int parseTextBox(GT_GuiIntegerTextBox box) { - if (box == frequencyBox) { - String text = box.getText(); - if (text == null) { - return 0; - } - - long frequency; - try { - frequency = Long.parseLong(text.trim()); - } catch (NumberFormatException e) { - return 0; - } - - if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; - else if (frequency < 0) frequency = 0; + protected int parseTextBox(GT_GuiIntegerTextBox box) { + String text = box.getText(); + if (text == null) { + return 0; + } - return (int) frequency; + long frequency; + try { + frequency = Long.parseLong(text.trim()); + } catch (NumberFormatException e) { + return 0; } - throw new UnsupportedOperationException("Unknown text box: " + box); + if (frequency > Integer.MAX_VALUE) frequency = Integer.MAX_VALUE; + else if (frequency < 0) frequency = 0; + + return (int) frequency; } private class GT_GuiShortTextBox extends GT_GuiIntegerTextBox { diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java new file mode 100644 index 0000000000..f7b7444577 --- /dev/null +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java @@ -0,0 +1,171 @@ +package gregtech.common.covers.redstone; + +import com.google.common.io.ByteArrayDataInput; +import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.util.GT_Utility; +import gregtech.api.util.ISerializableObject; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; +import java.util.UUID; + +public class GT_Cover_WirelessFluidDetector extends GT_Cover_AdvancedRedstoneTransmitterBase<GT_Cover_WirelessFluidDetector.FluidTransmitterData> { + + public GT_Cover_WirelessFluidDetector(ITexture coverTexture) { + super(FluidTransmitterData.class, coverTexture); + } + + @Override + public FluidTransmitterData createDataObject() { + return new FluidTransmitterData(); + } + + @Override + public FluidTransmitterData createDataObject(int aLegacyData) { + return createDataObject(); + } + + @Override + public FluidTransmitterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, + FluidTransmitterData aCoverVariable, ICoverable aTileEntity, long aTimer) { + return aCoverVariable; + } + + @Override + public boolean letsRedstoneGoOutImpl(byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, + ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean manipulatesSidedRedstoneOutputImpl(byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, + ICoverable aTileEntity) { + return true; + } + + public static class FluidTransmitterData extends GT_Cover_AdvancedRedstoneTransmitterBase.TransmitterData { + private int threshold; + + public FluidTransmitterData(int frequency, UUID uuid, boolean invert, int threshold) { + super(frequency, uuid, invert); + this.threshold = threshold; + } + + public FluidTransmitterData() { + super(); + this.threshold = 0; + } + + @Nonnull + @Override + public ISerializableObject copy() { + return new FluidTransmitterData(frequency, uuid, invert, threshold); + } + + @Nonnull + @Override + public NBTBase saveDataToNBT() { + NBTTagCompound tag = (NBTTagCompound) super.saveDataToNBT(); + tag.setInteger("threshold", threshold); + + return tag; + } + + @Override + public void writeToByteBuf(ByteBuf aBuf) { + super.writeToByteBuf(aBuf); + aBuf.writeInt(threshold); + } + + @Override + public void loadDataFromNBT(NBTBase aNBT) { + super.loadDataFromNBT(aNBT); + + NBTTagCompound tag = (NBTTagCompound) aNBT; + threshold = tag.getInteger("threshold"); + } + + @Nonnull + @Override + public ISerializableObject readFromPacket(ByteArrayDataInput aBuf, EntityPlayerMP aPlayer) { + super.readFromPacket(aBuf, aPlayer); + threshold = aBuf.readInt(); + + return this; + } + } + + /** + * GUI Stuff + */ + + @Override + public Object getClientGUIImpl(byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, ICoverable aTileEntity, + EntityPlayer aPlayer, World aWorld) { + return new FluidTransmitterGUI(aSide, aCoverID, aCoverVariable, aTileEntity); + } + + private class FluidTransmitterGUI extends TransmitterGUI<FluidTransmitterData> { + private final GT_GuiIntegerTextBox thresholdBox; + + public FluidTransmitterGUI(byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, ICoverable aTileEntity) { + super(aSide, aCoverID, aCoverVariable, aTileEntity, 1, 2); + + thresholdBox = new GT_GuiIntegerTextBox(this,1, 1 + startX, 2 + startY, spaceX * 5 - 4, 12); + } + + @Override + public void drawExtras(int mouseX, int mouseY, float parTicks) { + super.drawExtras(mouseX, mouseY, parTicks); + this.getFontRenderer().drawString( + GT_Utility.trans("222", "Fluid Threshold"), + startX + spaceX * 5, + 4 + startY, + textColor); + } + + @Override + protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) { + update(); + thresholdBox.setFocused(true); + } + + @Override + public void onMouseWheel(int x, int y, int delta) { + super.onMouseWheel(x, y, delta); + if (thresholdBox.isFocused()) { + genericMouseWheel(thresholdBox, delta, Integer.MAX_VALUE, 0); + } + } + + @Override + public void applyTextBox(GT_GuiIntegerTextBox box) { + if (box == thresholdBox) { + coverVariable.threshold = parseTextBox(thresholdBox); + } + + super.applyTextBox(box); + } + + @Override + public void resetTextBox(GT_GuiIntegerTextBox box) { + super.resetTextBox(box); + if (box == thresholdBox) { + thresholdBox.setText(Integer.toString(coverVariable.threshold)); + } + } + + @Override + protected void update() { + super.update(); + resetTextBox(thresholdBox); + } + } +} |