aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java')
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java292
1 files changed, 0 insertions, 292 deletions
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java
deleted file mode 100644
index f7c8bb8cd3..0000000000
--- a/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java
+++ /dev/null
@@ -1,292 +0,0 @@
-package gregtech.common.covers;
-
-import java.util.Arrays;
-
-import javax.annotation.Nonnull;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.entity.player.EntityPlayerMP;
-import net.minecraft.nbt.NBTBase;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraftforge.common.util.ForgeDirection;
-import net.minecraftforge.fluids.Fluid;
-import net.minecraftforge.fluids.FluidStack;
-import net.minecraftforge.fluids.FluidTankInfo;
-import net.minecraftforge.fluids.IFluidHandler;
-
-import com.google.common.io.ByteArrayDataInput;
-import com.gtnewhorizons.modularui.api.screen.ModularWindow;
-import com.gtnewhorizons.modularui.common.widget.TextWidget;
-
-import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
-import gregtech.api.interfaces.ITexture;
-import gregtech.api.interfaces.tileentity.ICoverable;
-import gregtech.api.metatileentity.BaseMetaTileEntity;
-import gregtech.api.util.GT_CoverBehaviorBase;
-import gregtech.api.util.GT_Utility;
-import gregtech.api.util.ISerializableObject;
-import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
-import gregtech.common.gui.modularui.widget.CoverDataFollower_NumericWidget;
-import gregtech.common.gui.modularui.widget.CoverDataFollower_ToggleButtonWidget;
-import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalTankBase;
-import io.netty.buffer.ByteBuf;
-
-/**
- * TODO: Implement overlay rendering only with
- * {@link GT_CoverBehaviorBase#getSpecialCoverFGTextureImpl(ForgeDirection, int, ISerializableObject, ICoverable)}
- */
-public class GT_Cover_LiquidMeter extends GT_CoverBehaviorBase<GT_Cover_LiquidMeter.LiquidMeterData> {
-
- public GT_Cover_LiquidMeter(ITexture coverTexture) {
- super(LiquidMeterData.class, coverTexture);
- }
-
- @Override
- public LiquidMeterData createDataObject(int aLegacyData) {
- return new LiquidMeterData(aLegacyData == 0, 0);
- }
-
- @Override
- public LiquidMeterData createDataObject() {
- return new LiquidMeterData();
- }
-
- @Override
- protected boolean isRedstoneSensitiveImpl(ForgeDirection side, int aCoverID, LiquidMeterData aCoverVariable,
- ICoverable aTileEntity, long aTimer) {
- return false;
- }
-
- public static byte computeSignalBasedOnFluid(ICoverable tileEntity, boolean inverted, int threshold) {
- if (tileEntity instanceof IFluidHandler) {
- FluidTankInfo[] tanks = ((IFluidHandler) tileEntity).getTankInfo(ForgeDirection.UNKNOWN);
- long max = 0;
- long used = 0;
- if (tanks != null) {
- for (FluidTankInfo tank : tanks) {
- if (tank != null) {
- if (tileEntity instanceof BaseMetaTileEntity && ((BaseMetaTileEntity) tileEntity)
- .getMetaTileEntity() instanceof GT_MetaTileEntity_DigitalTankBase) {
- max += ((GT_MetaTileEntity_DigitalTankBase) ((BaseMetaTileEntity) tileEntity)
- .getMetaTileEntity()).getRealCapacity();
- } else max += tank.capacity;
- FluidStack tLiquid = tank.fluid;
- if (tLiquid != null) {
- used += tLiquid.amount;
- }
- }
- }
- }
-
- return GT_Utility.convertRatioToRedstone(used, max, threshold, inverted);
- } else {
- return 0;
- }
- }
-
- @Override
- protected LiquidMeterData doCoverThingsImpl(ForgeDirection side, byte aInputRedstone, int aCoverID,
- LiquidMeterData aCoverVariable, ICoverable aTileEntity, long aTimer) {
- byte signal = computeSignalBasedOnFluid(aTileEntity, aCoverVariable.inverted, aCoverVariable.threshold);
- aTileEntity.setOutputRedstoneSignal(side, signal);
-
- return aCoverVariable;
- }
-
- @Override
- protected LiquidMeterData onCoverScrewdriverClickImpl(ForgeDirection side, int aCoverID,
- LiquidMeterData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
- if (aCoverVariable.inverted) {
- aCoverVariable.inverted = false;
- GT_Utility.sendChatToPlayer(aPlayer, GT_Utility.trans("055", "Normal"));
- } else {
- aCoverVariable.inverted = true;
- GT_Utility.sendChatToPlayer(aPlayer, GT_Utility.trans("054", "Inverted"));
- }
- return aCoverVariable;
- }
-
- @Override
- protected boolean letsEnergyInImpl(ForgeDirection side, int aCoverID, LiquidMeterData aCoverVariable,
- ICoverable aTileEntity) {
- return true;
- }
-
- @Override
- protected boolean letsEnergyOutImpl(ForgeDirection side, int aCoverID, LiquidMeterData aCoverVariable,
- ICoverable aTileEntity) {
- return true;
- }
-
- @Override
- protected boolean letsFluidInImpl(ForgeDirection side, int aCoverID, LiquidMeterData aCoverVariable, Fluid aFluid,
- ICoverable aTileEntity) {
- return true;
- }
-
- @Override
- protected boolean letsFluidOutImpl(ForgeDirection side, int aCoverID, LiquidMeterData aCoverVariable, Fluid aFluid,
- ICoverable aTileEntity) {
- return true;
- }
-
- @Override
- protected boolean letsItemsInImpl(ForgeDirection side, int aCoverID, LiquidMeterData aCoverVariable, int aSlot,
- ICoverable aTileEntity) {
- return true;
- }
-
- @Override
- protected boolean letsItemsOutImpl(ForgeDirection side, int aCoverID, LiquidMeterData aCoverVariable, int aSlot,
- ICoverable aTileEntity) {
- return true;
- }
-
- @Override
- protected boolean manipulatesSidedRedstoneOutputImpl(ForgeDirection side, int aCoverID,
- LiquidMeterData aCoverVariable, ICoverable aTileEntity) {
- return true;
- }
-
- @Override
- protected int getTickRateImpl(ForgeDirection side, int aCoverID, LiquidMeterData aCoverVariable,
- ICoverable aTileEntity) {
- return 5;
- }
-
- // GUI stuff
-
- @Override
- public boolean hasCoverGUI() {
- return true;
- }
-
- @Override
- public ModularWindow createWindow(GT_CoverUIBuildContext buildContext) {
- return new LiquidMeterUIFactory(buildContext).createWindow();
- }
-
- private class LiquidMeterUIFactory extends UIFactory {
-
- private static final int startX = 10;
- private static final int startY = 25;
- private static final int spaceX = 18;
- private static final int spaceY = 18;
- private int maxCapacity;
-
- public LiquidMeterUIFactory(GT_CoverUIBuildContext buildContext) {
- super(buildContext);
- }
-
- @SuppressWarnings("PointlessArithmeticExpression")
- @Override
- protected void addUIWidgets(ModularWindow.Builder builder) {
- final String INVERTED = GT_Utility.trans("INVERTED", "Inverted");
- final String NORMAL = GT_Utility.trans("NORMAL", "Normal");
-
- setMaxCapacity();
-
- builder.widget(
- new CoverDataControllerWidget<>(this::getCoverData, this::setCoverData, GT_Cover_LiquidMeter.this)
- .addFollower(
- CoverDataFollower_ToggleButtonWidget.ofRedstone(),
- coverData -> coverData.inverted,
- (coverData, state) -> {
- coverData.inverted = state;
- return coverData;
- },
- widget -> widget.addTooltip(0, NORMAL)
- .addTooltip(1, INVERTED)
- .setPos(spaceX * 0, spaceY * 0))
- .addFollower(
- new CoverDataFollower_NumericWidget<>(),
- coverData -> (double) coverData.threshold,
- (coverData, state) -> {
- coverData.threshold = state.intValue();
- return coverData;
- },
- widget -> widget.setBounds(0, maxCapacity > 0 ? maxCapacity : Integer.MAX_VALUE)
- .setScrollValues(1000, 144, 100000)
- .setFocusOnGuiOpen(true)
- .setPos(spaceX * 0, spaceY * 1 + 2)
- .setSize(spaceX * 4 + 5, 12))
- .setPos(startX, startY))
- .widget(
- new TextWidget()
- .setStringSupplier(
- () -> getCoverData() != null ? getCoverData().inverted ? INVERTED : NORMAL : "")
- .setDefaultColor(COLOR_TEXT_GRAY.get())
- .setPos(startX + spaceX * 1, 4 + startY + spaceY * 0))
- .widget(
- new TextWidget(GT_Utility.trans("222", "Fluid threshold")).setDefaultColor(COLOR_TEXT_GRAY.get())
- .setPos(startX + spaceX * 5 - 10, startY + spaceY * 1 + 4));
- }
-
- private void setMaxCapacity() {
- final ICoverable tile = getUIBuildContext().getTile();
- if (!tile.isDead() && tile instanceof IFluidHandler) {
- FluidTankInfo[] tanks = ((IFluidHandler) tile).getTankInfo(ForgeDirection.UNKNOWN);
- maxCapacity = Arrays.stream(tanks)
- .mapToInt(tank -> tank.capacity)
- .sum();
- } else {
- maxCapacity = -1;
- }
- }
- }
-
- public static class LiquidMeterData implements ISerializableObject {
-
- private boolean inverted;
- /**
- * The special value {@code 0} means threshold check is disabled.
- */
- private int threshold;
-
- public LiquidMeterData() {
- inverted = false;
- threshold = 0;
- }
-
- public LiquidMeterData(boolean inverted, int threshold) {
- this.inverted = inverted;
- this.threshold = threshold;
- }
-
- @Nonnull
- @Override
- public ISerializableObject copy() {
- return new LiquidMeterData(inverted, threshold);
- }
-
- @Nonnull
- @Override
- public NBTBase saveDataToNBT() {
- NBTTagCompound tag = new NBTTagCompound();
- tag.setBoolean("invert", inverted);
- tag.setInteger("threshold", threshold);
- return tag;
- }
-
- @Override
- public void writeToByteBuf(ByteBuf aBuf) {
- aBuf.writeBoolean(inverted);
- aBuf.writeInt(threshold);
- }
-
- @Override
- public void loadDataFromNBT(NBTBase aNBT) {
- NBTTagCompound tag = (NBTTagCompound) aNBT;
- inverted = tag.getBoolean("invert");
- threshold = tag.getInteger("threshold");
- }
-
- @Nonnull
- @Override
- public ISerializableObject readFromPacket(ByteArrayDataInput aBuf, EntityPlayerMP aPlayer) {
- inverted = aBuf.readBoolean();
- threshold = aBuf.readInt();
- return this;
- }
- }
-}