icbm/src/main/java/icbm/gangshao/shimian/GuiPlatformContainer.java

211 lines
7.4 KiB
Java

package icbm.gangshao.shimian;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import icbm.gangshao.ICBMSentry;
import icbm.gangshao.container.ContainerTurretPlatform;
import icbm.gangshao.platform.TTurretPlatform;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
@SideOnly(Side.CLIENT)
public abstract class GuiPlatformContainer extends GuiContainer {
protected static final int MAX_BUTTON_ID = 3;
protected TTurretPlatform tileEntity;
protected EntityPlayer entityPlayer;
public GuiPlatformContainer(
final InventoryPlayer inventoryPlayer, final TTurretPlatform tileEntity
) {
super((Container) new ContainerTurretPlatform(inventoryPlayer, tileEntity));
this.tileEntity = tileEntity;
this.entityPlayer = inventoryPlayer.player;
this.ySize = 190;
}
@Override
public void initGui() {
super.initGui();
this.buttonList.clear();
this.buttonList.add(new GuiButtonImage(
0, (this.width - this.xSize) / 2 - 22, (this.height - this.ySize) / 2 + 0, 3
));
this.buttonList.add(new GuiButtonImage(
1, (this.width - this.xSize) / 2 - 22, (this.height - this.ySize) / 2 + 22, 0
));
this.buttonList.add(new GuiButtonImage(
2, (this.width - this.xSize) / 2 - 22, (this.height - this.ySize) / 2 + 44, 2
));
}
@Override
public void updateScreen() {
super.updateScreen();
if (this.tileEntity.getTurret(false) == null) {
this.mc.thePlayer.closeScreen();
}
}
@Override
protected void actionPerformed(final GuiButton button) {
if (this.tileEntity.getTurret(false) != null) {
switch (button.id) {
case 0: {
this.entityPlayer.openGui(
(Object) ICBMSentry.instance,
1,
this.tileEntity.getWorldObj(),
this.tileEntity.xCoord,
this.tileEntity.yCoord,
this.tileEntity.zCoord
);
break;
}
case 1: {
this.entityPlayer.openGui(
(Object) ICBMSentry.instance,
2,
this.tileEntity.getWorldObj(),
this.tileEntity.xCoord,
this.tileEntity.yCoord,
this.tileEntity.zCoord
);
break;
}
case 2: {
this.entityPlayer.openGui(
(Object) ICBMSentry.instance,
0,
this.tileEntity.getWorldObj(),
this.tileEntity.xCoord,
this.tileEntity.yCoord,
this.tileEntity.zCoord
);
break;
}
}
}
}
@Override
protected void drawGuiContainerForegroundLayer(final int x, final int y) {
if (this.tileEntity.getTurret(false) != null) {
final String title = this.tileEntity.getTurret(false).getName();
this.fontRendererObj.drawString(
"§7" + title, (int) (this.xSize / 2 - title.length() * 2.5), 4, 4210752
);
if (((GuiButtonImage) this.buttonList.get(0)).isIntersect(x, y)) {
this.drawTooltip(x - this.guiLeft, y - this.guiTop + 10, "Terminal");
} else if (((GuiButtonImage) this.buttonList.get(1)).isIntersect(x, y)) {
this.drawTooltip(x - this.guiLeft, y - this.guiTop + 10, "Access");
} else if (((GuiButtonImage) this.buttonList.get(2)).isIntersect(x, y)) {
this.drawTooltip(x - this.guiLeft, y - this.guiTop + 10, "Ammunition");
}
}
}
@Override
protected void drawGuiContainerBackgroundLayer(final float par1, final int x, final int y) {
this.mc.renderEngine.bindTexture(
new ResourceLocation("icbm", "textures/gui/gui_base.png")
);
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
final int containerWidth = (this.width - this.xSize) / 2;
final int containerHeight = (this.height - this.ySize) / 2;
this.drawTexturedModalRect(
containerWidth, containerHeight, 0, 0, this.xSize, this.ySize
);
}
public void drawTooltip(final int x, final int y, final String... toolTips) {
GL11.glDisable(32826);
RenderHelper.disableStandardItemLighting();
GL11.glDisable(2896);
GL11.glDisable(2929);
if (toolTips != null) {
int var5 = 0;
for (int var6 = 0; var6 < toolTips.length; ++var6) {
final int var7 = this.fontRendererObj.getStringWidth(toolTips[var6]);
if (var7 > var5) {
var5 = var7;
}
}
int var6 = x + 12;
int var7 = y - 12;
int var8 = 8;
if (toolTips.length > 1) {
var8 += 2 + (toolTips.length - 1) * 10;
}
if (this.guiTop + var7 + var8 + 6 > this.height) {
var7 = this.height - var8 - this.guiTop - 6;
}
this.zLevel = 300.0f;
final int var9 = -267386864;
this.drawGradientRect(
var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, var9, var9
);
this.drawGradientRect(
var6 - 3, var7 + var8 + 3, var6 + var5 + 3, var7 + var8 + 4, var9, var9
);
this.drawGradientRect(
var6 - 3, var7 - 3, var6 + var5 + 3, var7 + var8 + 3, var9, var9
);
this.drawGradientRect(
var6 - 4, var7 - 3, var6 - 3, var7 + var8 + 3, var9, var9
);
this.drawGradientRect(
var6 + var5 + 3, var7 - 3, var6 + var5 + 4, var7 + var8 + 3, var9, var9
);
final int var10 = 1347420415;
final int var11 = (var10 & 0xFEFEFE) >> 1 | (var10 & 0xFF000000);
this.drawGradientRect(
var6 - 3, var7 - 3 + 1, var6 - 3 + 1, var7 + var8 + 3 - 1, var10, var11
);
this.drawGradientRect(
var6 + var5 + 2,
var7 - 3 + 1,
var6 + var5 + 3,
var7 + var8 + 3 - 1,
var10,
var11
);
this.drawGradientRect(
var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, var10, var10
);
this.drawGradientRect(
var6 - 3, var7 + var8 + 2, var6 + var5 + 3, var7 + var8 + 3, var11, var11
);
for (int var12 = 0; var12 < toolTips.length; ++var12) {
final String var13 = "§7" + toolTips[var12];
this.fontRendererObj.drawStringWithShadow(var13, var6, var7, -1);
if (var12 == 0) {
var7 += 2;
}
var7 += 10;
}
this.zLevel = 0.0f;
}
}
}