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();
}
}
}