package mcjty.rftools.items.teleportprobe;
import mcjty.lib.gui.GuiItemScreen;
import mcjty.lib.gui.Window;
import mcjty.lib.gui.events.ButtonEvent;
import mcjty.lib.gui.layout.HorizontalLayout;
import mcjty.lib.gui.layout.VerticalLayout;
import mcjty.lib.gui.widgets.Button;
import mcjty.lib.gui.widgets.Panel;
import mcjty.lib.gui.widgets.TextField;
import mcjty.lib.gui.widgets.Widget;
import mcjty.rftools.RFTools;
import mcjty.rftools.network.RFToolsMessages;
import java.awt.*;
public class GuiAdvancedPorter extends GuiItemScreen {
private final static int xSize = 340;
private final static int ySize = 70;
private Panel[] panels = new Panel[AdvancedChargedPorterItem.MAXTARGETS];
private TextField[] destinations = new TextField[AdvancedChargedPorterItem.MAXTARGETS];
private static int target = -1;
private static int[] targets = new int[AdvancedChargedPorterItem.MAXTARGETS];
private static String[] names = new String[AdvancedChargedPorterItem.MAXTARGETS];
public GuiAdvancedPorter() {
super(RFTools.instance, RFToolsMessages.INSTANCE, xSize, ySize, RFTools.GUI_MANUAL_MAIN, "porter");
}
public static void setInfo(int target, int[] targets, String[] names) {
GuiAdvancedPorter.target = target;
GuiAdvancedPorter.targets = targets;
GuiAdvancedPorter.names = names;
}
@Override
public void initGui() {
super.initGui();
int k = (this.width - this.xSize) / 2;
int l = (this.height - this.ySize) / 2;
Panel toplevel = new Panel(mc, this).setFilledRectThickness(2).setLayout(new VerticalLayout().setSpacing(0));
for (int i = 0 ; i < AdvancedChargedPorterItem.MAXTARGETS ; i++) {
destinations[i] = new TextField(mc, this);
panels[i] = createPanel(destinations[i], i);
toplevel.addChild(panels[i]);
}
toplevel.setBounds(new Rectangle(k, l, xSize, ySize));
window = new Window(this, toplevel);
updateInfoFromServer();
}
private Panel createPanel(final TextField destination, final int i) {
return new Panel(mc, this).setLayout(new HorizontalLayout())
.addChild(destination)
.addChild(new Button(mc, this).setText("Set").setDesiredWidth(30).setDesiredHeight(16).addButtonEvent(new ButtonEvent() {
@Override
public void buttonClicked(Widget parent) {
if (targets[i] != -1) {
RFToolsMessages.INSTANCE.sendToServer(new PacketSetTarget(targets[i]));
target = targets[i];
}
}
}))
.addChild(new Button(mc, this).setText("Clear").setDesiredWidth(40).setDesiredHeight(16).addButtonEvent(new ButtonEvent() {
@Override
public void buttonClicked(Widget parent) {
if (targets[i] != -1 && targets[i] == target) {
target = -1;
}
RFToolsMessages.INSTANCE.sendToServer(new PacketClearTarget(i));
targets[i] = -1;
}
})).setDesiredHeight(16);
}
private void updateInfoFromServer() {
RFToolsMessages.INSTANCE.sendToServer(new PacketGetTargets());
}
private void setTarget(int i) {
panels[i].setFilledBackground(-1);
if (targets[i] == -1) {
destinations[i].setText("No target set");
} else {
destinations[i].setText(targets[i] + ": " + names[i]);
if (targets[i] == target) {
panels[i].setFilledBackground(0xffeedd33);
}
}
}
@Override
public void drawScreen(int xSize_lo, int ySize_lo, float par3) {
super.drawScreen(xSize_lo, ySize_lo, par3);
for (int i = 0 ; i < AdvancedChargedPorterItem.MAXTARGETS ; i++) {
setTarget(i);
}
drawWindow();
}
}