Files
AE2FluidCraft-Rework/src/main/java/com/glodblock/github/client/UltraTerminalButtons.java
T

246 lines
9.1 KiB
Java

package com.glodblock.github.client;
import static appeng.util.Platform.nextEnum;
import static com.glodblock.github.common.item.ItemWirelessUltraTerminal.MODE;
import static com.glodblock.github.inventory.item.WirelessMagnet.modeKey;
import java.util.List;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import com.glodblock.github.FluidCraft;
import com.glodblock.github.client.gui.GuiFCImgButton;
import com.glodblock.github.common.item.ItemWirelessUltraTerminal;
import com.glodblock.github.inventory.item.WirelessMagnet;
import com.glodblock.github.network.CPacketFluidPatternTermBtns;
import com.glodblock.github.network.CPacketSwitchGuis;
import com.glodblock.github.util.UltraTerminalModes;
import appeng.helpers.ICustomButtonDataObject;
import appeng.util.Platform;
import io.netty.buffer.ByteBuf;
public class UltraTerminalButtons implements ICustomButtonDataObject {
public static String restockItems = "restock";
private ItemStack terminal;
private GuiFCImgButton CraftingTerminal;
private GuiFCImgButton PatternTerminal;
private GuiFCImgButton InterfaceTerminal;
private GuiFCImgButton LevelTerminal;
private GuiFCImgButton PatternTerminalEx;
private GuiFCImgButton magnetOff;
private GuiFCImgButton magnetInv;
private GuiFCImgButton magnetME;
private GuiFCImgButton magnetFilter;
private GuiFCImgButton restockEnableBtn;
private GuiFCImgButton restockDisableBtn;
private WirelessMagnet.Mode magnetMode;
private boolean reStock;
public UltraTerminalModes terminalMode;
private int offset;
public UltraTerminalButtons(ItemStack terminal) {
this.terminal = terminal;
}
public void initCustomButtons(int guiLeft, int guiTop, int xSize, int ySize, int xOffset, int yOffset,
List<GuiButton> buttonList) {
this.offset = yOffset;
buttonList.add(
this.magnetOff = new GuiFCImgButton(guiLeft + xSize - 17, guiTop + ySize - 65, "MAGNET_CARD", "OFF"));
buttonList.add(
this.magnetInv = new GuiFCImgButton(guiLeft + xSize - 17, guiTop + ySize - 65, "MAGNET_CARD", "INV"));
buttonList.add(
this.magnetME = new GuiFCImgButton(guiLeft + xSize - 17, guiTop + ySize - 65, "MAGNET_CARD", "ME"));
buttonList.add(
this.magnetFilter = new GuiFCImgButton(
guiLeft + xSize - 17,
guiTop + ySize - 45,
"MAGNET_CARD",
"FILTER"));
buttonList.add(
this.restockEnableBtn = new GuiFCImgButton(
guiLeft + xSize - 17,
guiTop + ySize - 25,
"RESTOCK",
"ENABLE"));
buttonList.add(
this.restockDisableBtn = new GuiFCImgButton(
guiLeft + xSize - 17,
guiTop + ySize - 25,
"RESTOCK",
"DISABLE"));
buttonList.add(this.CraftingTerminal = new GuiFCImgButton(guiLeft - 18, yOffset, "CRAFT_TEM", "YES"));
buttonList.add(this.PatternTerminal = new GuiFCImgButton(guiLeft - 18, yOffset, "PATTERN_TEM", "YES"));
buttonList.add(this.PatternTerminalEx = new GuiFCImgButton(guiLeft - 18, yOffset, "PATTERN_EX_TEM", "YES"));
buttonList.add(this.InterfaceTerminal = new GuiFCImgButton(guiLeft - 18, yOffset, "INTERFACE_TEM", "YES"));
buttonList.add(this.LevelTerminal = new GuiFCImgButton(guiLeft - 18, yOffset, "LEVEL_TEM", "YES"));
toggleSwitchButtons();
toggleMagnetButtonsVisibility();
toggleRestockVisibility();
}
@Override
public boolean actionPerformedCustomButtons(final GuiButton btn) {
if (btn instanceof GuiFCImgButton) {
UltraTerminalModes mode = null;
if (btn == this.CraftingTerminal) {
mode = UltraTerminalModes.CRAFTING;
} else if (btn == this.PatternTerminal) {
mode = UltraTerminalModes.PATTERN;
} else if (btn == this.InterfaceTerminal) {
mode = UltraTerminalModes.INTERFACE;
} else if (btn == this.LevelTerminal) {
mode = UltraTerminalModes.LEVEL;
} else if (btn == this.PatternTerminalEx) {
mode = UltraTerminalModes.PATTERN_EX;
}
if (mode != null) {
ItemWirelessUltraTerminal.setMode(this.terminal, mode);
FluidCraft.proxy.netHandler.sendToServer(new CPacketSwitchGuis(mode, true));
}
if (btn == this.magnetOff || btn == this.magnetME || btn == this.magnetInv) {
FluidCraft.proxy.netHandler.sendToServer(
new CPacketFluidPatternTermBtns(
CPacketFluidPatternTermBtns.Command.MAGNET_MODE,
this.magnetMode.ordinal()));
} else if (btn == this.magnetFilter) FluidCraft.proxy.netHandler.sendToServer(
new CPacketFluidPatternTermBtns(CPacketFluidPatternTermBtns.Command.MAGNET_OPEN_FILTER, 0));
else if (btn == this.restockDisableBtn || btn == this.restockEnableBtn) {
FluidCraft.proxy.netHandler
.sendToServer(new CPacketFluidPatternTermBtns(CPacketFluidPatternTermBtns.Command.RESTOCK, 1));
}
return true;
}
return false;
}
public void toggleRestock() {
this.reStock = !this.reStock;
}
public void toggleRestockVisibility() {
if (Platform.isClient()) {
if (this.reStock) {
this.restockEnableBtn.setVisibility(true);
this.restockDisableBtn.setVisibility(false);
} else {
this.restockEnableBtn.setVisibility(false);
this.restockDisableBtn.setVisibility(true);
}
}
}
public void toggleMagnetMode() {
this.magnetMode = nextEnum(this.magnetMode);
}
public void toggleMagnetButtonsVisibility() {
switch (this.magnetMode) {
case Off -> {
this.magnetME.setVisibility(false);
this.magnetInv.setVisibility(false);
this.magnetOff.setVisibility(true);
}
case ME -> {
this.magnetME.setVisibility(true);
this.magnetInv.setVisibility(false);
this.magnetOff.setVisibility(false);
}
case Inv -> {
this.magnetME.setVisibility(false);
this.magnetInv.setVisibility(true);
this.magnetOff.setVisibility(false);
}
}
}
public void toggleSwitchButtons() {
int offset = this.offset;
CraftingTerminal.setVisibility(false);
PatternTerminal.setVisibility(false);
InterfaceTerminal.setVisibility(false);
LevelTerminal.setVisibility(false);
PatternTerminalEx.setVisibility(false);
if (this.terminalMode != UltraTerminalModes.CRAFTING) {
this.CraftingTerminal.setVisibility(true);
this.CraftingTerminal.yPosition = offset;
offset += 20;
}
if (this.terminalMode != UltraTerminalModes.PATTERN) {
this.PatternTerminal.setVisibility(true);
this.PatternTerminal.yPosition = offset;
offset += 20;
}
if (this.terminalMode != UltraTerminalModes.PATTERN_EX) {
this.PatternTerminalEx.setVisibility(true);
this.PatternTerminalEx.yPosition = offset;
offset += 20;
}
if (this.terminalMode != UltraTerminalModes.INTERFACE) {
this.InterfaceTerminal.setVisibility(true);
this.InterfaceTerminal.yPosition = offset;
offset += 20;
}
if (this.terminalMode != UltraTerminalModes.LEVEL) {
this.LevelTerminal.setVisibility(true);
this.LevelTerminal.yPosition = offset;
offset += 20;
}
}
@Override
public void readData(NBTTagCompound tag) {
this.reStock = tag.getBoolean(restockItems);
this.magnetMode = WirelessMagnet.Mode.values()[tag.getInteger(modeKey)];
this.terminalMode = UltraTerminalModes.values()[tag.getInteger(MODE)];
}
@Override
public void writeData(NBTTagCompound tag) {
tag.setBoolean(restockItems, this.reStock);
tag.setInteger(modeKey, this.magnetMode.ordinal());
tag.setInteger(MODE, this.terminalMode.ordinal());
}
@Override
public void readByte(ByteBuf buf) {
this.reStock = buf.readBoolean();
this.magnetMode = WirelessMagnet.Mode.values()[buf.readInt()];
this.terminalMode = UltraTerminalModes.values()[buf.readInt()];
toggleMagnetButtonsVisibility();
toggleRestockVisibility();
toggleSwitchButtons();
}
@Override
public void writeByte(ByteBuf buf) {
buf.writeBoolean(this.reStock);
buf.writeInt(this.magnetMode.ordinal());
buf.writeInt(this.terminalMode.ordinal());
}
}