ProjectZombie/src/projectzombie/display/DisplayRenderUI.java

108 lines
3.0 KiB
Java
Executable File

package projectzombie.display;
import org.lwjgl.opengl.GL33;
import gl_engine.MathHelpers;
import gl_engine.matrix.Matrix4;
import gl_engine.vec.Vec3d;
import projectzombie.Main;
import projectzombie.init.Models;
import projectzombie.inventory.Inventory;
import projectzombie.model.Model;
import projectzombie.model.ModelGui;
import projectzombie.text.Text;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.math.ItemStack;
public class DisplayRenderUI
{
public static boolean showFPS = false;
public static boolean showPos = false;
public static int guiScale = 2;
public static Matrix4 camera, projection;
public static void renderGameGui()
{
{
Matrix4 matrix = Matrix4.translate(-Models.UI_ITEM_SLOTS.getWidth() / 2, -9.5, 0);
Inventory inventory = Main.player.getInventory();
int slot = Main.player.inventory_hand;
double offset = Models.UI_ITEM_SLOTS.getWidth() / 10;
Matrix4 matrix_slot = Matrix4.multiply(matrix, Matrix4.translate(offset * slot, 0, 0));
Models.UI_ITEM_SLOTS.setModel(matrix);
Models.UI_ITEM_SLOTS.render();
Models.UI_ACTIVE_SLOT.setModel(matrix_slot);
Models.UI_ACTIVE_SLOT.render();
for(int i = 0; i < inventory.getSlotCount(); i++)
{
ItemStack stack = inventory.getItem(i);
if(stack.isEmpty()) {
continue;
}
Model model_item = stack.item.getModel(stack.meta).getGuiModel();
double item_offset = (Models.UI_ACTIVE_SLOT.getHeight() - model_item.getHeight()) / 2;
Matrix4 matrix_item = Matrix4.multiply(matrix, Matrix4.translate(i * offset + item_offset, item_offset, 0));
model_item.setModel(matrix_item);
model_item.render();
if(stack.count > 1)
{
matrix_item = Matrix4.multiply(matrix, Matrix4.translate(i * offset + 0.25, 0.28125, 0));
matrix_item = Matrix4.multiply(Matrix4.scale(new Vec3d(0.4, 0.4, 0.4)), matrix_item);
Text.render("" + stack.count, matrix_item);
}
}
}
{
ModelGui model_health_f = Models.UI_HEALTH_FG;
ModelGui model_health_b = Models.UI_HEALTH_BG;
Matrix4 matrix = Matrix4.translate(-model_health_f.getWidth() / 2, -8, 0);
model_health_b.setModel(matrix);
model_health_b.render();
GL33.glUniform2f(Main.window.glsl_tex_cut, 1, (float)MathHelpers.map(
Main.player.getHealth(),
0, Main.player.maxHealth(),
0, model_health_f.getWidth()));
model_health_f.setModel(matrix);
model_health_f.render();
GL33.glUniform2f(Main.window.glsl_tex_cut, 0, 0);
}
}
public static void render()
{
camera = Matrix4.identity();
projection = Matrix4.scale(new Vec3d(0.1/GlHelpers.getAspectRatio(), 0.1, 1));
GL33.glUniform3f(Main.window.glsl_day_low, 1, 1, 1);
GL33.glUniform3f(Main.window.glsl_day_high, 1, 1, 1);
GL33.glUniformMatrix4fv(Main.window.glsl_projection, true, projection.getArray());
GL33.glDisable(GL33.GL_DEPTH_TEST);
if(Main.menu.doGameRender && Main.menu.showIngameGUI) {
renderGameGui();
}
// Render the loaded menu
Main.menu.render();
}
}