icbm/src/main/java/icbm/zhapin/gui/GMissileLauncher.java

215 lines
7.9 KiB
Java

package icbm.zhapin.gui;
import icbm.zhapin.ICBMExplosion;
import icbm.zhapin.jiqi.LauncherControlPanelGuiPacket;
import icbm.zhapin.jiqi.TLauncherControlPanel;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import universalelectricity.core.electricity.ElectricityDisplay;
import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.GuiBase;
public class GMissileLauncher extends GuiBase {
private TLauncherControlPanel tileEntity;
private GuiTextField tFX;
private GuiTextField tFY;
private GuiTextField tFZ;
private GuiTextField tFFreq;
private GuiTextField tFGaoDu;
private int containerWidth;
private int containerHeight;
public GMissileLauncher(final TLauncherControlPanel par2ICBMTileEntityMissileLauncher
) {
this.tileEntity = par2ICBMTileEntityMissileLauncher;
}
@Override
public void initGui() {
super.initGui();
this.tFX = new GuiTextField(this.fontRendererObj, 110, 37, 45, 12);
this.tFZ = new GuiTextField(this.fontRendererObj, 110, 52, 45, 12);
this.tFY = new GuiTextField(this.fontRendererObj, 110, 67, 45, 12);
this.tFGaoDu = new GuiTextField(this.fontRendererObj, 110, 82, 45, 12);
(this.tFFreq = new GuiTextField(this.fontRendererObj, 110, 97, 45, 12))
.setMaxStringLength(4);
this.tFX.setMaxStringLength(6);
this.tFZ.setMaxStringLength(6);
this.tFY.setMaxStringLength(2);
this.tFGaoDu.setMaxStringLength(2);
this.tFFreq.setText(this.tileEntity.getFrequency() + "");
this.tFGaoDu.setText(this.tileEntity.height + "");
if (this.tileEntity.getTarget() == null) {
this.tFX.setText(Math.round((float) this.tileEntity.xCoord) + "");
this.tFZ.setText(Math.round((float) this.tileEntity.zCoord) + "");
this.tFY.setText("0");
} else {
this.tFX.setText(Math.round(this.tileEntity.getTarget().x) + "");
this.tFZ.setText(Math.round(this.tileEntity.getTarget().z) + "");
this.tFY.setText(Math.round(this.tileEntity.getTarget().y) + "");
}
}
@Override
public void keyTyped(final char par1, final int par2) {
super.keyTyped(par1, par2);
this.tFX.textboxKeyTyped(par1, par2);
this.tFZ.textboxKeyTyped(par1, par2);
if (this.tileEntity.getTier() >= 1) {
this.tFY.textboxKeyTyped(par1, par2);
this.tFGaoDu.textboxKeyTyped(par1, par2);
if (this.tileEntity.getTier() > 1) {
this.tFFreq.textboxKeyTyped(par1, par2);
}
}
try {
final Vector3 newTarget = new Vector3(
Integer.parseInt(this.tFX.getText()),
Math.max(Integer.parseInt(this.tFY.getText()), 0),
Integer.parseInt(this.tFZ.getText())
);
this.tileEntity.setTarget(newTarget);
ICBMExplosion.channel.sendToServer(
new LauncherControlPanelGuiPacket(this.tileEntity)
);
} catch (final NumberFormatException ex) {}
try {
final short newFrequency
= (short) Math.max(Short.parseShort(this.tFFreq.getText()), 0);
this.tileEntity.setFrequency(newFrequency);
ICBMExplosion.channel.sendToServer(
new LauncherControlPanelGuiPacket(this.tileEntity)
);
} catch (final NumberFormatException ex2) {}
try {
final short newGaoDu = (short
) Math.max(Math.min(Short.parseShort(this.tFGaoDu.getText()), 99), 3);
this.tileEntity.height = newGaoDu;
ICBMExplosion.channel.sendToServer(
new LauncherControlPanelGuiPacket(this.tileEntity)
);
} catch (final NumberFormatException ex3) {}
}
@Override
public void mouseClicked(final int par1, final int par2, final int par3) {
super.mouseClicked(par1, par2, par3);
this.tFX.mouseClicked(
par1 - this.containerWidth, par2 - this.containerHeight, par3
);
this.tFZ.mouseClicked(
par1 - this.containerWidth, par2 - this.containerHeight, par3
);
if (this.tileEntity.getTier() >= 1) {
this.tFY.mouseClicked(
par1 - this.containerWidth, par2 - this.containerHeight, par3
);
this.tFGaoDu.mouseClicked(
par1 - this.containerWidth, par2 - this.containerHeight, par3
);
if (this.tileEntity.getTier() > 1) {
this.tFFreq.mouseClicked(
par1 - this.containerWidth, par2 - this.containerHeight, par3
);
}
}
}
@Override
public void drawForegroundLayer(final int var2, final int var3, final float var1) {
this.tFX.drawTextBox();
this.tFZ.drawTextBox();
if (this.tileEntity.getTier() >= 1) {
this.tFY.drawTextBox();
this.fontRendererObj.drawString("Detonation Height:", 12, 68, 4210752);
this.tFGaoDu.drawTextBox();
this.fontRendererObj.drawString("Lock Height:", 12, 83, 4210752);
if (this.tileEntity.getTier() > 1) {
this.tFFreq.drawTextBox();
this.fontRendererObj.drawString("Frequency:", 12, 98, 4210752);
}
}
this.fontRendererObj.drawString("", 45, 6, 4210752);
this.fontRendererObj.drawString("§7Launcher Control Panel", 30, 6, 4210752);
this.fontRendererObj.drawString("Missile Target", 12, 25, 4210752);
this.fontRendererObj.drawString("X-Coord:", 25, 40, 4210752);
this.fontRendererObj.drawString("Z-Coord:", 25, 55, 4210752);
int inaccuracy = 30;
if (this.tileEntity.faSheDi != null && this.tileEntity.faSheDi.jiaZi != null) {
inaccuracy = this.tileEntity.faSheDi.jiaZi.getInaccuracy();
}
this.fontRendererObj.drawString(
"Inaccuracy: " + inaccuracy + " blocks", 12, 113, 4210752
);
this.fontRendererObj.drawString(
"Status: " + this.tileEntity.getStatus(), 12, 125, 4210752
);
this.fontRendererObj.drawString(
"Voltage: " + this.tileEntity.getVoltage() + "v", 12, 137, 4210752
);
this.fontRendererObj.drawString(
ElectricityDisplay.getDisplayShort(
this.tileEntity.getJoules(), ElectricityDisplay.ElectricUnit.JOULES
) + "/"
+ ElectricityDisplay.getDisplayShort(
this.tileEntity.getMaxJoules(), ElectricityDisplay.ElectricUnit.JOULES
),
12,
150,
4210752
);
}
@Override
protected void drawBackgroundLayer(final int var2, final int var3, final float var1) {
this.mc.renderEngine.bindTexture(
new ResourceLocation("icbm", "textures/gui/gui_empty.png")
);
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
this.containerWidth = (this.width - super.xSize) / 2;
this.containerHeight = (this.height - super.ySize) / 2;
this.drawTexturedModalRect(
this.containerWidth, this.containerHeight, 0, 0, super.xSize, super.ySize
);
}
@Override
public void updateScreen() {
super.updateScreen();
if (!this.tFX.isFocused()) {
this.tFX.setText(Math.round(this.tileEntity.getTarget().x) + "");
}
if (!this.tFZ.isFocused()) {
this.tFZ.setText(Math.round(this.tileEntity.getTarget().z) + "");
}
if (!this.tFY.isFocused()) {
this.tFY.setText(Math.round(this.tileEntity.getTarget().y) + "");
}
if (!this.tFGaoDu.isFocused()) {
this.tFGaoDu.setText(this.tileEntity.height + "");
}
if (!this.tFFreq.isFocused()) {
this.tFFreq.setText(this.tileEntity.getFrequency() + "");
}
}
}