mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
116 lines
3.7 KiB
Java
116 lines
3.7 KiB
Java
package com.hbm.inventory.gui;
|
|
|
|
import org.lwjgl.input.Mouse;
|
|
import org.lwjgl.opengl.GL11;
|
|
import org.lwjgl.opengl.GL12;
|
|
|
|
import com.hbm.inventory.container.ContainerWeaponTable;
|
|
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
|
import com.hbm.lib.RefStrings;
|
|
import com.hbm.render.item.weapon.sedna.ItemRenderWeaponBase;
|
|
|
|
import net.minecraft.client.renderer.RenderHelper;
|
|
import net.minecraft.client.resources.I18n;
|
|
import net.minecraft.entity.player.InventoryPlayer;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.util.ResourceLocation;
|
|
import net.minecraftforge.client.IItemRenderer;
|
|
import net.minecraftforge.client.MinecraftForgeClient;
|
|
|
|
public class GUIWeaponTable extends GuiInfoContainer {
|
|
|
|
public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_weapon_modifier.png");
|
|
public int left;
|
|
public int top;
|
|
|
|
public double yaw = 20;
|
|
public double pitch = -10;
|
|
|
|
public GUIWeaponTable(InventoryPlayer player) {
|
|
super(new ContainerWeaponTable(player));
|
|
|
|
this.xSize = 176;
|
|
this.ySize = 240;
|
|
|
|
guiLeft = (this.width - this.xSize) / 2;
|
|
guiTop = (this.height - this.ySize) / 2;
|
|
}
|
|
|
|
@Override
|
|
public void drawScreen(int x, int y, float interp) {
|
|
super.drawScreen(x, y, interp);
|
|
|
|
if(guiLeft + 8 <= x && guiLeft + 8 + 160 > x && guiTop + 18 < y && guiTop + 18 + 79 >= y) {
|
|
if(Mouse.isButtonDown(0)) {
|
|
double distX = (guiLeft + 8 + 80) - x;
|
|
double distY = (guiTop + 18 + 39.5) - y;
|
|
yaw = distX / 80D * -180D;
|
|
pitch = distY / 39.5D * 90D;
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void mouseClicked(int x, int y, int key) {
|
|
super.mouseClicked(x, y, key);
|
|
|
|
if(guiLeft + 26 <= x && guiLeft + 26 + 7 > x && guiTop + 111 < y && guiTop + 111 + 10 >= y) {
|
|
ContainerWeaponTable container = (ContainerWeaponTable) this.inventorySlots;
|
|
ItemStack gun = container.gun.getStackInSlot(0);
|
|
if(gun != null && gun.getItem() instanceof ItemGunBaseNT) {
|
|
int configs = ((ItemGunBaseNT) gun.getItem()).getConfigCount();
|
|
if(configs > 1) {
|
|
container.index++;
|
|
container.index %= configs;
|
|
this.handleMouseClick(null, 0, container.index, 999_999);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void drawGuiContainerForegroundLayer(int mX, int mY) {
|
|
|
|
String name = I18n.format("container.weaponsTable");
|
|
this.fontRendererObj.drawString(name, (this.xSize) / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff);
|
|
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
|
}
|
|
|
|
@Override
|
|
protected void drawGuiContainerBackgroundLayer(float inter, int mX, int mY) {
|
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
|
this.mc.getTextureManager().bindTexture(texture);
|
|
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
|
|
|
ContainerWeaponTable container = (ContainerWeaponTable) this.inventorySlots;
|
|
ItemStack gun = container.gun.getStackInSlot(0);
|
|
|
|
if(gun != null && gun.getItem() instanceof ItemGunBaseNT) {
|
|
drawTexturedModalRect(guiLeft + 35, guiTop + 112, 176 + 6 * container.index, 0, 6, 8);
|
|
|
|
GL11.glPushMatrix();
|
|
GL11.glTranslated(guiLeft + 88, guiTop + 57, 100);
|
|
|
|
IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(gun, IItemRenderer.ItemRenderType.INVENTORY);
|
|
|
|
if(customRenderer instanceof ItemRenderWeaponBase) {
|
|
ItemRenderWeaponBase renderGun = (ItemRenderWeaponBase) customRenderer;
|
|
|
|
GL11.glPushMatrix();
|
|
GL11.glRotated(180, 1, 0, 0);
|
|
RenderHelper.enableStandardItemLighting();
|
|
GL11.glPopMatrix();
|
|
|
|
GL11.glRotated(yaw, 0, 1, 0);
|
|
GL11.glRotated(pitch, 1, 0, 0);
|
|
|
|
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
|
renderGun.setupModTable(gun);
|
|
renderGun.renderModTable(gun, container.index);
|
|
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
|
}
|
|
GL11.glPopMatrix();
|
|
}
|
|
}
|
|
}
|