mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
140 lines
5.2 KiB
Java
140 lines
5.2 KiB
Java
package com.hbm.inventory.gui;
|
|
|
|
import java.util.Locale;
|
|
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
import com.hbm.inventory.container.ContainerCombustionEngine;
|
|
import com.hbm.inventory.fluid.trait.FT_Combustible;
|
|
import com.hbm.items.ModItems;
|
|
import com.hbm.items.machine.ItemPistons.EnumPistonType;
|
|
import com.hbm.lib.RefStrings;
|
|
import com.hbm.packet.NBTControlPacket;
|
|
import com.hbm.packet.PacketDispatcher;
|
|
import com.hbm.tileentity.machine.TileEntityMachineCombustionEngine;
|
|
import com.hbm.util.EnumUtil;
|
|
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.audio.PositionedSoundRecord;
|
|
import net.minecraft.client.resources.I18n;
|
|
import net.minecraft.entity.player.InventoryPlayer;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.util.EnumChatFormatting;
|
|
import net.minecraft.util.MathHelper;
|
|
import net.minecraft.util.ResourceLocation;
|
|
|
|
public class GUICombustionEngine extends GuiInfoContainer {
|
|
|
|
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/generators/gui_combustion.png");
|
|
private TileEntityMachineCombustionEngine engine;
|
|
private int setting = 0;
|
|
private boolean isMouseLocked = false;
|
|
|
|
public GUICombustionEngine(InventoryPlayer invPlayer, TileEntityMachineCombustionEngine tedf) {
|
|
super(new ContainerCombustionEngine(invPlayer, tedf));
|
|
engine = tedf;
|
|
this.setting = engine.setting;
|
|
|
|
this.xSize = 176;
|
|
this.ySize = 203;
|
|
}
|
|
|
|
@Override
|
|
public void drawScreen(int x, int y, float interp) {
|
|
super.drawScreen(x, y, interp);
|
|
|
|
if(!isMouseLocked) {
|
|
this.drawElectricityInfo(this, x, y, guiLeft + 143, guiTop + 17, 16, 52, engine.getPower(), engine.maxPower);
|
|
engine.tank.renderTankInfo(this, x, y, guiLeft + 35, guiTop + 17, 16, 52);
|
|
}
|
|
|
|
if(isMouseLocked || (guiLeft + 80 <= x && guiLeft + 80 + 34 > x && guiTop + 38 < y && guiTop + 38 + 8 >= y)) {
|
|
drawCreativeTabHoveringText(((setting * 2) / 10D) + "mB/t", MathHelper.clamp_int(x, guiLeft + 80, guiLeft + 114), MathHelper.clamp_int(y, guiTop + 38, guiTop + 46));
|
|
}
|
|
|
|
if(engine.slots[2] != null && engine.slots[2].getItem() == ModItems.piston_set) {
|
|
double power = 0;
|
|
if(engine.tank.getTankType().hasTrait(FT_Combustible.class)) {
|
|
FT_Combustible trait = engine.tank.getTankType().getTrait(FT_Combustible.class);
|
|
int i = engine.slots[2].getItemDamage();
|
|
EnumPistonType piston = EnumUtil.grabEnumSafely(EnumPistonType.class, i);
|
|
power = setting * 0.2 * trait.getCombustionEnergy() / 1_000D * piston.eff[trait.getGrade().ordinal()];
|
|
}
|
|
String c = EnumChatFormatting.YELLOW + "";
|
|
drawCustomInfoStat(x, y, guiLeft + 79, guiTop + 50, 35, 14, x, y, c + String.format(Locale.US, "%,d", (int)(power)) + " HE/t", c + String.format(Locale.US, "%,d", (int)(power * 20)) + " HE/s");
|
|
}
|
|
|
|
drawCustomInfoStat(x, y, guiLeft + 79, guiTop + 13, 35, 15, x, y, "Ignition");
|
|
|
|
if(isMouseLocked) {
|
|
|
|
int setting = (x - guiLeft - 81) * 30 / 32;
|
|
setting = MathHelper.clamp_int(setting, 0, 30);
|
|
|
|
if(this.setting != setting) {
|
|
this.setting = setting;
|
|
NBTTagCompound data = new NBTTagCompound();
|
|
data.setInteger("setting", setting);
|
|
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, engine.xCoord, engine.yCoord, engine.zCoord));
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void mouseClicked(int x, int y, int i) {
|
|
super.mouseClicked(x, y, i);
|
|
|
|
if(guiLeft + 89 <= x && guiLeft + 89 + 16 > x && guiTop + 13 < y && guiTop + 13 + 14 >= y) {
|
|
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
|
NBTTagCompound data = new NBTTagCompound();
|
|
data.setBoolean("turnOn", true);
|
|
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, engine.xCoord, engine.yCoord, engine.zCoord));
|
|
}
|
|
|
|
if(guiLeft + 79 <= x && guiLeft + 79 + 36 > x && guiTop + 38 < y && guiTop + 38 + 8 >= y) {
|
|
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
|
isMouseLocked = true;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void mouseMovedOrUp(int x, int y, int i) {
|
|
super.mouseMovedOrUp(x, y, i);
|
|
|
|
if(isMouseLocked) {
|
|
|
|
if(i == 0 || i == 1) {
|
|
isMouseLocked = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
|
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
|
}
|
|
|
|
@Override
|
|
protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) {
|
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
|
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
|
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
|
|
|
if(engine.slots[2] != null && engine.slots[2].getItem() == ModItems.piston_set) {
|
|
int i = engine.slots[2].getItemDamage();
|
|
drawTexturedModalRect(guiLeft + 80, guiTop + 51, 176, 52 + i * 12, 25, 12);
|
|
}
|
|
|
|
drawTexturedModalRect(guiLeft + 79 + (setting * 32 / 30), guiTop + 38, 192, 15, 4, 8);
|
|
|
|
if(engine.isOn) {
|
|
drawTexturedModalRect(guiLeft + 79, guiTop + 13, 192, 0, 35, 15);
|
|
}
|
|
|
|
int i = (int) (engine.power * 53 / engine.maxPower);
|
|
drawTexturedModalRect(guiLeft + 143, guiTop + 69 - i, 176, 52 - i, 16, i);
|
|
|
|
engine.tank.renderTank(guiLeft + 35, guiTop + 69, this.zLevel, 16, 52);
|
|
}
|
|
}
|