Created a functional world renderer

This commit is contained in:
josua 2020-06-15 10:56:52 +10:00
parent 95bd4df7ef
commit b553923a3d
106 changed files with 865 additions and 921 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
/bin/ /bin/
hs_err_pid*

BIN
layer.bdf

Binary file not shown.

Binary file not shown.

View File

@ -2,11 +2,9 @@ package projectzombie;
import java.util.Random; import java.util.Random;
import bdf.file.BdfCompressedFileManager;
import mainloop.manager.MainloopManager; import mainloop.manager.MainloopManager;
import projectzombie.audio.AudioEngine; import projectzombie.audio.AudioEngine;
import projectzombie.audio.AudioSources; import projectzombie.audio.AudioSources;
import projectzombie.display.Camera;
import projectzombie.display.DisplayStatsEventHandler; import projectzombie.display.DisplayStatsEventHandler;
import projectzombie.display.DisplayWindow; import projectzombie.display.DisplayWindow;
import projectzombie.display.bossbar.BossBars; import projectzombie.display.bossbar.BossBars;
@ -18,7 +16,6 @@ import projectzombie.init.LayerGenerators;
import projectzombie.init.Layers; import projectzombie.init.Layers;
import projectzombie.init.Resources; import projectzombie.init.Resources;
import projectzombie.init.Sounds; import projectzombie.init.Sounds;
import projectzombie.init.Models;
import projectzombie.init.Tiles; import projectzombie.init.Tiles;
import projectzombie.input.JoystickCallback; import projectzombie.input.JoystickCallback;
import projectzombie.input.KeyCallback; import projectzombie.input.KeyCallback;

View File

@ -20,13 +20,10 @@ import java.nio.ShortBuffer;
import org.lwjgl.stb.STBVorbis; import org.lwjgl.stb.STBVorbis;
import org.lwjgl.system.MemoryStack; import org.lwjgl.system.MemoryStack;
import projectzombie.Main; import gl_engine.matrix.Matrix4;
import gl_engine.vec.Vec3d;
import projectzombie.display.Camera; import projectzombie.display.Camera;
import projectzombie.resources.Resource; import projectzombie.resources.Resource;
import gl_engine.MathHelpers;
import gl_engine.matrix.Matrix4;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec3d;
public class AudioObject public class AudioObject
{ {
@ -88,8 +85,9 @@ public class AudioObject
return; return;
} }
// Calculate the rotation // Calculate the position relative to the player
Vec3d vec = Matrix4.multiply(Camera.camera.getMatrix(), pos); Matrix4 matrix = Camera.camera.getMatrix();
Vec3d vec = Matrix4.multiply(matrix, pos.add(new Vec3d(-0.5, 0, -0.5)));
// Play the sound with a new source // Play the sound with a new source
int source = AudioSources.getSource(); int source = AudioSources.getSource();

View File

@ -2,13 +2,11 @@ package projectzombie.display;
import gl_engine.matrix.Matrix4; import gl_engine.matrix.Matrix4;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec3d;
import projectzombie.Main; import projectzombie.Main;
public class Camera public class Camera
{ {
public double angle = 45; public double angle = 45;
public int renderDistance = 3;
private Matrix4 matrix; private Matrix4 matrix;
public static Camera camera; public static Camera camera;
@ -19,10 +17,10 @@ public class Camera
Vec2d pos = Main.player.pos; Vec2d pos = Main.player.pos;
angle = Main.player.angle; angle = Main.player.angle;
identity = Matrix4.multiply(identity, Matrix4.translate(-pos.x, 0, -pos.y)); identity = Matrix4.multiply(identity, Matrix4.translate(-pos.x + 0.5, 0, -pos.y + 0.5));
identity = Matrix4.multiply(identity, Matrix4.rotate(angle, 0, 1, 0)); identity = Matrix4.multiply(identity, Matrix4.rotate(angle + 180, 0, 1, 0));
identity = Matrix4.multiply(identity, Matrix4.rotate(-50, 1, 0, 0)); identity = Matrix4.multiply(identity, Matrix4.rotate(-45, 1, 0, 0));
identity = Matrix4.multiply(identity, Matrix4.translate(0, 0, -12)); identity = Matrix4.multiply(identity, Matrix4.translate(0, 0, -16));
matrix = identity; matrix = identity;
} }

View File

@ -2,30 +2,15 @@ package projectzombie.display;
import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT; import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT; import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_MODELVIEW;
import static org.lwjgl.opengl.GL11.GL_ONE_MINUS_SRC_ALPHA;
import static org.lwjgl.opengl.GL11.GL_SRC_ALPHA;
import static org.lwjgl.opengl.GL11.glBlendFunc;
import static org.lwjgl.opengl.GL11.glClear; import static org.lwjgl.opengl.GL11.glClear;
import static org.lwjgl.opengl.GL11.glLoadMatrixf;
import static org.lwjgl.opengl.GL11.glMatrixMode;
import static org.lwjgl.opengl.GL11.glViewport; import static org.lwjgl.opengl.GL11.glViewport;
import org.lwjgl.opengl.GL;
import org.lwjgl.opengl.GL33; import org.lwjgl.opengl.GL33;
import org.lwjgl.system.MemoryStack;
import gl_engine.graphics.GraphicsShader;
import gl_engine.matrix.Matrix4; import gl_engine.matrix.Matrix4;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.display.lighting.DynamicLighting;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.gl.GlHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.chunk.ChunkEventHandler; import projectzombie.world.chunk.ChunkEventHandler;
public class DisplayRender public class DisplayRender
@ -55,20 +40,24 @@ public class DisplayRender
GL33.glUniformMatrix4fv(Main.window.glsl_camera, true, camera.getMatrix().getArray()); GL33.glUniformMatrix4fv(Main.window.glsl_camera, true, camera.getMatrix().getArray());
GL33.glUniformMatrix4fv(Main.window.glsl_projection, true, projection.getArray()); GL33.glUniformMatrix4fv(Main.window.glsl_projection, true, projection.getArray());
GL33.glUniformMatrix4fv(Main.window.glsl_rotated, true, rotated.getArray()); GL33.glUniformMatrix4fv(Main.window.glsl_rotated, true, rotated.getArray());
GL33.glUniform1i(Main.window.glsl_time, (int)((System.currentTimeMillis() / 10) % 1000));
// Render the world and the player // Render the world and the player
Main.world.render(camera); Main.world.render(camera);
player.chunk = Main.world.getLayer().getChunk(player.pos); player.chunk = Main.world.getLayer().getChunk(player.pos);
Model model = player.getModel(); if(!Main.player.dead)
Matrix4 matrix = Matrix4.translate(player.pos.x, 0, player.pos.y); {
GL33.glUniformMatrix4fv(Main.window.glsl_model, true, matrix.getArray()); Model model = player.getModel();
model.bind(); Matrix4 matrix = Matrix4.translate(player.pos.x - 0.5, player.getHeight(), player.pos.y - 0.5);
model.render(); GL33.glUniformMatrix4fv(Main.window.glsl_model, true, matrix.getArray());
model.bind();
model.render();
}
} }
} }
// Render the user interface // Render the user interface
//DisplayRenderUI.render(); DisplayRenderUI.render();
} }
} }

View File

@ -1,16 +1,5 @@
package projectzombie.display; package projectzombie.display;
import projectzombie.Main;
import projectzombie.display.bossbar.BossBars;
import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models;
import projectzombie.inventory.Inventory;
import projectzombie.text.Text;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.texture.TextureReference;
import projectzombie.util.math.ItemStack;
import gl_engine.vec.Vec2d;
public class DisplayRenderUI public class DisplayRenderUI
{ {
public static boolean showFPS = false; public static boolean showFPS = false;
@ -19,173 +8,9 @@ public class DisplayRenderUI
public static void render() public static void render()
{ {
/*double s = GlHelpers.getScale() / 10.0;
// Get some text settings
Vec2d text_size = new Vec2d(0.5, 0.5);
// Render the fps
if(showFPS) {
GlHelpers.pushMatrix();
GlHelpers.translate2(-10*s + 0.5, 10*s - 0.5);
GlHelpers.color3(1, 1, 0);
Text.render("FPS: " + DisplayStatsEventHandler.fps, text_size);
GlHelpers.popMatrix();
}
// Get the player
EntityPlayer player = Main.player;
// Disable some opengl options
GlHelpers.disableDepthTest();
GlHelpers.color4(1, 1, 1, 1);
// Get the aspect ratio
double aspect_ratio = (
((double) Main.window.getWidth()) /
((double) Main.window.getHeight()));
if(Main.menu.doGameRender && Main.menu.showIngameGUI)
{
// Render the position
if(showPos) {
GlHelpers.pushMatrix();
GlHelpers.translate2(-10*s + 0.5, 10*s - 1);
GlHelpers.color3(1, 1, 0);
Text.render("x: " + (int) player.pos.x + ", y: " + (int) player.pos.y, text_size);
GlHelpers.color3(1, 1, 1);
GlHelpers.popMatrix();
}
// Render the healthbar
double max_health = player.maxHealth();
double a = 1 - (player.getHealth() / max_health);
TextureReference health_fg = Models.UI_HEALTH_FG;
TextureReference health_bg = Models.UI_HEALTH_BG;
GlHelpers.pushMatrix();
GlHelpers.translate2(-2*s, -9*s);
GlHelpers.begin();
health_bg.texCoord(0, 1); GlHelpers.vertex2(-8, 1);
health_bg.texCoord(0, 0); GlHelpers.vertex2(-8, 0);
health_bg.texCoord(1, 0); GlHelpers.vertex2(8, 0);
health_bg.texCoord(1, 1); GlHelpers.vertex2(8, 1);
health_fg.texCoord(0, 1); GlHelpers.vertex2(-8, 1);
health_fg.texCoord(0, 0); GlHelpers.vertex2(-8, 0);
health_fg.texCoord(1-a, 0); GlHelpers.vertex2(8-a*16, 0);
health_fg.texCoord(1-a, 1); GlHelpers.vertex2(8-a*16, 1);
GlHelpers.end();
GlHelpers.popMatrix();
// Display the amount of ammo left, and the defence and gun level
GlHelpers.pushMatrix();
TextureReference ammo_tex = Models.ITEM_AMMO_BOX;
TextureReference gunlevel_tex = Models.UI_GUN_LEVEL;
TextureReference deflevel_tex = Models.UI_DEFENCE_LEVEL;
GlHelpers.translate2(-9.5*s, -9*s);
GlHelpers.begin();
ammo_tex.texCoord(0, 1); GlHelpers.vertex2(0, 0);
ammo_tex.texCoord(0, 0); GlHelpers.vertex2(0, 2);
ammo_tex.texCoord(1, 0); GlHelpers.vertex2(2, 2);
ammo_tex.texCoord(1, 1); GlHelpers.vertex2(2, 0);
GlHelpers.end();
GlHelpers.translate2(0, 2.5);
GlHelpers.begin();
gunlevel_tex.texCoord(0, 1); GlHelpers.vertex2(0, 0);
gunlevel_tex.texCoord(0, 0); GlHelpers.vertex2(0, 2);
gunlevel_tex.texCoord(1, 0); GlHelpers.vertex2(2, 2);
gunlevel_tex.texCoord(1, 1); GlHelpers.vertex2(2, 0);
GlHelpers.end();
GlHelpers.translate2(0, 2.5);
GlHelpers.begin();
deflevel_tex.texCoord(0, 1); GlHelpers.vertex2(0, 0);
deflevel_tex.texCoord(0, 0); GlHelpers.vertex2(0, 2);
deflevel_tex.texCoord(1, 0); GlHelpers.vertex2(2, 2);
deflevel_tex.texCoord(1, 1); GlHelpers.vertex2(2, 0);
GlHelpers.end();
GlHelpers.popMatrix();
GlHelpers.pushMatrix();
GlHelpers.translate2(-8.5*s, -9.25*s);
Text.render(Integer.toString(player.ammo), text_size);
GlHelpers.translate2(0, 3);
Text.render(Integer.toString(player.gun_level), text_size);
GlHelpers.translate2(0, 2);
Text.render(Integer.toString(player.defence_level), text_size);
GlHelpers.popMatrix();
// Display all the items in the players inventory
TextureReference slots_tex = Models.UI_ITEM_SLOTS;
GlHelpers.pushMatrix();
GlHelpers.translate2(3*s, -9.5*s);
GlHelpers.begin();
slots_tex.texCoord(0, 1); GlHelpers.vertex2(12, 2);
slots_tex.texCoord(0, 0); GlHelpers.vertex2(12, 0);
slots_tex.texCoord(1, 0); GlHelpers.vertex2(0, 0);
slots_tex.texCoord(1, 1); GlHelpers.vertex2(0, 2);
GlHelpers.end();
// Render the players active slot
TextureReference hotbar_slot_tex = Models.UI_ACTIVE_SLOT;
GlHelpers.begin();
hotbar_slot_tex.texCoord(0, 1); GlHelpers.vertex2(2.1 + player.inventory_hand*2, 2.1);
hotbar_slot_tex.texCoord(0, 0); GlHelpers.vertex2(2.1 + player.inventory_hand*2, -0.1);
hotbar_slot_tex.texCoord(1, 0); GlHelpers.vertex2(-0.1 + player.inventory_hand*2, -0.1);
hotbar_slot_tex.texCoord(1, 1); GlHelpers.vertex2(-0.1 + player.inventory_hand*2, 2.1);
GlHelpers.end();
GlHelpers.popMatrix();
// Get the players inventory
Inventory player_inv = player.getInventory();
GlHelpers.pushMatrix();
GlHelpers.translate2(3.12*s, -9.5*s);
// Render the players inventory
for(int i=0;i<6;i++)
{
ItemStack player_item = player_inv.getItem(i);
if(!player_item.isEmpty())
{
GlHelpers.pushMatrix();
GlHelpers.translate2(i * 2 / aspect_ratio, 0.3);
player_item.item.render(new Vec2d(0, 0), new Vec2d(1.5, 1.5));
GlHelpers.translate2(0, -0.1);
Text.render(Integer.toString(player_item.count), text_size);
GlHelpers.popMatrix();
}
}
GlHelpers.popMatrix();
// Render the active slots text
ItemStack item_active = player_inv.getItem(player.inventory_hand);
if(!item_active.isEmpty())
{
GlHelpers.pushMatrix();
GlHelpers.translate2(3.12*s, -9.5*s);
GlHelpers.translate2(-0.08, 2.24);
Text.render(item_active.item.getName(item_active.meta), text_size);
GlHelpers.popMatrix();
}
// Render the boss bars
BossBars.render();
}
// Render the loaded menu // Render the loaded menu
Main.menu.render();*/ //Main.menu.render();
} }
} }

View File

@ -1,7 +1,7 @@
package projectzombie.display; package projectzombie.display;
import mainloop.task.IMainloopTask; import mainloop.task.IMainloopTask;
import projectzombie.mainloop.MainloopEventHandler; import projectzombie.Main;
public class DisplayStatsEventHandler implements IMainloopTask public class DisplayStatsEventHandler implements IMainloopTask
{ {
@ -22,9 +22,11 @@ public class DisplayStatsEventHandler implements IMainloopTask
@Override @Override
public void MainLoopUpdate() public void MainLoopUpdate()
{ {
// Set the fps from mspf every second // Display the fps
long mspf = MainloopEventHandler.MAINLOOP_EVENT_HANDLER.mspf; Main.window.setTitle("Project Zombie (" + DisplayWindow.fps + " fps)");
fps = (int)(1000 / mspf);
fps = DisplayWindow.fps;
DisplayWindow.fps = 0;
} }

View File

@ -1,22 +1,14 @@
package projectzombie.display; package projectzombie.display;
import static org.lwjgl.glfw.GLFW.GLFW_DOUBLEBUFFER;
import static org.lwjgl.glfw.GLFW.GLFW_FALSE;
import static org.lwjgl.glfw.GLFW.glfwWindowHint;
import java.nio.IntBuffer; import java.nio.IntBuffer;
import org.lwjgl.BufferUtils; import org.lwjgl.BufferUtils;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;
import org.lwjgl.opengl.GL;
import org.lwjgl.opengl.GL33; import org.lwjgl.opengl.GL33;
import gl_engine.graphics.GraphicsHelpers; import gl_engine.graphics.GraphicsHelpers;
import gl_engine.graphics.GraphicsShader; import gl_engine.graphics.GraphicsShader;
import gl_engine.matrix.Matrix4;
import mainloop.task.IMainloopTask; import mainloop.task.IMainloopTask;
import projectzombie.Main;
import projectzombie.init.Models;
import projectzombie.init.Resources; import projectzombie.init.Resources;
import projectzombie.input.CursorEnterCallback; import projectzombie.input.CursorEnterCallback;
import projectzombie.input.CursorPosCallback; import projectzombie.input.CursorPosCallback;
@ -26,7 +18,6 @@ import projectzombie.input.KeyCharCallback;
import projectzombie.input.MouseButtonCallback; import projectzombie.input.MouseButtonCallback;
import projectzombie.input.ScrollWheelCallback; import projectzombie.input.ScrollWheelCallback;
import projectzombie.mainloop.MainloopEventHandler; import projectzombie.mainloop.MainloopEventHandler;
import projectzombie.util.gl.GlHelpers;
public class DisplayWindow implements IMainloopTask public class DisplayWindow implements IMainloopTask
{ {
@ -38,12 +29,15 @@ public class DisplayWindow implements IMainloopTask
private boolean fullscreen = true; private boolean fullscreen = true;
private boolean mouseVisibility_last = false; private boolean mouseVisibility_last = false;
public static int fps = 0;
public GraphicsShader environmentRenderer; public GraphicsShader environmentRenderer;
public int glsl_model; public int glsl_model;
public int glsl_projection; public int glsl_projection;
public int glsl_rotated; public int glsl_rotated;
public int glsl_camera; public int glsl_camera;
public int glsl_time;
public int getWidth() { public int getWidth() {
return this.width; return this.width;
@ -80,6 +74,8 @@ public class DisplayWindow implements IMainloopTask
width = w.get()*4; width = w.get()*4;
height = h.get()*4; height = h.get()*4;
//GLFW.glfwWindowHint(GLFW.GLFW_DOUBLEBUFFER, GLFW.GLFW_FALSE);
// Create the window // Create the window
window = GraphicsHelpers.initWindow("Project Zombie", width, height, monitor); window = GraphicsHelpers.initWindow("Project Zombie", width, height, monitor);
@ -102,6 +98,7 @@ public class DisplayWindow implements IMainloopTask
//GLFW.glfwShowWindow(this.window); //GLFW.glfwShowWindow(this.window);
GL33.glEnable(GL33.GL_DEPTH_TEST); GL33.glEnable(GL33.GL_DEPTH_TEST);
GL33.glEnable(GL33.GL_BLEND);
environmentRenderer = new GraphicsShader("/resources/shader/environmentRenderer"); environmentRenderer = new GraphicsShader("/resources/shader/environmentRenderer");
environmentRenderer.use(); environmentRenderer.use();
@ -110,6 +107,7 @@ public class DisplayWindow implements IMainloopTask
glsl_camera = GL33.glGetUniformLocation(environmentRenderer.program, "camera"); glsl_camera = GL33.glGetUniformLocation(environmentRenderer.program, "camera");
glsl_rotated = GL33.glGetUniformLocation(environmentRenderer.program, "rotated"); glsl_rotated = GL33.glGetUniformLocation(environmentRenderer.program, "rotated");
glsl_projection = GL33.glGetUniformLocation(environmentRenderer.program, "projection"); glsl_projection = GL33.glGetUniformLocation(environmentRenderer.program, "projection");
glsl_time = GL33.glGetUniformLocation(environmentRenderer.program, "time");
} }
public void render() public void render()
@ -133,6 +131,8 @@ public class DisplayWindow implements IMainloopTask
// Swap the framebuffers and poll events // Swap the framebuffers and poll events
GLFW.glfwSwapBuffers(window); GLFW.glfwSwapBuffers(window);
GLFW.glfwPollEvents(); GLFW.glfwPollEvents();
fps += 1;
} }
public void toggleFullscreen() { public void toggleFullscreen() {
@ -157,7 +157,11 @@ public class DisplayWindow implements IMainloopTask
} }
public boolean shouldClose() { public boolean shouldClose() {
return GLFW.glfwWindowShouldClose(this.window); return GLFW.glfwWindowShouldClose(window);
}
public void makeContextCurrent() {
GLFW.glfwMakeContextCurrent(window);
} }
@Override @Override
@ -174,4 +178,8 @@ public class DisplayWindow implements IMainloopTask
public void MainLoopUpdate() { public void MainLoopUpdate() {
this.render(); this.render();
} }
public void setTitle(String string) {
GLFW.glfwSetWindowTitle(window, string);
}
} }

View File

@ -2,10 +2,6 @@ package projectzombie.display.bossbar;
import java.util.ArrayList; import java.util.ArrayList;
import projectzombie.init.Models;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.texture.TextureReference;
public class BossBars public class BossBars
{ {
private static final ArrayList<IBossBar> bossbars = new ArrayList<IBossBar>(); private static final ArrayList<IBossBar> bossbars = new ArrayList<IBossBar>();

View File

@ -1,10 +1,10 @@
package projectzombie.display.lighting; package projectzombie.display.lighting;
import gl_engine.MathHelpers; import gl_engine.MathHelpers;
import projectzombie.util.math.map.IMap2D;
import projectzombie.util.math.map.Map2D;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i; import gl_engine.vec.Vec2i;
import projectzombie.util.math.map.IMap2D;
import projectzombie.util.math.map.Map2D;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
public class ChunkLightingCollection implements IMap2D<ChunkLightingTemp> public class ChunkLightingCollection implements IMap2D<ChunkLightingTemp>

View File

@ -1,12 +1,11 @@
package projectzombie.display.lighting; package projectzombie.display.lighting;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2i;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.display.Camera;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import gl_engine.MathHelpers;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.chunk.ChunkEventHandler; import projectzombie.world.chunk.ChunkEventHandler;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -18,7 +17,7 @@ public class DynamicLighting
public static void update() public static void update()
{ {
if(!ChunkEventHandler.loaded) return; if(!ChunkEventHandler.loaded) return;
int r = Camera.camera.renderDistance; int r = Chunk.RENDER_DISTANCE;
Layer layer = Main.world.getLayer(); Layer layer = Main.world.getLayer();
EntityPlayer player = Main.player; EntityPlayer player = Main.player;
@ -84,7 +83,7 @@ public class DynamicLighting
MathHelpers.floor(lpos.squareDistance(new Vec2i( MathHelpers.floor(lpos.squareDistance(new Vec2i(
MathHelpers.floor(Main.player.pos.x), MathHelpers.floor(Main.player.pos.x),
MathHelpers.floor(Main.player.pos.y))) / 16) MathHelpers.floor(Main.player.pos.y))) / 16)
> Camera.camera.renderDistance) { > Chunk.RENDER_DISTANCE) {
return; return;
} }

View File

@ -1,15 +1,15 @@
package projectzombie.display.lighting; package projectzombie.display.lighting;
import gl_engine.MathHelpers;
import gl_engine.range.Range4i;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec4i;
import mainloop.task.IMainloopTask; import mainloop.task.IMainloopTask;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.display.Camera; import projectzombie.display.Camera;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.mainloop.MainloopHelpers; import projectzombie.mainloop.MainloopHelpers;
import gl_engine.MathHelpers;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import gl_engine.range.Range4i;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec4i;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.chunk.ChunkEventHandler; import projectzombie.world.chunk.ChunkEventHandler;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -123,7 +123,7 @@ public class TileLighting implements IMainloopTask
MathHelpers.floor(lpos.squareDistance(new Vec2i( MathHelpers.floor(lpos.squareDistance(new Vec2i(
MathHelpers.floor(Main.player.pos.x), MathHelpers.floor(Main.player.pos.x),
MathHelpers.floor(Main.player.pos.y))) / 16) MathHelpers.floor(Main.player.pos.y))) / 16)
> Camera.camera.renderDistance > Chunk.RENDER_DISTANCE
) { ) {
return; return;
} }
@ -190,7 +190,7 @@ public class TileLighting implements IMainloopTask
@Override @Override
public boolean MainLoopRepeat() { public boolean MainLoopRepeat() {
return true; return false;
} }
@Override @Override

View File

@ -8,17 +8,15 @@ import bdf.classes.IBdfClassManager;
import bdf.types.BdfArray; import bdf.types.BdfArray;
import bdf.types.BdfNamedList; import bdf.types.BdfNamedList;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import mainloop.task.IMainloopTask; import mainloop.task.IMainloopTask;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.display.Camera;
import projectzombie.init.Entities; import projectzombie.init.Entities;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.tiles.Tile; import projectzombie.tiles.Tile;
import gl_engine.MathHelpers;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.chunk.ChunkEventHandler; import projectzombie.world.chunk.ChunkEventHandler;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;

View File

@ -4,8 +4,11 @@ import java.util.Random;
import bdf.types.BdfNamedList; import bdf.types.BdfNamedList;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.display.Camera;
import projectzombie.display.bossbar.BossBars; import projectzombie.display.bossbar.BossBars;
import projectzombie.display.bossbar.IBossBar; import projectzombie.display.bossbar.IBossBar;
import projectzombie.init.Items; import projectzombie.init.Items;
@ -13,14 +16,9 @@ import projectzombie.init.Models;
import projectzombie.init.Tiles; import projectzombie.init.Tiles;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.time.GameTimer; import projectzombie.time.GameTimer;
import projectzombie.util.gl.texture.TextureReference;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import gl_engine.MathHelpers;
import projectzombie.util.math.random.OpenSimplexNoise; import projectzombie.util.math.random.OpenSimplexNoise;
import projectzombie.util.math.random.RandomHelpers; import projectzombie.util.math.random.RandomHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;

View File

@ -2,20 +2,17 @@ package projectzombie.entity;
import bdf.types.BdfNamedList; import bdf.types.BdfNamedList;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import projectzombie.display.Camera; import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.entity.particle.ParticleBlood; import projectzombie.entity.particle.ParticleBlood;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.init.Sounds; import projectzombie.init.Sounds;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.settings.SettingQuality;
import projectzombie.tiles.Tile; import projectzombie.tiles.Tile;
import projectzombie.tiles.TileBulletBreakable; import projectzombie.tiles.TileBulletBreakable;
import projectzombie.util.gl.GlHelpers;
import gl_engine.MathHelpers;
import projectzombie.util.math.random.RandomHelpers; import projectzombie.util.math.random.RandomHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -75,7 +72,7 @@ public class EntityBullet extends EntityParticle
Math.toRadians(this.angle), Math.toRadians(this.height_angle))); Math.toRadians(this.angle), Math.toRadians(this.height_angle)));
// Play the gun sound // Play the gun sound
Sounds.GUN.play(new Vec3d(pos.x, pos.y, 0.4), 2); Sounds.GUN.play(new Vec3d(pos.x, 0.4, pos.y), 2);
} }
public EntityBullet withHeight(double angle, double height) { public EntityBullet withHeight(double angle, double height) {
@ -157,7 +154,7 @@ public class EntityBullet extends EntityParticle
e.push(1, angle); e.push(1, angle);
// Spawn some blood particles // Spawn some blood particles
if(EntityParticle.MODE != SettingQuality.OFF) { if(!EntityParticle.DISABLED) {
for(int i=0;i<ea.bloodParticles();i++) { for(int i=0;i<ea.bloodParticles();i++) {
chunk.spawnEntity(new ParticleBlood(rand, pos.copy(), angle)); chunk.spawnEntity(new ParticleBlood(rand, pos.copy(), angle));
} }

View File

@ -1,9 +1,9 @@
package projectzombie.entity; package projectzombie.entity;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import gl_engine.vec.Vec2d;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import gl_engine.vec.Vec2d;
public class EntityDummy extends Entity implements EntityAlive public class EntityDummy extends Entity implements EntityAlive
{ {

View File

@ -2,19 +2,20 @@ package projectzombie.entity;
import bdf.types.BdfNamedList; import bdf.types.BdfNamedList;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.entity.particle.ParticleBlood; import projectzombie.entity.particle.ParticleBlood;
import projectzombie.entity.particle.ParticleBreak; import projectzombie.entity.particle.ParticleBreak;
import projectzombie.entity.particle.ParticleSmoke; import projectzombie.entity.particle.ParticleSmoke;
import projectzombie.init.Models;
import projectzombie.init.Sounds; import projectzombie.init.Sounds;
import projectzombie.init.Tiles; import projectzombie.init.Tiles;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.gl.texture.IHasTexture; import projectzombie.util.gl.texture.IHasTexture;
import gl_engine.MathHelpers;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -108,13 +109,13 @@ public class EntityExplosion extends Entity
if(!bts.tile.unbreakable) { if(!bts.tile.unbreakable) {
l.setBackTile(ets, tpos); l.setBackTile(ets, tpos);
if(fts.tile instanceof IHasTexture) if(fts.tile instanceof IHasTexture)
l.spawnEntity(new ParticleBreak(new Vec2d(tpos.x+rand.nextDouble(), tpos.y+rand.nextDouble()), bts)); l.spawnEntity(new ParticleBreak(new Vec2d(tpos.x+rand.nextDouble(), tpos.y+rand.nextDouble()), bts, 1));
} }
if(!fts.tile.unbreakable) { if(!fts.tile.unbreakable) {
l.setFrontTile(Tiles.VOID.getDefaultState(), tpos); l.setFrontTile(Tiles.VOID.getDefaultState(), tpos);
if(fts.tile instanceof IHasTexture) if(fts.tile instanceof IHasTexture)
l.spawnEntity(new ParticleBreak(new Vec2d(tpos.x+rand.nextDouble(), tpos.y+rand.nextDouble()), fts)); l.spawnEntity(new ParticleBreak(new Vec2d(tpos.x+rand.nextDouble(), tpos.y+rand.nextDouble()), fts, 1));
} }
// Spawn some blood if entities were killed // Spawn some blood if entities were killed
@ -136,6 +137,6 @@ public class EntityExplosion extends Entity
@Override @Override
public Model getModel() { public Model getModel() {
return null; return Models.EMPTY;
} }
} }

View File

@ -1,9 +1,6 @@
package projectzombie.entity; package projectzombie.entity;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import projectzombie.display.Camera;
import projectzombie.init.Models;
import projectzombie.util.gl.texture.TextureReference;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -26,7 +23,7 @@ public class EntityFlare extends EntityTnt
@Override @Override
public double getLightLevel() { public double getLightLevel() {
return getLightWithHeight(1 - (this.height * (1/12.0))) * ( rand.nextDouble() / 10.0 + 0.9 ); return getLightWithHeight(1 - (this.pos.y * (1/12.0))) * ( rand.nextDouble() / 10.0 + 0.9 );
} }
} }

View File

@ -2,13 +2,11 @@ package projectzombie.entity;
import bdf.types.BdfNamedList; import bdf.types.BdfNamedList;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import gl_engine.vec.Vec2d;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.display.Camera;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.gl.GlHelpers;
import gl_engine.vec.Vec2d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
import projectzombie.world.layer.layergen.LayerGenRememberPlayerPos; import projectzombie.world.layer.layergen.LayerGenRememberPlayerPos;

0
src/projectzombie/entity/EntityHeight.java Executable file → Normal file
View File

View File

@ -2,18 +2,14 @@ package projectzombie.entity;
import bdf.types.BdfNamedList; import bdf.types.BdfNamedList;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import projectzombie.display.Camera; import gl_engine.vec.Vec2d;
import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.texture.TextureReference;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import projectzombie.util.math.random.RandomHelpers; import projectzombie.util.math.random.RandomHelpers;
import gl_engine.vec.Vec2d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
public class EntityItem extends Entity public class EntityItem extends Entity implements EntityHeight
{ {
private ItemStack stack; private ItemStack stack;
private double height = 0; private double height = 0;
@ -23,6 +19,16 @@ public class EntityItem extends Entity
public double angle; public double angle;
@Override
public double getHeight() {
return height;
}
@Override
public void setHeight(double height) {
this.height = height;
}
public EntityItem(BdfObject bdf) { public EntityItem(BdfObject bdf) {
super(bdf); super(bdf);
} }
@ -134,7 +140,7 @@ public class EntityItem extends Entity
@Override @Override
public Model getModel() { public Model getModel() {
return stack.item.getModel(stack.meta); return stack.item.getModel(stack.meta).getItemModel();
} }

View File

@ -1,18 +1,15 @@
package projectzombie.entity; package projectzombie.entity;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import projectzombie.Main;
import projectzombie.display.Camera;
import projectzombie.settings.SettingQuality;
import projectzombie.util.gl.GlHelpers;
import gl_engine.texture.TextureRef3D; import gl_engine.texture.TextureRef3D;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import projectzombie.Main;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
public abstract class EntityParticle extends Entity public abstract class EntityParticle extends Entity
{ {
public static SettingQuality MODE = SettingQuality.FANCY; public static boolean DISABLED = false;
protected TextureRef3D tex; protected TextureRef3D tex;
public EntityParticle(BdfObject bdf) { public EntityParticle(BdfObject bdf) {
@ -28,6 +25,6 @@ public abstract class EntityParticle extends Entity
super.tick(chunk, layer); super.tick(chunk, layer);
// Kill the particle if the player can't see it to reduce lag // Kill the particle if the player can't see it to reduce lag
if(Main.player.pos.squareDistance(pos) > Camera.camera.renderDistance * 16) this.kill(); if(Main.player.pos.squareDistance(pos) > Chunk.RENDER_DISTANCE * 16) this.kill();
} }
} }

View File

@ -2,14 +2,12 @@ package projectzombie.entity;
import bdf.types.BdfNamedList; import bdf.types.BdfNamedList;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import projectzombie.display.Camera;
import projectzombie.entity.particle.ParticleSpark;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.util.gl.GlHelpers;
import gl_engine.MathHelpers; import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec3d; import gl_engine.vec.Vec3d;
import projectzombie.entity.particle.ParticleSpark;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -127,8 +125,7 @@ public class EntityTnt extends Entity
@Override @Override
public Model getModel() { public Model getModel() {
// TODO Auto-generated method stub return Models.EMPTY;
return null;
} }
} }

View File

@ -4,15 +4,14 @@ import java.util.Random;
import bdf.types.BdfNamedList; import bdf.types.BdfNamedList;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.gl.texture.TextureReference;
import projectzombie.util.math.astar.AStar; import projectzombie.util.math.astar.AStar;
import projectzombie.util.math.astar.AStarSearcher; import projectzombie.util.math.astar.AStarSearcher;
import projectzombie.util.math.random.OpenSimplexNoise; import projectzombie.util.math.random.OpenSimplexNoise;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;

View File

@ -1,11 +1,9 @@
package projectzombie.entity; package projectzombie.entity;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import projectzombie.display.Camera; import gl_engine.vec.Vec2d;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.gl.texture.TextureReference;
import gl_engine.vec.Vec2d;
public class EntityZombieArmored extends EntityZombie public class EntityZombieArmored extends EntityZombie
{ {

View File

@ -2,27 +2,34 @@ package projectzombie.entity.particle;
import java.util.Random; import java.util.Random;
import projectzombie.display.Camera; import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec3d;
import projectzombie.entity.EntityHeight;
import projectzombie.entity.EntityParticle; import projectzombie.entity.EntityParticle;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.settings.SettingQuality;
import projectzombie.util.gl.GlHelpers;
import gl_engine.MathHelpers;
import projectzombie.util.math.random.RandomHelpers; import projectzombie.util.math.random.RandomHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
public class ParticleBlood extends EntityParticle public class ParticleBlood extends EntityParticle implements EntityHeight
{ {
private double r_color; private double r_color;
private double time = 1000; private double time = 1000;
private double height = 0; private double height = 0;
private Vec3d velocity; private Vec3d velocity;
@Override
public double getHeight() {
return height;
}
@Override
public void setHeight(double height) {
this.height = height;
}
public ParticleBlood(Random rand, Vec2d pos, double angle) { public ParticleBlood(Random rand, Vec2d pos, double angle) {
super(pos); super(pos);
@ -60,7 +67,7 @@ public class ParticleBlood extends EntityParticle
// Should this particle too old; destroy it // Should this particle too old; destroy it
if(time < 0) chunk.killEntity(this); if(time < 0) chunk.killEntity(this);
if(MODE == SettingQuality.OFF) { if(DISABLED) {
kill(); kill();
} }
} }

View File

@ -1,60 +1,59 @@
package projectzombie.entity.particle; package projectzombie.entity.particle;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec3d;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.display.Camera;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.entity.EntityHeight;
import projectzombie.entity.EntityParticle; import projectzombie.entity.EntityParticle;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.settings.SettingQuality;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.texture.IHasTexture;
import projectzombie.util.gl.texture.TextureReference;
import gl_engine.MathHelpers;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import projectzombie.util.math.random.RandomHelpers; import projectzombie.util.math.random.RandomHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
public class ParticleBreak extends EntityParticle public class ParticleBreak extends EntityParticle implements EntityHeight
{ {
private double height = 0; private double height = 0;
private Vec3d velocity; private Vec3d velocity;
private int time = 0; private int time = 0;
private boolean landed = false; private boolean landed = false;
@Override
public double getHeight() {
return height;
}
@Override
public void setHeight(double height) {
this.height = height;
}
public static void spawnParticles(Chunk chunk, Vec2d pos, Entity e) public static void spawnParticles(Chunk chunk, Vec2d pos, Entity e)
{ {
if(EntityParticle.MODE == SettingQuality.OFF) { if(DISABLED) {
return; return;
} }
int height = 1; double height = e.getModel().getHeight();
/*if(e instanceof EntityVertical) {
height = MathHelpers.floor(((EntityVertical)e).size.y);
}
for(int i=0;i<50 * height;i++) { for(int i=0;i<50 * height;i++) {
chunk.spawnEntity(new ParticleBreak(pos.copy(), e)); chunk.spawnEntity(new ParticleBreak(pos.copy(), e, height));
}*/ }
} }
public static void spawnParticles(Chunk chunk, Vec2d pos, TileState s) public static void spawnParticles(Chunk chunk, Vec2d pos, TileState s)
{ {
if(EntityParticle.MODE == SettingQuality.OFF) { if(DISABLED) {
return; return;
} }
int height = 1; double height = s.tile.getModel(s.meta).getHeight();
for(int i=0;i<50 * height;i++) { for(int i=0;i<50 * height;i++) {
chunk.spawnEntity(new ParticleBreak(pos.copy(), s)); chunk.spawnEntity(new ParticleBreak(pos.copy(), s, height));
} }
} }
@ -90,7 +89,7 @@ public class ParticleBreak extends EntityParticle
} }
}*/ }*/
public ParticleBreak(Vec2d pos, TileState ts) { public ParticleBreak(Vec2d pos, TileState ts, double height) {
super(pos); super(pos);
double angle = RandomHelpers.randrange(rand, 360); double angle = RandomHelpers.randrange(rand, 360);
@ -100,10 +99,11 @@ public class ParticleBreak extends EntityParticle
side_v.x, side_v.y, side_v.x, side_v.y,
RandomHelpers.randrange(rand, 10000) / 200000.0); RandomHelpers.randrange(rand, 10000) / 200000.0);
this.height = RandomHelpers.randrange(rand, 0, (int)(height * 1000)) / 1000.0;
time = RandomHelpers.randrange(rand, 800, 1200); time = RandomHelpers.randrange(rand, 800, 1200);
} }
public ParticleBreak(Vec2d pos, Entity entity) { public ParticleBreak(Vec2d pos, Entity entity, double height) {
super(pos); super(pos);
double angle = RandomHelpers.randrange(rand, 360); double angle = RandomHelpers.randrange(rand, 360);
@ -112,6 +112,7 @@ public class ParticleBreak extends EntityParticle
side_v.x, side_v.y, side_v.x, side_v.y,
RandomHelpers.randrange(rand, 10000) / 200000.0); RandomHelpers.randrange(rand, 10000) / 200000.0);
this.height = RandomHelpers.randrange(rand, 0, (int)(height * 1000)) / 1000.0;
time = RandomHelpers.randrange(rand, 500, 1500); time = RandomHelpers.randrange(rand, 500, 1500);
/*if(entity instanceof EntityVertical) { /*if(entity instanceof EntityVertical) {
@ -154,7 +155,7 @@ public class ParticleBreak extends EntityParticle
pos.y += velocity.y; pos.y += velocity.y;
} }
if(EntityParticle.MODE == SettingQuality.OFF) { if(DISABLED) {
kill(); kill();
} }
} }

View File

@ -2,25 +2,33 @@ package projectzombie.entity.particle;
import java.util.Random; import java.util.Random;
import projectzombie.display.Camera; import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec3d;
import projectzombie.entity.EntityHeight;
import projectzombie.entity.EntityParticle; import projectzombie.entity.EntityParticle;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.settings.SettingQuality;
import projectzombie.util.gl.GlHelpers;
import gl_engine.MathHelpers;
import projectzombie.util.math.random.RandomHelpers; import projectzombie.util.math.random.RandomHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
public class ParticleLava extends EntityParticle public class ParticleLava extends EntityParticle implements EntityHeight
{ {
private static Random rand = new Random(); private static Random rand = new Random();
private Vec3d velocity; private Vec3d velocity;
private double height = 0; private double height = 0;
@Override
public double getHeight() {
return height;
}
@Override
public void setHeight(double height) {
this.height = height;
}
public ParticleLava(Vec2d pos) { public ParticleLava(Vec2d pos) {
super(pos); super(pos);
@ -44,7 +52,7 @@ public class ParticleLava extends EntityParticle
kill(); kill();
} }
if(MODE == SettingQuality.OFF) { if(DISABLED) {
kill(); kill();
} }
} }

View File

@ -1,18 +1,16 @@
package projectzombie.entity.particle; package projectzombie.entity.particle;
import gl_engine.vec.Vec2d;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.display.Camera; import projectzombie.entity.EntityHeight;
import projectzombie.entity.EntityParticle; import projectzombie.entity.EntityParticle;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.settings.SettingQuality;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.math.random.RandomHelpers; import projectzombie.util.math.random.RandomHelpers;
import gl_engine.vec.Vec2d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
public class ParticleSmoke extends EntityParticle public class ParticleSmoke extends EntityParticle implements EntityHeight
{ {
double height = 0; double height = 0;
double opacity = 1; double opacity = 1;
@ -20,6 +18,16 @@ public class ParticleSmoke extends EntityParticle
double disappear_speed; double disappear_speed;
private Model model; private Model model;
@Override
public double getHeight() {
return height;
}
@Override
public void setHeight(double height) {
this.height = height;
}
public ParticleSmoke(Vec2d pos) { public ParticleSmoke(Vec2d pos) {
super(pos); super(pos);
@ -44,7 +52,7 @@ public class ParticleSmoke extends EntityParticle
height += height_speed; height += height_speed;
opacity -= disappear_speed; opacity -= disappear_speed;
if(EntityParticle.MODE == SettingQuality.OFF) { if(DISABLED) {
kill(); kill();
} }
} }

View File

@ -1,12 +1,9 @@
package projectzombie.entity.particle; package projectzombie.entity.particle;
import projectzombie.display.Camera; import gl_engine.vec.Vec2d;
import projectzombie.entity.EntityParticle; import projectzombie.entity.EntityParticle;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.settings.SettingQuality;
import projectzombie.util.gl.GlHelpers;
import gl_engine.vec.Vec2d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -32,7 +29,7 @@ public class ParticleSpark extends EntityParticle
kill(); kill();
} }
if(MODE == SettingQuality.OFF) { if(DISABLED) {
kill(); kill();
} }
} }

View File

@ -1,24 +1,31 @@
package projectzombie.entity.particle; package projectzombie.entity.particle;
import projectzombie.display.Camera; import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec3d;
import projectzombie.entity.EntityHeight;
import projectzombie.entity.EntityParticle; import projectzombie.entity.EntityParticle;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.settings.SettingQuality;
import projectzombie.util.gl.GlHelpers;
import gl_engine.MathHelpers;
import projectzombie.util.math.random.RandomHelpers; import projectzombie.util.math.random.RandomHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
public class ParticleWater extends EntityParticle public class ParticleWater extends EntityParticle implements EntityHeight
{ {
private Vec3d velocity; private Vec3d velocity;
private double height = 0; private double height = 0;
@Override
public double getHeight() {
return height;
}
@Override
public void setHeight(double height) {
this.height = height;
}
public ParticleWater(Vec2d pos) { public ParticleWater(Vec2d pos) {
super(pos); super(pos);
@ -42,7 +49,7 @@ public class ParticleWater extends EntityParticle
kill(); kill();
} }
if(MODE == SettingQuality.OFF) { if(DISABLED) {
kill(); kill();
} }
} }

View File

@ -1,14 +1,11 @@
package projectzombie.entity.player; package projectzombie.entity.player;
import java.io.FileOutputStream;
import java.util.zip.DeflaterOutputStream;
import bdf.types.BdfIndent;
import bdf.types.BdfNamedList; import bdf.types.BdfNamedList;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import mainloop.task.IMainloopTask; import mainloop.task.IMainloopTask;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.display.Camera;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.entity.EntityAlive; import projectzombie.entity.EntityAlive;
import projectzombie.entity.EntityBullet; import projectzombie.entity.EntityBullet;
@ -22,16 +19,8 @@ import projectzombie.inventory.Inventory;
import projectzombie.menu.MenuDeath; import projectzombie.menu.MenuDeath;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.settings.Cheats; import projectzombie.settings.Cheats;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.texture.TextureReference;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.world.World;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.chunk.ChunkEventHandler;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
public class EntityPlayer extends Entity implements EntityAlive, EntityInventory, EntityHeight public class EntityPlayer extends Entity implements EntityAlive, EntityInventory, EntityHeight

View File

@ -38,6 +38,8 @@ public class Items
register(GRAPPLING_HOOK); register(GRAPPLING_HOOK);
register(SPAWN_ZOMBIE); register(SPAWN_ZOMBIE);
register(SPAWN_DUMMY);
register(ROCK); register(ROCK);
register(AMMO); register(AMMO);
@ -54,6 +56,7 @@ public class Items
public static final Item GRAPPLING_HOOK = new ItemGrapplingHook(); public static final Item GRAPPLING_HOOK = new ItemGrapplingHook();
public static final Item SPAWN_ZOMBIE = new ItemSpawnZombie(); public static final Item SPAWN_ZOMBIE = new ItemSpawnZombie();
public static final Item SPAWN_DUMMY = new ItemSpawnZombie();
public static final Item ROCK = new ItemRock(); public static final Item ROCK = new ItemRock();
} }

View File

@ -1,20 +1,13 @@
package projectzombie.init; package projectzombie.init;
import java.util.ArrayList;
import org.lwjgl.opengl.GL;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import projectzombie.display.DisplayWindow;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.model.ModelEmpty; import projectzombie.model.ModelEmpty;
import projectzombie.model.ModelGui; import projectzombie.model.ModelGui;
import projectzombie.model.ModelItem;
import projectzombie.model.ModelRandom; import projectzombie.model.ModelRandom;
import projectzombie.model.ModelTile; import projectzombie.model.ModelTile;
import projectzombie.model.ModelVertical; import projectzombie.model.ModelVertical;
import projectzombie.util.gl.texture.TextureMap;
import projectzombie.util.gl.texture.TextureReference;
import projectzombie.util.gl.texture.TextureReferenceRandom;
public class Models public class Models
{ {
@ -27,31 +20,30 @@ public class Models
public static final Model TILE_TREE = new ModelVertical(Resources.ATLAS.get("/tile/tree.png"), new Vec2d(1, 4)); public static final Model TILE_TREE = new ModelVertical(Resources.ATLAS.get("/tile/tree.png"), new Vec2d(1, 4));
public static final Model TILE_ROCK = new ModelVertical(Resources.ATLAS.get("/tile/rock.png")); public static final Model TILE_ROCK = new ModelVertical(Resources.ATLAS.get("/tile/rock.png"));
public static final Model TILE_LADDER = new ModelVertical(Resources.ATLAS.get("/tile/ladder.png")); public static final Model TILE_LADDER = new ModelVertical(Resources.ATLAS.get("/tile/ladder.png"));
public static final Model TILE_PORTAL = new ModelVertical(Resources.ATLAS.get("/tile/portal.png")); public static final Model TILE_PORTAL = new ModelTile(Resources.ATLAS.get("/tile/tunnel_down.png"));
public static final Model TILE_WALL = new ModelTile(Resources.ATLAS.get("/tile/wall.png")); public static final Model TILE_WALL = new ModelTile(Resources.ATLAS.get("/tile/wall.png"));
public static final Model TILE_LADDER_UP = new ModelVertical(Resources.ATLAS.get("/tile/ladder_up.png")); public static final Model TILE_LADDER_UP = new ModelVertical(Resources.ATLAS.get("/tile/ladder_up.png"), new Vec2d(1, 16));
public static final Model TILE_CHEST = new ModelVertical(Resources.ATLAS.get("/tile/chest.png")); public static final Model TILE_CHEST = new ModelVertical(Resources.ATLAS.get("/tile/chest.png"));
public static final Model TILE_BOSS_PORTAL = new ModelVertical(Resources.ATLAS.get("/tile/boss_portal.png")); public static final Model TILE_BOSS_PORTAL = new ModelVertical(Resources.ATLAS.get("/tile/boss_portal.png"), new Vec2d(2, 2));
public static final Model TILE_WATER = new ModelTile(Resources.ATLAS.get("/tile/water.png")); public static final Model TILE_WATER = new ModelTile(Resources.ATLAS.get("/tile/water.png"), 16, 10);
public static final Model TILE_LAVA = new ModelTile(Resources.ATLAS.get("/tile/lava.png")); public static final Model TILE_LAVA = new ModelTile(Resources.ATLAS.get("/tile/lava.png"), 16, 50);
public static final Model TILE_LAVA_FLOW = new ModelTile(Resources.ATLAS.get("/tile/lava_flow.png")); public static final Model TILE_LAVA_FLOW = new ModelTile(Resources.ATLAS.get("/tile/lava_flow.png"), 16, 50);
public static final Model TILE_LANTERN = new ModelVertical(Resources.ATLAS.get("/tile/lantern.png"), 4, 5);
public static final Model ENTITY_BOSS_IDLE = new ModelVertical(Resources.ATLAS.get("/entity/boss1/boss_idle.png")); public static final Model ENTITY_BOSS_IDLE = new ModelVertical(Resources.ATLAS.get("/entity/boss1/boss_idle.png"), new Vec2d(4, 4));
public static final Model ENTITY_BOSS_FIRING = new ModelVertical(Resources.ATLAS.get("/entity/boss1/boss_firing.png"), 4, 10); public static final Model ENTITY_BOSS_FIRING = new ModelVertical(Resources.ATLAS.get("/entity/boss1/boss_firing.png"), new Vec2d(4, 4), 4, 10);
public static final Model ENTITY_BOSS_WALKING = new ModelVertical(Resources.ATLAS.get("/entity/boss1/boss_walking.png"), 4, 10); public static final Model ENTITY_BOSS_WALKING = new ModelVertical(Resources.ATLAS.get("/entity/boss1/boss_walking.png"), new Vec2d(4, 4), 4, 10);
public static final Model ENTITY_BOSS_WALKING_AND_FIRING = new ModelVertical(Resources.ATLAS.get("/entity/boss1/boss_walking_firing.png"), 4, 10); public static final Model ENTITY_BOSS_WALKING_AND_FIRING = new ModelVertical(Resources.ATLAS.get("/entity/boss1/boss_walking_firing.png"), new Vec2d(4, 4), 4, 10);
public static final Model ENTITY_TNT = new ModelVertical(Resources.ATLAS.get("/entity/tnt.png")); public static final Model ENTITY_TNT = new ModelVertical(Resources.ATLAS.get("/entity/tnt.png"));
public static final Model ENTITY_FLARE = new ModelVertical(Resources.ATLAS.get("/entity/flare.png")); public static final Model ENTITY_FLARE = new ModelVertical(Resources.ATLAS.get("/entity/flare.png"));
public static final Model ENTITY_DUMMY = new ModelVertical(Resources.ATLAS.get("/entity/dummy.png")); public static final Model ENTITY_DUMMY = new ModelVertical(Resources.ATLAS.get("/entity/dummy.png"));
public static final Model ENTITY_GRAPPLING_HOOK = new ModelVertical(Resources.ATLAS.get("/entity/grappling_hook.png")); public static final Model ENTITY_GRAPPLING_HOOK = new ModelVertical(Resources.ATLAS.get("/entity/grappling_hook.png"));
public static final Model TILE_LANTERN = new ModelVertical(Resources.ATLAS.get("/tile/lantern.png"), 4, 5); public static final Model PARTICLE_BLOOD = new ModelVertical(Resources.ATLAS.get("/particle/blood.png"), new Vec2d(0.1, 0.1));
public static final Model PARTICLE_LAVA = new ModelVertical(Resources.ATLAS.get("/particle/lava.png"), new Vec2d(0.1, 0.1));
public static final Model PARTICLE_BLOOD = new ModelVertical(Resources.ATLAS.get("/particle/blood.png")); public static final Model PARTICLE_WATER = new ModelVertical(Resources.ATLAS.get("/particle/water.png"), new Vec2d(0.1, 0.1));
public static final Model PARTICLE_LAVA = new ModelVertical(Resources.ATLAS.get("/particle/blood.png")); public static final Model PARTICLE_SMOKE_TRAIL = new ModelVertical(Resources.ATLAS.get("/particle/smoke_trail.png"), new Vec2d(0.1, 0.1));
public static final Model PARTICLE_WATER = new ModelVertical(Resources.ATLAS.get("/particle/blood.png")); public static final Model PARTICLE_BULLET = new ModelVertical(Resources.ATLAS.get("/particle/bullet.png"), new Vec2d(0.1, 0.1));
public static final Model PARTICLE_SMOKE_TRAIL = new ModelVertical(Resources.ATLAS.get("/particle/blood.png"));
public static final Model PARTICLE_BULLET = new ModelVertical(Resources.ATLAS.get("/particle/blood.png"));
public static final ModelRandom PARTICLE_SMOKE_RANDOM = new ModelRandom( public static final ModelRandom PARTICLE_SMOKE_RANDOM = new ModelRandom(
new ModelVertical(Resources.ATLAS.get("/particle/smoke_0.png")), new ModelVertical(Resources.ATLAS.get("/particle/smoke_0.png")),
@ -72,12 +64,18 @@ public class Models
public static final Model UI_DEFENCE_LEVEL = new ModelGui(Resources.ATLAS.get("/gui/shield.png")); public static final Model UI_DEFENCE_LEVEL = new ModelGui(Resources.ATLAS.get("/gui/shield.png"));
public static final Model UI_GUN_LEVEL = new ModelGui(Resources.ATLAS.get("/gui/gun.png")); public static final Model UI_GUN_LEVEL = new ModelGui(Resources.ATLAS.get("/gui/gun.png"));
public static final Model ITEM_GRAPPLING_HOOK = new ModelGui(Resources.ATLAS.get("/item/grappling_hook.png")); public static final ModelItem ITEM_EMPTY = ModelItem.createEmpty();
public static final Model ITEM_HEALTH_POTION = new ModelGui(Resources.ATLAS.get("/item/health_potion.png")); public static final ModelItem ITEM_GRAPPLING_HOOK = new ModelItem(Resources.ATLAS.get("/item/grappling_hook.png"));
public static final Model ITEM_AMMO_BOX = new ModelGui(Resources.ATLAS.get("/item/ammo_box.png")); public static final ModelItem ITEM_HEALTH_POTION = new ModelItem(Resources.ATLAS.get("/item/health_potion.png"));
public static final Model ITEM_GUN_UPGRADE = new ModelGui(Resources.ATLAS.get("/item/gun_upgrade.png")); public static final ModelItem ITEM_AMMO_BOX = new ModelItem(Resources.ATLAS.get("/item/ammo_box.png"));
public static final Model ITEM_DEFENCE_UPGRADE = new ModelGui(Resources.ATLAS.get("/item/shield_upgrade.png")); public static final ModelItem ITEM_GUN_UPGRADE = new ModelItem(Resources.ATLAS.get("/item/gun_upgrade.png"));
public static final Model ITEM_ROCK = new ModelGui(Resources.ATLAS.get("/item/rock.png")); public static final ModelItem ITEM_DEFENCE_UPGRADE = new ModelItem(Resources.ATLAS.get("/item/shield_upgrade.png"));
public static final ModelItem ITEM_ROCK = new ModelItem(Resources.ATLAS.get("/tile/rock.png"));
public static final ModelItem ITEM_TNT = new ModelItem(Resources.ATLAS.get("/entity/tnt.png"));
public static final ModelItem ITEM_FLARE = new ModelItem(Resources.ATLAS.get("/entity/flare.png"));
public static final ModelItem ITEM_LANTERN = new ModelItem(Resources.ATLAS.get("/tile/lantern.png"), 4, 5);
public static final ModelItem ITEM_SPAWN_ZOMBIE = new ModelItem(Resources.ATLAS.get("/entity/zombie_back_moving.png"), 4, 10);
public static final ModelItem ITEM_SPAWN_DUMMY = new ModelItem(Resources.ATLAS.get("/entity/dummy.png"));
// Player Back White Varient // Player Back White Varient
public static final Model ENTITY_PLAYER_B_W_STILL = new ModelVertical(Resources.ATLAS.get("/player/player_white_back_still.png")); public static final Model ENTITY_PLAYER_B_W_STILL = new ModelVertical(Resources.ATLAS.get("/player/player_white_back_still.png"));

View File

@ -30,20 +30,20 @@ public class Resources
public static TextureAtlas3D ATLAS; public static TextureAtlas3D ATLAS;
public static final Resource GUN_OGG_0 = new Resource("sound/gun0.ogg"); public static final Resource GUN_OGG_0 = new Resource("/sound/gun0.ogg");
public static final Resource GUN_OGG_1 = new Resource("sound/gun1.ogg"); public static final Resource GUN_OGG_1 = new Resource("/sound/gun1.ogg");
public static final Resource GUN_OGG_2 = new Resource("sound/gun2.ogg"); public static final Resource GUN_OGG_2 = new Resource("/sound/gun2.ogg");
public static final Resource GUN_OGG_3 = new Resource("sound/gun3.ogg"); public static final Resource GUN_OGG_3 = new Resource("/sound/gun3.ogg");
public static final Resource GUN_OGG_4 = new Resource("sound/gun4.ogg"); public static final Resource GUN_OGG_4 = new Resource("/sound/gun4.ogg");
public static final Resource GUN_OGG_5 = new Resource("sound/gun5.ogg"); public static final Resource GUN_OGG_5 = new Resource("/sound/gun5.ogg");
public static final Resource GUN_OGG_6 = new Resource("sound/gun6.ogg"); public static final Resource GUN_OGG_6 = new Resource("/sound/gun6.ogg");
public static final Resource GUN_OGG_7 = new Resource("sound/gun7.ogg"); public static final Resource GUN_OGG_7 = new Resource("/sound/gun7.ogg");
public static final Resource GUN_OGG_8 = new Resource("sound/gun8.ogg"); public static final Resource GUN_OGG_8 = new Resource("/sound/gun8.ogg");
public static final Resource GUN_OGG_9 = new Resource("sound/gun9.ogg"); public static final Resource GUN_OGG_9 = new Resource("/sound/gun9.ogg");
public static final Resource HIT_OGG_0 = new Resource("sound/hit0.ogg"); public static final Resource HIT_OGG_0 = new Resource("/sound/hit0.ogg");
public static final Resource HIT_OGG_1 = new Resource("sound/hit1.ogg"); public static final Resource HIT_OGG_1 = new Resource("/sound/hit1.ogg");
public static final Resource HIT_OGG_2 = new Resource("sound/hit2.ogg"); public static final Resource HIT_OGG_2 = new Resource("/sound/hit2.ogg");
public static final Resource EXPLOSION_OGG = new Resource("sound/explosion.ogg"); public static final Resource EXPLOSION_OGG = new Resource("/sound/explosion.ogg");
} }

View File

@ -3,8 +3,8 @@ package projectzombie.input;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;
import org.lwjgl.glfw.GLFWCursorPosCallbackI; import org.lwjgl.glfw.GLFWCursorPosCallbackI;
import projectzombie.Main;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import projectzombie.Main;
public class CursorPosCallback implements GLFWCursorPosCallbackI public class CursorPosCallback implements GLFWCursorPosCallbackI
{ {

View File

@ -25,10 +25,10 @@ import static projectzombie.input.GameInput.move_last;
import org.lwjgl.glfw.GLFWKeyCallbackI; import org.lwjgl.glfw.GLFWKeyCallbackI;
import gl_engine.vec.Vec2d;
import mainloop.task.IMainloopTask; import mainloop.task.IMainloopTask;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.input.types.Input; import projectzombie.input.types.Input;
import gl_engine.vec.Vec2d;
public class KeyCallback implements GLFWKeyCallbackI, IMainloopTask public class KeyCallback implements GLFWKeyCallbackI, IMainloopTask
{ {
@ -165,11 +165,11 @@ public class KeyCallback implements GLFWKeyCallbackI, IMainloopTask
} }
if(moveLeft) { if(moveLeft) {
move_point.y -= 1; move_point.y += 1;
} }
if(moveRight) { if(moveRight) {
move_point.y += 1; move_point.y -= 1;
} }
if(move_point.x != 0 || move_point.y != 0) { if(move_point.x != 0 || move_point.y != 0) {

View File

@ -1,7 +1,7 @@
package projectzombie.input.types; package projectzombie.input.types;
import projectzombie.menu.gui.GUI;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import projectzombie.menu.gui.GUI;
public class InputGUI implements Input public class InputGUI implements Input
{ {

View File

@ -1,9 +1,9 @@
package projectzombie.input.types; package projectzombie.input.types;
import projectzombie.Main;
import projectzombie.menu.MenuGamePause;
import gl_engine.MathHelpers; import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import projectzombie.Main;
import projectzombie.menu.MenuGamePause;
import projectzombie.world.chunk.ChunkEventHandler; import projectzombie.world.chunk.ChunkEventHandler;
public class InputGame implements Input public class InputGame implements Input
@ -40,7 +40,7 @@ public class InputGame implements Input
@Override @Override
public void camera(boolean state, double amount) { public void camera(boolean state, double amount) {
Main.player.angle += amount; Main.player.angle -= amount;
} }
@Override @Override

View File

@ -4,17 +4,13 @@ import projectzombie.entity.Entity;
import projectzombie.entity.EntityInventory; import projectzombie.entity.EntityInventory;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.inventory.Inventory; import projectzombie.inventory.Inventory;
import projectzombie.model.Model; import projectzombie.model.ModelItem;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.texture.TextureReference;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import gl_engine.vec.Vec2d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
public abstract class Item public abstract class Item
{ {
public TextureReference texture;
public int id; public int id;
public void onPlayerAction(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) { public void onPlayerAction(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) {
@ -29,7 +25,7 @@ public abstract class Item
return 0; return 0;
} }
public abstract Model getModel(short meta); public abstract ModelItem getModel(short meta);
public void onPickedUp(ItemStack stack, Layer layer, Chunk chunk, Entity entity) public void onPickedUp(ItemStack stack, Layer layer, Chunk chunk, Entity entity)
{ {

View File

@ -3,7 +3,7 @@ package projectzombie.items;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.ModelItem;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -12,7 +12,7 @@ public class ItemAmmo extends Item
{ {
@Override @Override
public Model getModel(short meta) { public ModelItem getModel(short meta) {
return Models.ITEM_AMMO_BOX; return Models.ITEM_AMMO_BOX;
} }

View File

@ -3,7 +3,7 @@ package projectzombie.items;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.ModelItem;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -12,7 +12,7 @@ public class ItemDefenceUpgrade extends Item
{ {
@Override @Override
public Model getModel(short meta) { public ModelItem getModel(short meta) {
return Models.ITEM_DEFENCE_UPGRADE; return Models.ITEM_DEFENCE_UPGRADE;
} }

View File

@ -2,9 +2,9 @@ package projectzombie.items;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.model.Model; import projectzombie.init.Models;
import projectzombie.model.ModelItem;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import gl_engine.vec.Vec2d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -23,8 +23,8 @@ public class ItemEmpty extends Item
} }
@Override @Override
public Model getModel(short meta) { public ModelItem getModel(short meta) {
return null; return Models.ITEM_EMPTY;
} }
} }

View File

@ -3,7 +3,7 @@ package projectzombie.items;
import projectzombie.entity.EntityFlare; import projectzombie.entity.EntityFlare;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.ModelItem;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -12,8 +12,8 @@ public class ItemFlare extends Item
{ {
@Override @Override
public Model getModel(short meta) { public ModelItem getModel(short meta) {
return Models.ENTITY_FLARE; return Models.ITEM_FLARE;
} }
@Override @Override

View File

@ -1,12 +1,12 @@
package projectzombie.items; package projectzombie.items;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import projectzombie.entity.EntityGrapplingHook; import projectzombie.entity.EntityGrapplingHook;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.ModelItem;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -14,7 +14,7 @@ public class ItemGrapplingHook extends Item
{ {
@Override @Override
public Model getModel(short meta) { public ModelItem getModel(short meta) {
return Models.ITEM_GRAPPLING_HOOK; return Models.ITEM_GRAPPLING_HOOK;
} }
@ -28,7 +28,7 @@ public class ItemGrapplingHook extends Item
super.onPlayerAction(stack, layer, chunk, player); super.onPlayerAction(stack, layer, chunk, player);
Vec2d pos = player.pos.add(MathHelpers.moveTowards2(0.01, Math.toRadians(player.angle))); Vec2d pos = player.pos.add(MathHelpers.moveTowards2(0.01, Math.toRadians(player.angle)));
layer.spawnEntity(new EntityGrapplingHook(pos, stack.meta, player)); layer.spawnEntity(new EntityGrapplingHook(new Vec2d(pos.x, pos.y), stack.meta, player));
} }
} }

View File

@ -3,7 +3,7 @@ package projectzombie.items;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.ModelItem;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -12,7 +12,7 @@ public class ItemGunUpgrade extends Item
{ {
@Override @Override
public Model getModel(short meta) { public ModelItem getModel(short meta) {
return Models.ITEM_GUN_UPGRADE; return Models.ITEM_GUN_UPGRADE;
} }

View File

@ -2,7 +2,7 @@ package projectzombie.items;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.ModelItem;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -11,7 +11,7 @@ public class ItemHealthPotion extends Item
{ {
@Override @Override
public Model getModel(short meta) { public ModelItem getModel(short meta) {
return Models.ITEM_HEALTH_POTION; return Models.ITEM_HEALTH_POTION;
} }

View File

@ -1,12 +1,12 @@
package projectzombie.items; package projectzombie.items;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2i;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.init.Tiles; import projectzombie.init.Tiles;
import projectzombie.model.Model; import projectzombie.model.ModelItem;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -14,8 +14,8 @@ public class ItemLantern extends Item
{ {
@Override @Override
public Model getModel(short meta) { public ModelItem getModel(short meta) {
return Models.TILE_LANTERN; return Models.ITEM_LANTERN;
} }
@Override @Override

View File

@ -2,7 +2,7 @@ package projectzombie.items;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.ModelItem;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -11,7 +11,7 @@ public class ItemRock extends Item
{ {
@Override @Override
public Model getModel(short meta) { public ModelItem getModel(short meta) {
return Models.ITEM_ROCK; return Models.ITEM_ROCK;
} }

View File

@ -1,8 +1,8 @@
package projectzombie.items; package projectzombie.items;
import gl_engine.vec.Vec2d;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import gl_engine.vec.Vec2d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -12,7 +12,7 @@ public abstract class ItemSpawn extends Item
public void onPlayerAction(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) { public void onPlayerAction(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) {
super.onPlayerAction(stack, layer, chunk, player); super.onPlayerAction(stack, layer, chunk, player);
this.spawnEntity(layer, chunk, player.pos.copy()); this.spawnEntity(layer, chunk, player.pos);
} }
public void spawnEntity(Layer layer, Chunk chunk, Vec2d pos) { public void spawnEntity(Layer layer, Chunk chunk, Vec2d pos) {

View File

@ -3,7 +3,7 @@ package projectzombie.items;
import projectzombie.entity.EntityTnt; import projectzombie.entity.EntityTnt;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.ModelItem;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -11,8 +11,8 @@ import projectzombie.world.layer.Layer;
public class ItemTnt extends Item public class ItemTnt extends Item
{ {
@Override @Override
public Model getModel(short meta) { public ModelItem getModel(short meta) {
return Models.ENTITY_TNT; return Models.ITEM_TNT;
} }
@Override @Override

View File

@ -0,0 +1,24 @@
package projectzombie.items.spawner;
import gl_engine.vec.Vec2d;
import projectzombie.entity.EntityDummy;
import projectzombie.init.Models;
import projectzombie.items.ItemSpawn;
import projectzombie.model.ModelItem;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer;
public class ItemSpawnDummy extends ItemSpawn
{
@Override
public ModelItem getModel(short meta) {
return Models.ITEM_SPAWN_DUMMY;
}
@Override
public void spawnEntity(Layer layer, Chunk chunk, Vec2d pos) {
chunk.spawnEntity(new EntityDummy(new Vec2d(pos.x, pos.y)));
}
}

View File

@ -1,10 +1,10 @@
package projectzombie.items.spawner; package projectzombie.items.spawner;
import gl_engine.vec.Vec2d;
import projectzombie.entity.EntityZombie; import projectzombie.entity.EntityZombie;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.items.ItemSpawn; import projectzombie.items.ItemSpawn;
import projectzombie.model.Model; import projectzombie.model.ModelItem;
import gl_engine.vec.Vec2d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -12,13 +12,13 @@ public class ItemSpawnZombie extends ItemSpawn
{ {
@Override @Override
public Model getModel(short meta) { public ModelItem getModel(short meta) {
return Models.ENTITY_ZOMBIE_B; return Models.ITEM_SPAWN_ZOMBIE;
} }
@Override @Override
public void spawnEntity(Layer layer, Chunk chunk, Vec2d pos) { public void spawnEntity(Layer layer, Chunk chunk, Vec2d pos) {
chunk.spawnEntity(new EntityZombie(pos)); chunk.spawnEntity(new EntityZombie(new Vec2d(pos.x, pos.y)));
} }
} }

View File

@ -3,11 +3,9 @@ package projectzombie.menu;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.util.zip.DeflaterOutputStream; import java.util.zip.DeflaterOutputStream;
import bdf.types.BdfIndent;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.input.types.InputGUI; import projectzombie.input.types.InputGUI;
import projectzombie.menu.gui.Button;
import projectzombie.menu.gui.ButtonGroup; import projectzombie.menu.gui.ButtonGroup;
import projectzombie.menu.gui.GUI; import projectzombie.menu.gui.GUI;
import projectzombie.menu.gui.components.ButtonBasic; import projectzombie.menu.gui.components.ButtonBasic;

View File

@ -1,5 +1,6 @@
package projectzombie.menu; package projectzombie.menu;
import gl_engine.vec.Vec2d;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.display.DisplayRenderUI; import projectzombie.display.DisplayRenderUI;
import projectzombie.entity.EntityParticle; import projectzombie.entity.EntityParticle;
@ -13,8 +14,6 @@ import projectzombie.menu.gui.components.ButtonBasic;
import projectzombie.menu.gui.components.ButtonSetting; import projectzombie.menu.gui.components.ButtonSetting;
import projectzombie.menu.gui.components.GUIBackToMenu; import projectzombie.menu.gui.components.GUIBackToMenu;
import projectzombie.menu.gui.components.OverlayBackground; import projectzombie.menu.gui.components.OverlayBackground;
import projectzombie.settings.SettingQuality;
import gl_engine.vec.Vec2d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
public class MenuSettings extends Menu public class MenuSettings extends Menu
@ -22,10 +21,8 @@ public class MenuSettings extends Menu
private GUI gui; private GUI gui;
private Menu menuOld; private Menu menuOld;
private String qualitySettingToString(SettingQuality sq) { private String qualitySettingToString(boolean status) {
return sq == SettingQuality.OFF ? "Off" : return status ? "On" : "Off";
sq == SettingQuality.FAST ? "Fast" :
sq == SettingQuality.FANCY ? "Fancy" : null;
} }
public MenuSettings(Menu menuOld) { public MenuSettings(Menu menuOld) {
@ -55,8 +52,8 @@ public class MenuSettings extends Menu
group.add(new ButtonSetting("Render Distance: "+Chunk.RENDER_DISTANCE, button -> { group.add(new ButtonSetting("Render Distance: "+Chunk.RENDER_DISTANCE, button -> {
Chunk.RENDER_DISTANCE += 1; Chunk.RENDER_DISTANCE += 1;
if(Chunk.RENDER_DISTANCE > 5) { if(Chunk.RENDER_DISTANCE > 8) {
Chunk.RENDER_DISTANCE = 1; Chunk.RENDER_DISTANCE = 2;
} }
button.setText("Render Distance: "+Chunk.RENDER_DISTANCE); button.setText("Render Distance: "+Chunk.RENDER_DISTANCE);
})); }));
@ -69,32 +66,10 @@ public class MenuSettings extends Menu
button.setText("GUI Scale: " + DisplayRenderUI.guiScale); button.setText("GUI Scale: " + DisplayRenderUI.guiScale);
})); }));
group.add(new ButtonSetting("Particles: " + qualitySettingToString(EntityParticle.MODE), button -> { group.add(new ButtonSetting("Particles: " + qualitySettingToString(EntityParticle.DISABLED), button ->
{
switch(EntityParticle.MODE) { EntityParticle.DISABLED = !EntityParticle.DISABLED;
button.setText("Particles: " + qualitySettingToString(EntityParticle.DISABLED));
case OFF: {
EntityParticle.MODE = SettingQuality.FAST;
break;
}
case FAST: {
EntityParticle.MODE = SettingQuality.FANCY;
break;
}
case FANCY: {
EntityParticle.MODE = SettingQuality.OFF;
break;
}
default: {
break;
}
}
button.setText("Particles: " + qualitySettingToString(EntityParticle.MODE));
})); }));
/*group.add(new ButtonSetting("Dynamic Lighting: " + (LightingManager.lightingMode == 0 ? "Fast" : "Fancy"), /*group.add(new ButtonSetting("Dynamic Lighting: " + (LightingManager.lightingMode == 0 ? "Fast" : "Fancy"),

View File

@ -1,14 +1,13 @@
package projectzombie.menu.gui; package projectzombie.menu.gui;
import gl_engine.matrix.Matrix4;
import gl_engine.vec.Vec2d;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.input.InputMode; import projectzombie.input.InputMode;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.text.Text; import projectzombie.text.Text;
import projectzombie.util.gl.GlHelpers; import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.texture.TextureReference;
import gl_engine.matrix.Matrix4;
import gl_engine.vec.Vec2d;
public class Button implements GUIComponent, GUISelectable public class Button implements GUIComponent, GUISelectable
{ {
@ -74,6 +73,7 @@ public class Button implements GUIComponent, GUISelectable
Matrix4 matrix = Matrix4.translate(pos.x, pos.y, 0); Matrix4 matrix = Matrix4.translate(pos.x, pos.y, 0);
model.bind(); model.bind();
model.render();
if(mouseHover) { if(mouseHover) {
//GlHelpers.color3(0.8, 0.8, 0.8); //GlHelpers.color3(0.8, 0.8, 0.8);

View File

@ -1,9 +1,9 @@
package projectzombie.menu.gui; package projectzombie.menu.gui;
import projectzombie.text.Text;
import projectzombie.util.gl.GlHelpers;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec3d; import gl_engine.vec.Vec3d;
import projectzombie.text.Text;
import projectzombie.util.gl.GlHelpers;
public class Label implements GUIComponent public class Label implements GUIComponent
{ {
@ -35,18 +35,6 @@ public class Label implements GUIComponent
@Override @Override
public void render(Vec2d mousePos) { public void render(Vec2d mousePos) {
double a = GlHelpers.getAspectRatio();
GlHelpers.pushMatrix();
GlHelpers.color3(color.x, color.y, color.z);
GlHelpers.translate2(pos.x / a, pos.y - size.y / 2);
if(this.alignment == Alignment.CENTRE) {
GlHelpers.translate2(-size.y * text.length() / 2 / a, 0);
}
if(this.alignment == Alignment.RIGHT) {
GlHelpers.translate2(-size.y * text.length() / a, 0);
}
Text.render(text, size);
GlHelpers.popMatrix();
} }
@Override @Override

View File

@ -1,9 +1,9 @@
package projectzombie.menu.gui; package projectzombie.menu.gui;
import projectzombie.util.gl.GlHelpers;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec3d; import gl_engine.vec.Vec3d;
import gl_engine.vec.Vec4d; import gl_engine.vec.Vec4d;
import projectzombie.util.gl.GlHelpers;
public class Overlay implements GUIComponent public class Overlay implements GUIComponent
{ {
@ -19,17 +19,6 @@ public class Overlay implements GUIComponent
@Override @Override
public void render(Vec2d mousePos) { public void render(Vec2d mousePos) {
int s = GlHelpers.getScale();
GlHelpers.disableTexture2d();
GlHelpers.color4(color.x, color.y, color.z, color.m);
GlHelpers.begin();
GlHelpers.vertex3(-s, -s, 0);
GlHelpers.vertex3(-s, s, 0);
GlHelpers.vertex3(s, s, 0);
GlHelpers.vertex3(s, -s, 0);
GlHelpers.end();
GlHelpers.color4(1, 1, 1, 1);
GlHelpers.enableTexture2d();
} }
@Override @Override

View File

@ -1,7 +1,7 @@
package projectzombie.menu.gui.components; package projectzombie.menu.gui.components;
import projectzombie.menu.gui.Button;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import projectzombie.menu.gui.Button;
public class ButtonBasic extends Button { public class ButtonBasic extends Button {

View File

@ -1,10 +1,9 @@
package projectzombie.menu.gui.components; package projectzombie.menu.gui.components;
import gl_engine.vec.Vec2d;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.menu.MenuMain;
import projectzombie.menu.MenuSettings; import projectzombie.menu.MenuSettings;
import projectzombie.menu.gui.ButtonGroup; import projectzombie.menu.gui.ButtonGroup;
import gl_engine.vec.Vec2d;
public class ButtonGroupPause extends ButtonGroup public class ButtonGroupPause extends ButtonGroup
{ {

View File

@ -1,8 +1,8 @@
package projectzombie.menu.gui.components; package projectzombie.menu.gui.components;
import gl_engine.vec.Vec2d;
import projectzombie.menu.gui.Alignment; import projectzombie.menu.gui.Alignment;
import projectzombie.settings.Settings; import projectzombie.settings.Settings;
import gl_engine.vec.Vec2d;
public class ButtonSetting extends ButtonBasic public class ButtonSetting extends ButtonBasic
{ {

View File

@ -1,7 +1,7 @@
package projectzombie.menu.gui.components; package projectzombie.menu.gui.components;
import projectzombie.menu.gui.Label;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import projectzombie.menu.gui.Label;
public class LabelMain extends Label public class LabelMain extends Label
{ {

View File

@ -1,7 +1,7 @@
package projectzombie.menu.gui.components; package projectzombie.menu.gui.components;
import projectzombie.menu.gui.Label;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import projectzombie.menu.gui.Label;
public class LabelPause extends Label public class LabelPause extends Label
{ {

View File

@ -1,7 +1,7 @@
package projectzombie.menu.gui.components; package projectzombie.menu.gui.components;
import projectzombie.menu.gui.Overlay;
import gl_engine.vec.Vec4d; import gl_engine.vec.Vec4d;
import projectzombie.menu.gui.Overlay;
public class OverlayBackground extends Overlay public class OverlayBackground extends Overlay
{ {

View File

@ -1,29 +1,83 @@
package projectzombie.model; package projectzombie.model;
import static org.lwjgl.opengl.GL11.GL_FLOAT;
import static org.lwjgl.opengl.GL15.GL_ARRAY_BUFFER;
import static org.lwjgl.opengl.GL15.GL_STATIC_DRAW;
import static org.lwjgl.opengl.GL15.glBindBuffer;
import static org.lwjgl.opengl.GL15.glBufferData;
import static org.lwjgl.opengl.GL15.glGenBuffers;
import static org.lwjgl.opengl.GL20.glEnableVertexAttribArray;
import static org.lwjgl.opengl.GL20.glVertexAttribPointer;
import static org.lwjgl.opengl.GL30.glBindVertexArray;
import static org.lwjgl.opengl.GL30.glGenVertexArrays;
import org.lwjgl.opengl.GL33;
import gl_engine.MathHelpers; import gl_engine.MathHelpers;
import gl_engine.texture.TextureRef3D; import gl_engine.texture.TextureRef3D;
import static org.lwjgl.opengl.GL33.*;
import org.lwjgl.opengl.GL33;
public abstract class Model public abstract class Model
{ {
int vao, size; int vao, vbo;
boolean loaded = false; boolean loaded = false;
private static final int SIZE = 9; public static final int SIZE = 14;
private float[] verticies;
public int getSize() {
return size;
}
// px, py, pz, tx, ty // px, py, pz, tx, ty
protected abstract float[] getVerticies(); public abstract float[] getVerticies();
protected abstract TextureRef3D[] getTextures(); public abstract TextureRef3D[] getTextures();
public abstract double getHeight();
public abstract int getSize();
public float[] getLoadedVerticies() { private TextureRef3D tex;
return verticies;
private void generate()
{
float[] verticies = this.getVerticies();
TextureRef3D[] refs = this.getTextures();
if(refs.length != 0) {
tex = refs[0];
}
if(verticies.length % SIZE != 0 || refs.length * 3 != verticies.length / SIZE) {
System.err.println("Invalid model");
System.exit(1);
return;
}
int size = verticies.length/SIZE;
double k = 0.001;
for(int i=0;i<size;i++) {
TextureRef3D ref = refs[i / 3];
verticies[i*SIZE + 3] = (float)MathHelpers.map(verticies[i*SIZE + 3], 0-k, 1+k, ref.sx, ref.ex);
verticies[i*SIZE + 4] = (float)MathHelpers.map(verticies[i*SIZE + 4], 0-k, 1+k, ref.sy, ref.ey);
verticies[i*SIZE + 5] = ref.z;
}
vao = glGenVertexArrays();
glBindVertexArray(vao);
vbo = glGenBuffers();
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, verticies, GL_STATIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, false, Float.BYTES * SIZE, 0);
glEnableVertexAttribArray(0);
glVertexAttribPointer(1, 3, GL_FLOAT, false, Float.BYTES * SIZE, Float.BYTES * 3);
glEnableVertexAttribArray(1);
glVertexAttribPointer(2, 2, GL_FLOAT, false, Float.BYTES * SIZE, Float.BYTES * 6);
glEnableVertexAttribArray(2);
glVertexAttribPointer(3, 3, GL_FLOAT, false, Float.BYTES * SIZE, Float.BYTES * 8);
glEnableVertexAttribArray(3);
glVertexAttribPointer(4, 3, GL_FLOAT, false, Float.BYTES * SIZE, Float.BYTES * 11);
glEnableVertexAttribArray(4);
loaded = true;
} }
public void bind() public void bind()
@ -32,48 +86,31 @@ public abstract class Model
glBindVertexArray(vao); glBindVertexArray(vao);
} }
else else {
{ generate();
verticies = this.getVerticies();
TextureRef3D[] refs = this.getTextures();
if(verticies.length % SIZE != 0 || refs.length * 3 != verticies.length / SIZE) {
System.err.println("Invalid model");
System.exit(1);
return;
}
size = verticies.length/SIZE;
double k = 0.001;
for(int i=0;i<size;i++) {
TextureRef3D ref = refs[i / 3];
verticies[i*SIZE + 3] = (float)MathHelpers.map(verticies[i*SIZE + 3], 0-k, 1+k, ref.sx, ref.ex);
verticies[i*SIZE + 4] = (float)MathHelpers.map(verticies[i*SIZE + 4], 0-k, 1+k, ref.sy, ref.ey);
verticies[i*SIZE + 5] = ref.z;
}
vao = glGenVertexArrays();
glBindVertexArray(vao);
int vbo = glGenBuffers();
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, verticies, GL_STATIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, false, Float.BYTES * SIZE, 0);
glEnableVertexAttribArray(0);
glVertexAttribPointer(1, 3, GL_FLOAT, false, Float.BYTES * SIZE, Float.BYTES * 3);
glEnableVertexAttribArray(1);
glVertexAttribPointer(2, 3, GL_FLOAT, false, Float.BYTES * SIZE, Float.BYTES * 6);
glEnableVertexAttribArray(2);
loaded = true;
} }
} }
public void texCoord(double x, double y)
{
if(!loaded) {
generate();
}
double k = 0.001;
x = MathHelpers.map(x, 0, 1, tex.sx + k, tex.ex - k);
y = MathHelpers.map(y, 0, 1, tex.sy + k, tex.ey - k);
GL33.glTexCoord2d(x, y);
}
public void render() { public void render() {
GL33.glDrawArrays(GL33.GL_TRIANGLES, 0, getSize()); GL33.glDrawArrays(GL33.GL_TRIANGLES, 0, getSize());
} }
public void free()
{
GL33.glDeleteVertexArrays(vao);
GL33.glDeleteBuffers(vbo);
}
} }

View File

@ -0,0 +1,36 @@
package projectzombie.model;
import gl_engine.texture.TextureRef3D;
public class ModelChunk extends Model
{
private int size;
private float[] verticies;
private TextureRef3D[] textures;
public ModelChunk(float[] verticies, TextureRef3D[] textures, int size) {
this.verticies = verticies;
this.textures = textures;
this.size = size;
}
@Override
public float[] getVerticies() {
return verticies;
}
@Override
public TextureRef3D[] getTextures() {
return textures;
}
@Override
public double getHeight() {
return 1;
}
@Override
public int getSize() {
return size;
}
}

View File

@ -5,12 +5,12 @@ import gl_engine.texture.TextureRef3D;
public class ModelEmpty extends Model public class ModelEmpty extends Model
{ {
@Override @Override
protected TextureRef3D[] getTextures() { public TextureRef3D[] getTextures() {
return new TextureRef3D[0]; return new TextureRef3D[0];
} }
@Override @Override
protected float[] getVerticies() { public float[] getVerticies() {
return new float[0]; return new float[0];
} }
@ -26,7 +26,7 @@ public class ModelEmpty extends Model
public void render() {} public void render() {}
@Override @Override
public float[] getLoadedVerticies() { public double getHeight() {
return new float[0]; return 0;
} }
} }

View File

@ -1,43 +1,74 @@
package projectzombie.model; package projectzombie.model;
import gl_engine.texture.TextureRef3D; import gl_engine.texture.TextureRef3D;
import gl_engine.vec.Vec2d;
public class ModelGui extends Model public class ModelGui extends Model
{ {
private int animationSize; private int animationSize;
private int animationSpeed; private int animationSpeed;
private double height;
private TextureRef3D ref; private TextureRef3D ref;
private Vec2d size;
public ModelGui(TextureRef3D ref, int animationSize, int animationSpeed) public ModelGui(TextureRef3D ref, Vec2d size, int animationSize, int animationSpeed)
{ {
this.ref = ref; this.ref = ref;
this.size = size;
this.animationSize = animationSize; this.animationSize = animationSize;
this.animationSpeed = animationSpeed; this.animationSpeed = animationSpeed;
} }
public ModelGui(TextureRef3D ref) { public ModelGui(TextureRef3D tex, int animationSize, int animationSpeed) {
this.ref = ref; this(tex, new Vec2d(1, 1), animationSize, animationSpeed);
}
public ModelGui(TextureRef3D tex, Vec2d size) {
this(tex, size, 1, 1);
}
public ModelGui(TextureRef3D tex) {
this(tex, new Vec2d(1, 1), 1, 1);
} }
@Override @Override
protected float[] getVerticies() public int getSize() {
return 6;
}
@Override
public float[] getVerticies()
{ {
float x = (float)size.x;
float y = (float)size.y;
int asi = animationSize; int asi = animationSize;
int asp = animationSpeed; int asp = animationSpeed;
height = y;
return new float[] { return new float[] {
0, 0, 0, 0, 0, 0, asi, asp, 0, 0, 0, 0, 0, 0, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 0x11,
1, 0, 0, 1, 0, 0, asi, asp, 0, x, 0, 0, 1, 0, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 0x11,
1, 1, 0, 1, 1, 0, asi, asp, 0, x, y, 0, 1, 1, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 0x11,
1, 1, 0, 1, 1, 0, asi, asp, 0, x, y, 0, 1, 1, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 0x11,
0, 1, 0, 0, 1, 0, asi, asp, 0, 0, y, 0, 0, 1, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 0x11,
0, 0, 0, 0, 0, 0, asi, asp, 0, 0, 0, 0, 0, 0, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 0x11,
}; };
} }
@Override @Override
protected TextureRef3D[] getTextures() { public TextureRef3D[] getTextures()
return new TextureRef3D[] {ref, ref}; {
return new TextureRef3D[] {
ref, ref
};
} }
}
@Override
public double getHeight() {
return height;
}
}

View File

@ -0,0 +1,42 @@
package projectzombie.model;
import gl_engine.texture.TextureRef3D;
import gl_engine.vec.Vec2d;
import projectzombie.init.Models;
public class ModelItem
{
private Model gui, item;
public ModelItem(TextureRef3D tex, int animationSize, int animationSpeed)
{
this.gui = new ModelGui(tex, animationSize, animationSpeed);
this.item = new ModelVertical(tex, new Vec2d(0.5, 0.5), animationSize, animationSpeed);
}
private ModelItem() {
}
public static ModelItem createEmpty()
{
ModelItem model = new ModelItem();
model.gui = Models.EMPTY;
model.item = Models.EMPTY;
return model;
}
public ModelItem(TextureRef3D tex) {
this(tex, 1, 1);
}
public Model getItemModel() {
return this.item;
}
public Model getGuiModel() {
return this.gui;
}
}

View File

@ -1,17 +1,16 @@
package projectzombie.model; package projectzombie.model;
import gl_engine.texture.TextureRef3D; import gl_engine.texture.TextureRef3D;
import gl_engine.vec.Vec2d;
public class ModelTile extends Model public class ModelTile extends Model
{ {
private int animationSize; private int animationSize;
private int animationSpeed; private int animationSpeed;
private TextureRef3D tex; private TextureRef3D ref;
public ModelTile(TextureRef3D tex, int animationSize, int animationSpeed) public ModelTile(TextureRef3D ref, int animationSize, int animationSpeed)
{ {
this.tex = tex; this.ref = ref;
this.animationSize = animationSize; this.animationSize = animationSize;
this.animationSpeed = animationSpeed; this.animationSpeed = animationSpeed;
} }
@ -21,27 +20,37 @@ public class ModelTile extends Model
} }
@Override @Override
protected float[] getVerticies() public int getSize() {
return 6;
}
@Override
public float[] getVerticies()
{ {
int asi = animationSize; int asi = animationSize;
int asp = animationSpeed; int asp = animationSpeed;
return new float[] { return new float[] {
1, 0, 1, 1, 1, 0, asi, asp, 0, 0.5f, 0, 0.5f, 1, 1, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 0,
1, 0, 0, 1, 0, 0, asi, asp, 0, 0.5f, 0, -0.5f, 1, 0, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 0,
0, 0, 0, 0, 0, 0, asi, asp, 0, -0.5f, 0, -0.5f, 0, 0, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 0,
0, 0, 0, 0, 0, 0, asi, asp, 0, -0.5f, 0, -0.5f, 0, 0, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 0,
0, 0, 1, 0, 1, 0, asi, asp, 0, -0.5f, 0, 0.5f, 0, 1, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 0,
1, 0, 1, 1, 1, 0, asi, asp, 0, 0.5f, 0, 0.5f, 1, 1, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 0,
}; };
} }
@Override @Override
protected TextureRef3D[] getTextures() public TextureRef3D[] getTextures()
{ {
return new TextureRef3D[] { return new TextureRef3D[] {
tex, tex ref, ref
}; };
} }
@Override
public double getHeight() {
return 1;
}
} }

View File

@ -7,12 +7,13 @@ public class ModelVertical extends Model
{ {
private int animationSize; private int animationSize;
private int animationSpeed; private int animationSpeed;
private TextureRef3D tex; private double height;
private TextureRef3D ref;
private Vec2d size; private Vec2d size;
public ModelVertical(TextureRef3D tex, Vec2d size, int animationSize, int animationSpeed) public ModelVertical(TextureRef3D ref, Vec2d size, int animationSize, int animationSpeed)
{ {
this.tex = tex; this.ref = ref;
this.size = size; this.size = size;
this.animationSize = animationSize; this.animationSize = animationSize;
@ -32,7 +33,12 @@ public class ModelVertical extends Model
} }
@Override @Override
protected float[] getVerticies() public int getSize() {
return 6;
}
@Override
public float[] getVerticies()
{ {
float x = (float)size.x / 2; float x = (float)size.x / 2;
float y = (float)size.y; float y = (float)size.y;
@ -40,22 +46,29 @@ public class ModelVertical extends Model
int asi = animationSize; int asi = animationSize;
int asp = animationSpeed; int asp = animationSpeed;
height = y;
return new float[] { return new float[] {
0.5f-x, 0, 0.5f, 0, 0, 0, asi, asp, 1, -x, 0, 0, 0, 0, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 1,
0.5f+x, 0, 0.5f, 1, 0, 0, asi, asp, 1, x, 0, 0, 1, 0, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 1,
0.5f+x, y, 0.5f, 1, 1, 0, asi, asp, 1, x, y, 0, 1, 1, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 1,
0.5f+x, y, 0.5f, 1, 1, 0, asi, asp, 1, x, y, 0, 1, 1, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 1,
0.5f-x, y, 0.5f, 0, 1, 0, asi, asp, 1, -x, y, 0, 0, 1, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 1,
0.5f-x, 0, 0.5f, 0, 0, 0, asi, asp, 1, -x, 0, 0, 0, 0, 0, ref.sy, ref.ey, 0, 0, 0, asi, asp, 1,
}; };
} }
@Override @Override
protected TextureRef3D[] getTextures() public TextureRef3D[] getTextures()
{ {
return new TextureRef3D[] { return new TextureRef3D[] {
tex, tex ref, ref
}; };
} }
@Override
public double getHeight() {
return height;
}
} }

View File

@ -1,8 +1,5 @@
package projectzombie.resources; package projectzombie.resources;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
@ -28,7 +25,7 @@ public class Resource
} }
public void load() { public void load() {
data = ResourceLoader.loadResource(path); data = ResourceLoader.loadResource("/resources" + path);
} }
public byte[] getBytes() { public byte[] getBytes() {

View File

@ -22,7 +22,7 @@ public class Settings implements IBdfClassManager
if(nl.get("render_distance").getType() == BdfTypes.INTEGER) { if(nl.get("render_distance").getType() == BdfTypes.INTEGER) {
Chunk.RENDER_DISTANCE = nl.get("render_distance").getInteger(); Chunk.RENDER_DISTANCE = nl.get("render_distance").getInteger();
} else { } else {
Chunk.RENDER_DISTANCE = 1; Chunk.RENDER_DISTANCE = 2;
} }
if(nl.get("show_fps").getType() == BdfTypes.BOOLEAN) { if(nl.get("show_fps").getType() == BdfTypes.BOOLEAN) {
@ -43,22 +43,7 @@ public class Settings implements IBdfClassManager
DisplayRenderUI.guiScale = 2; DisplayRenderUI.guiScale = 2;
} }
switch(nl.get("particles").getByte()) { EntityParticle.DISABLED = nl.get("particles").getBoolean();
case 0:
EntityParticle.MODE = SettingQuality.FANCY;
break;
case 1:
EntityParticle.MODE = SettingQuality.FAST;
break;
case 2:
EntityParticle.MODE = SettingQuality.OFF;
break;
default:
EntityParticle.MODE = SettingQuality.FANCY;
break;
}
} }
@Override @Override
@ -68,10 +53,7 @@ public class Settings implements IBdfClassManager
nl.set("show_fps", BdfObject.withBoolean(DisplayRenderUI.showFPS)); nl.set("show_fps", BdfObject.withBoolean(DisplayRenderUI.showFPS));
nl.set("show_pos", BdfObject.withBoolean(DisplayRenderUI.showPos)); nl.set("show_pos", BdfObject.withBoolean(DisplayRenderUI.showPos));
nl.set("gui_scale", BdfObject.withInteger(DisplayRenderUI.guiScale)); nl.set("gui_scale", BdfObject.withInteger(DisplayRenderUI.guiScale));
nl.set("particles", BdfObject.withByte((byte)( nl.set("particles", BdfObject.withBoolean(EntityParticle.DISABLED));
EntityParticle.MODE == SettingQuality.FANCY ? 0 :
EntityParticle.MODE == SettingQuality.FAST ? 1 :
EntityParticle.MODE == SettingQuality.OFF ? 2 : 0)));
} }
public static void init() { public static void init() {

View File

@ -1,13 +1,11 @@
package projectzombie.text; package projectzombie.text;
import gl_engine.vec.Vec2d;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.init.Models;
import projectzombie.init.Resources; import projectzombie.init.Resources;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.model.ModelGui; import projectzombie.model.ModelGui;
import projectzombie.util.gl.GlHelpers; import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.texture.TextureReference;
import gl_engine.vec.Vec2d;
public class Text public class Text
{ {
@ -98,7 +96,7 @@ public class Text
int w = Main.window.getWidth(); int w = Main.window.getWidth();
int h = Main.window.getHeight(); int h = Main.window.getHeight();
double aspect_ratio = ((double)w) / ((double)h); double aspect_ratio = ((double)w) / ((double)h);
GlHelpers.translate2(0 - (text.length() * size.x / 2 / aspect_ratio), 0); //GlHelpers.translate2(0 - (text.length() * size.x / 2 / aspect_ratio), 0);
Text.render(text, size); Text.render(text, size);
} }
@ -110,9 +108,6 @@ public class Text
double sx = size.x; double sx = size.x;
double sy = size.y; double sy = size.y;
// Begin quads
GlHelpers.begin();
// Loop over the bytes // Loop over the bytes
for(int i=0;i<text_b.length;i++) for(int i=0;i<text_b.length;i++)
{ {
@ -205,8 +200,5 @@ public class Text
l.bind(); l.bind();
} }
// Stop drawing quads
GlHelpers.end();
} }
} }

View File

@ -1,11 +1,9 @@
package projectzombie.tiles; package projectzombie.tiles;
import projectzombie.display.Camera; import gl_engine.vec.Vec2i;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;

View File

@ -2,6 +2,9 @@ package projectzombie.tiles;
import java.util.Random; import java.util.Random;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import mainloop.task.IMainloopTask; import mainloop.task.IMainloopTask;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
@ -10,10 +13,7 @@ import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.LayerGenerators; import projectzombie.init.LayerGenerators;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import gl_engine.MathHelpers;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.ChunkEventHandler; import projectzombie.world.chunk.ChunkEventHandler;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
import projectzombie.world.layer.layergen.LayerGenBossArena; import projectzombie.world.layer.layergen.LayerGenBossArena;

View File

@ -2,6 +2,8 @@ package projectzombie.tiles;
import java.util.Random; import java.util.Random;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.entity.EntityItem; import projectzombie.entity.EntityItem;
@ -11,8 +13,6 @@ import projectzombie.model.Model;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import projectzombie.util.math.random.RandomHelpers; import projectzombie.util.math.random.RandomHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;

View File

@ -1,10 +1,9 @@
package projectzombie.tiles; package projectzombie.tiles;
import gl_engine.vec.Vec2i;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
public class TileLadder extends Tile public class TileLadder extends Tile
{ {

View File

@ -1,5 +1,6 @@
package projectzombie.tiles; package projectzombie.tiles;
import gl_engine.vec.Vec2i;
import mainloop.task.IMainloopTask; import mainloop.task.IMainloopTask;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
@ -8,8 +9,6 @@ import projectzombie.init.Models;
import projectzombie.mainloop.MainloopEventHandler; import projectzombie.mainloop.MainloopEventHandler;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.ChunkEventHandler; import projectzombie.world.chunk.ChunkEventHandler;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;

View File

@ -1,5 +1,7 @@
package projectzombie.tiles; package projectzombie.tiles;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.entity.EntityItem; import projectzombie.entity.EntityItem;
import projectzombie.init.Items; import projectzombie.init.Items;
@ -7,8 +9,6 @@ import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
public class TileLantern extends Tile public class TileLantern extends Tile

View File

@ -2,15 +2,13 @@ package projectzombie.tiles;
import java.util.Random; import java.util.Random;
import projectzombie.display.Camera; import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.entity.particle.ParticleLava; import projectzombie.entity.particle.ParticleLava;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;

View File

@ -2,15 +2,13 @@ package projectzombie.tiles;
import java.util.Random; import java.util.Random;
import projectzombie.display.Camera; import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.entity.particle.ParticleSmoke; import projectzombie.entity.particle.ParticleSmoke;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import projectzombie.util.math.random.RandomHelpers; import projectzombie.util.math.random.RandomHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;

View File

@ -1,5 +1,6 @@
package projectzombie.tiles; package projectzombie.tiles;
import gl_engine.vec.Vec2i;
import mainloop.task.IMainloopTask; import mainloop.task.IMainloopTask;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
@ -8,7 +9,6 @@ import projectzombie.init.Models;
import projectzombie.mainloop.MainloopEventHandler; import projectzombie.mainloop.MainloopEventHandler;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.ChunkEventHandler; import projectzombie.world.chunk.ChunkEventHandler;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;

View File

@ -1,5 +1,7 @@
package projectzombie.tiles; package projectzombie.tiles;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.entity.EntityItem; import projectzombie.entity.EntityItem;
import projectzombie.init.Items; import projectzombie.init.Items;
@ -7,8 +9,6 @@ import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.math.ItemStack; import projectzombie.util.math.ItemStack;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
public class TileRock extends Tile implements TileBulletBreakable public class TileRock extends Tile implements TileBulletBreakable

View File

@ -3,7 +3,6 @@ package projectzombie.tiles;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
public class TileTree extends Tile implements TileBulletBreakable public class TileTree extends Tile implements TileBulletBreakable
{ {

View File

@ -1,14 +1,11 @@
package projectzombie.tiles; package projectzombie.tiles;
import projectzombie.display.Camera; import gl_engine.vec.Vec2i;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.entity.particle.ParticleWater; import projectzombie.entity.particle.ParticleWater;
import projectzombie.init.Models; import projectzombie.init.Models;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;

View File

@ -24,30 +24,13 @@ import projectzombie.display.DisplayRenderUI;
public class GlHelpers public class GlHelpers
{ {
private static int MATRIX_COUNT = 0;
public static double getAspectRatio() { public static double getAspectRatio() {
int w = Main.window.getWidth(); int w = Main.window.getWidth();
int h = Main.window.getHeight(); int h = Main.window.getHeight();
double aspect_ratio = ((double)w) / ((double)h); double aspect_ratio = ((double)w) / ((double)h);
return aspect_ratio; return aspect_ratio;
} }
public static void checkMatrixCount() {
if(MATRIX_COUNT != 0) {
MATRIX_COUNT = 0;
System.err.println("Matrix count is unbalanced!");
}
}
public static void begin() {
glBegin(GL_QUADS);
}
public static void end() {
glEnd();
}
public static int getScale() { public static int getScale() {
if(DisplayRenderUI.guiScale == 1) return 6; if(DisplayRenderUI.guiScale == 1) return 6;
if(DisplayRenderUI.guiScale == 2) return 10; if(DisplayRenderUI.guiScale == 2) return 10;
@ -55,87 +38,4 @@ public class GlHelpers
if(DisplayRenderUI.guiScale == 4) return 18; if(DisplayRenderUI.guiScale == 4) return 18;
return 0; return 0;
} }
public static void vertex3(double x, double y, double z) {
int s = getScale();
glVertex3d(x/s, y/s, z/s);
}
public static void vertex2(double x, double y) {
double aspect_ratio = getAspectRatio();
int s = getScale();
glVertex2d(x/s/aspect_ratio, y/s);
}
public static void color3(double r, double g, double b) {
glColor3d(r, g, b);
}
public static void color4(double r, double g, double b, double a) {
glColor4d(r, g, b, a);
}
public static void rotate(double a, double x, double y, double z) {
glRotated(a, x, y, z);
}
public static void translate3(double x, double y, double z) {
int s = getScale();
glTranslated(x/s, y/s, z/s);
}
public static void translate2(double x, double y) {
int s = getScale();
glTranslated(x/s, y/s, 0);
}
public static void disableCullFace() {
glDisable(GL_CULL_FACE);
}
public static void enableCullFace() {
glEnable(GL_CULL_FACE);
}
public static void disableDepthTest() {
glDisable(GL_DEPTH_TEST);
}
public static void enableDepthTest() {
glEnable(GL_DEPTH_TEST);
}
public static void disableTexture2d() {
glDisable(GL_TEXTURE_2D);
}
public static void enableTexture2d() {
glEnable(GL_TEXTURE_2D);
}
public static void disableAlpha() {
glDisable(GL_ALPHA);
}
public static void enableAlpha() {
glEnable(GL_ALPHA);
}
public static void disableBlend() {
glDisable(GL_BLEND);
}
public static void enableBlend() {
glEnable(GL_BLEND);
}
public static void popMatrix() {
glPopMatrix();
MATRIX_COUNT += 1;
}
public static void pushMatrix() {
glPushMatrix();
MATRIX_COUNT -= 1;
}
} }

View File

@ -1,41 +0,0 @@
package projectzombie.util.gl;
import projectzombie.display.Camera;
import projectzombie.util.gl.texture.TextureReference;
import gl_engine.vec.Vec2d;
public class VerticalRender
{
public static void render(Vec2d pos, Camera camera, TextureReference tex, Vec2d size)
{
if(tex == null) {
return;
}
double w = size.x/2.0;
double h = size.y;
// Push the matrix
GlHelpers.pushMatrix();
// Get the angle between the camera and the tile
double angle_r = camera.angle;
// Make the tile upright
GlHelpers.translate3(0.5, 0.5, 0);
GlHelpers.translate3(pos.x, pos.y, 0);
GlHelpers.rotate(-angle_r, 0, 0, 1);
GlHelpers.translate3(-0.5, -0.5, 0);
// Render the tile
GlHelpers.begin();
tex.texCoord(0, 1); GlHelpers.vertex3(0.5-w, 0.5, 0);
tex.texCoord(1, 1); GlHelpers.vertex3(0.5+w, 0.5, 0);
tex.texCoord(1, 0); GlHelpers.vertex3(0.5+w, 0.5, h);
tex.texCoord(0, 0); GlHelpers.vertex3(0.5-w, 0.5, h);
GlHelpers.end();
// Pop the matrix
GlHelpers.popMatrix();
}
}

View File

@ -1,8 +1,8 @@
package projectzombie.util.math; package projectzombie.util.math;
import gl_engine.vec.Vec3d;
import projectzombie.init.Tiles; import projectzombie.init.Tiles;
import projectzombie.tiles.Tile; import projectzombie.tiles.Tile;
import gl_engine.vec.Vec3d;
public class TileState public class TileState
{ {

View File

@ -1,8 +1,8 @@
package projectzombie.util.math.astar; package projectzombie.util.math.astar;
import gl_engine.MathHelpers; import gl_engine.MathHelpers;
import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2i; import gl_engine.vec.Vec2i;
import projectzombie.util.math.TileState;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
public class AStarSearcher implements AStarSearch public class AStarSearcher implements AStarSearch

View File

@ -3,32 +3,32 @@ package projectzombie.world.chunk;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Random; import java.util.Random;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL33; import org.lwjgl.opengl.GL33;
import bdf.classes.IBdfClassManager; import bdf.classes.IBdfClassManager;
import bdf.types.BdfArray; import bdf.types.BdfArray;
import bdf.types.BdfNamedList; import bdf.types.BdfNamedList;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import gl_engine.MathHelpers;
import gl_engine.matrix.Matrix4;
import gl_engine.range.Range2i;
import gl_engine.texture.TextureRef3D;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.display.Camera; import projectzombie.display.Camera;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.entity.EntityAlive; import projectzombie.entity.EntityAlive;
import projectzombie.entity.EntityHeight;
import projectzombie.entity.EntityKillWithParticles; import projectzombie.entity.EntityKillWithParticles;
import projectzombie.entity.particle.ParticleBreak; import projectzombie.entity.particle.ParticleBreak;
import projectzombie.init.Models;
import projectzombie.init.Tiles; import projectzombie.init.Tiles;
import projectzombie.model.Model; import projectzombie.model.Model;
import projectzombie.model.ModelChunk;
import projectzombie.tiles.Tile; import projectzombie.tiles.Tile;
import projectzombie.util.gl.GlHelpers;
import gl_engine.MathHelpers;
import gl_engine.matrix.Matrix4;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import projectzombie.util.math.random.RandomHelpers; import projectzombie.util.math.random.RandomHelpers;
import gl_engine.range.Range2i;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
public class Chunk implements IBdfClassManager public class Chunk implements IBdfClassManager
@ -38,8 +38,8 @@ public class Chunk implements IBdfClassManager
public static final int CHUNK_INDEX = CHUNK_SIZE.mx * CHUNK_SIZE.my; public static final int CHUNK_INDEX = CHUNK_SIZE.mx * CHUNK_SIZE.my;
public static final Random rand = new Random(); public static final Random rand = new Random();
public static int SIMULATION_DISTANCE = 5; public static int SIMULATION_DISTANCE = 10;
public static int RENDER_DISTANCE = 1; public static int RENDER_DISTANCE = 2;
public static boolean SHOW_CHUNKS = false; public static boolean SHOW_CHUNKS = false;
@ -55,6 +55,9 @@ public class Chunk implements IBdfClassManager
public Vec2i c_pos; public Vec2i c_pos;
private boolean dirty; private boolean dirty;
private boolean light_dirty; private boolean light_dirty;
private boolean render_dirty;
private Model model;
public boolean isDirty() public boolean isDirty()
{ {
@ -69,6 +72,12 @@ public class Chunk implements IBdfClassManager
dirty = false; dirty = false;
} }
private void setDirty() {
this.light_dirty = true;
this.render_dirty = true;
this.dirty = true;
}
@Override @Override
public void BdfClassLoad(BdfObject bdf) public void BdfClassLoad(BdfObject bdf)
{ {
@ -138,9 +147,8 @@ public class Chunk implements IBdfClassManager
{ {
this.layer = layer; this.layer = layer;
this.c_pos = c_pos; this.c_pos = c_pos;
this.dirty = true;
this.light_dirty = true;
setDirty();
BdfClassLoad(bdf); BdfClassLoad(bdf);
} }
@ -170,25 +178,116 @@ public class Chunk implements IBdfClassManager
public void render(Camera camera) public void render(Camera camera)
{ {
for(int i=0;i<256;i++) if(this.render_dirty)
{ {
int x = i / 16; this.render_dirty = false;
int y = i % 16; int verticies_size = 0;
TileState tile_f = getFrontTile(i); for(int i=0;i<CHUNK_INDEX;i++) {
TileState tile_b = getBackTile(i); TileState bt = getBackTile(i);
TileState ft = getFrontTile(i);
verticies_size += bt.tile.getModel(bt.meta).getSize();
verticies_size += ft.tile.getModel(ft.meta).getSize();
}
Model model_f = tile_f.tile.getModel(tile_f.meta); float[] verticies = new float[verticies_size * Model.SIZE];
Model model_b = tile_b.tile.getModel(tile_b.meta); TextureRef3D[] textures = new TextureRef3D[verticies_size / 3];
int upto = 0;
Matrix4 matrix = Matrix4.translate(x + c_pos.x * 16, 0, y + c_pos.y * 16); for(int i=0;i<CHUNK_INDEX;i++)
{
TileState bt = getBackTile(i);
TileState ft = getFrontTile(i);
Model bm = bt.tile.getModel(bt.meta);
Model fm = ft.tile.getModel(ft.meta);
float[] bv = bm.getVerticies();
float[] fv = fm.getVerticies();
TextureRef3D[] btex = bm.getTextures();
TextureRef3D[] ftex = fm.getTextures();
Vec2i pos = Vec2i.fromId(CHUNK_SIZE, i);
for(int v=0;v<fm.getSize()/3;v++) {
textures[upto / 3 + v] = ftex[v];
}
for(int v=0;v<fm.getSize();v++)
{
for(int i2=0;i2<Model.SIZE;i2++)
{
if(i2 == 8) {
verticies[upto * Model.SIZE + i2 ] = fv[v * Model.SIZE + i2 ] + pos.x;
}
else if(i2 == 10) {
verticies[upto * Model.SIZE + i2 ] = fv[v * Model.SIZE + i2 ] + pos.y;
}
else {
verticies[upto * Model.SIZE + i2 ] = fv[v * Model.SIZE + i2 ];
}
}
upto += 1;
}
for(int v=0;v<bm.getSize()/3;v++) {
textures[upto / 3 + v] = btex[v];
}
for(int v=0;v<bm.getSize();v++)
{
for(int i2=0;i2<Model.SIZE;i2++)
{
if(i2 == 8) {
verticies[upto * Model.SIZE + i2 ] = bv[v * Model.SIZE + i2 ] + pos.x;
}
else if(i2 == 10) {
verticies[upto * Model.SIZE + i2 ] = bv[v * Model.SIZE + i2 ] + pos.y;
}
else {
verticies[upto * Model.SIZE + i2 ] = bv[v * Model.SIZE + i2 ];
}
}
upto += 1;
}
}
if(model != null) {
model.free();
}
model = new ModelChunk(verticies, textures, verticies_size);
}
{
Matrix4 matrix = Matrix4.translate(c_pos.x * 16, 0, c_pos.y * 16);
GL33.glUniformMatrix4fv(Main.window.glsl_model, true, matrix.getArray()); GL33.glUniformMatrix4fv(Main.window.glsl_model, true, matrix.getArray());
model_f.bind(); model.bind();
model_f.render(); model.render();
}
for(Entity e : entities)
{
Model model = e.getModel();
double h = 0;
model_b.bind(); if(e instanceof EntityHeight) {
model_b.render(); h = ((EntityHeight)e).getHeight();
}
Matrix4 matrix = Matrix4.translate(e.pos.x - 0.5, h, e.pos.y - 0.5);
GL33.glUniformMatrix4fv(Main.window.glsl_model, true, matrix.getArray());
model.bind();
model.render();
} }
} }
@ -261,8 +360,8 @@ public class Chunk implements IBdfClassManager
// Set the back tile // Set the back tile
this.tiles_back[id] = tile.tile; this.tiles_back[id] = tile.tile;
this.tiles_back_meta[id] = tile.meta; this.tiles_back_meta[id] = tile.meta;
this.light_dirty = true;
this.dirty = true; setDirty();
} }
public void setFrontTile(TileState tile, Vec2i pos) public void setFrontTile(TileState tile, Vec2i pos)
@ -281,8 +380,8 @@ public class Chunk implements IBdfClassManager
// Set the front tile // Set the front tile
this.tiles_front[id] = tile.tile; this.tiles_front[id] = tile.tile;
this.tiles_front_meta[id] = tile.meta; this.tiles_front_meta[id] = tile.meta;
this.light_dirty = true;
this.dirty = true; setDirty();
} }
public TileState getBackTile(Vec2i pos) public TileState getBackTile(Vec2i pos)
@ -343,8 +442,7 @@ public class Chunk implements IBdfClassManager
public void breakBackTile(Vec2i pos) public void breakBackTile(Vec2i pos)
{ {
TileState ts = getBackTile(pos); TileState ts = getBackTile(pos);
this.light_dirty = true; setDirty();
this.dirty = true;
if(!ts.tile.unbreakable) { if(!ts.tile.unbreakable) {
setBackTile(layer.layergen.getTileDestroyed(), pos); setBackTile(layer.layergen.getTileDestroyed(), pos);
@ -355,8 +453,7 @@ public class Chunk implements IBdfClassManager
public void breakFrontTile(Vec2i pos) public void breakFrontTile(Vec2i pos)
{ {
TileState ts = getFrontTile(pos); TileState ts = getFrontTile(pos);
this.light_dirty = true; setDirty();
this.dirty = true;
if(!ts.tile.unbreakable) { if(!ts.tile.unbreakable) {
setFrontTile(Tiles.VOID.getDefaultState(), pos); setFrontTile(Tiles.VOID.getDefaultState(), pos);

View File

@ -4,12 +4,12 @@ import java.util.ArrayList;
import java.util.Random; import java.util.Random;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import projectzombie.display.Camera;
import projectzombie.entity.Entity;
import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d; import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i; import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d; import gl_engine.vec.Vec3d;
import projectzombie.display.Camera;
import projectzombie.entity.Entity;
import projectzombie.util.math.TileState;
public class ChunkEmpty extends Chunk public class ChunkEmpty extends Chunk
{ {

View File

@ -1,11 +1,11 @@
package projectzombie.world.chunk; package projectzombie.world.chunk;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2i;
import mainloop.task.IMainloopTask; import mainloop.task.IMainloopTask;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.display.lighting.TileLighting; import projectzombie.display.lighting.TileLighting;
import gl_engine.MathHelpers;
import projectzombie.util.math.map.Map2DElement; import projectzombie.util.math.map.Map2DElement;
import gl_engine.vec.Vec2i;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
public class ChunkEventHandler implements IMainloopTask public class ChunkEventHandler implements IMainloopTask

View File

@ -7,16 +7,16 @@ import bdf.classes.IBdfClassManager;
import bdf.types.BdfArray; import bdf.types.BdfArray;
import bdf.types.BdfNamedList; import bdf.types.BdfNamedList;
import bdf.types.BdfObject; import bdf.types.BdfObject;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.display.Camera; import projectzombie.display.Camera;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.init.LayerGenerators; import projectzombie.init.LayerGenerators;
import gl_engine.MathHelpers;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import projectzombie.util.math.map.Map2D; import projectzombie.util.math.map.Map2D;
import projectzombie.util.math.map.Map2DElement; import projectzombie.util.math.map.Map2DElement;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.layergen.LayerGen; import projectzombie.world.layer.layergen.LayerGen;
@ -48,7 +48,7 @@ public class Layer implements IBdfClassManager
public void render(Camera camera) public void render(Camera camera)
{ {
// Render every chunk in the players render distance // Render every chunk in the players render distance
int r = camera.renderDistance; int r = Chunk.RENDER_DISTANCE;
for(int x=-r;x<=r;x++) { for(int x=-r;x<=r;x++) {
for(int y=-r;y<=r;y++) for(int y=-r;y<=r;y++)
{ {

View File

@ -2,10 +2,10 @@ package projectzombie.world.layer.layergen;
import java.util.Random; import java.util.Random;
import gl_engine.vec.Vec2i;
import projectzombie.util.math.ColorRange; import projectzombie.util.math.ColorRange;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import projectzombie.util.math.map.IMap2D; import projectzombie.util.math.map.IMap2D;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;

View File

@ -2,16 +2,16 @@ package projectzombie.world.layer.layergen;
import java.util.Random; import java.util.Random;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.entity.EntityBoss; import projectzombie.entity.EntityBoss;
import projectzombie.entity.player.EntityPlayer; import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Tiles; import projectzombie.init.Tiles;
import projectzombie.util.math.ColorRange; import projectzombie.util.math.ColorRange;
import gl_engine.MathHelpers;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import projectzombie.util.math.random.RandomHelpers; import projectzombie.util.math.random.RandomHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;
@ -109,7 +109,7 @@ public class LayerGenBossArena extends LayerGen implements LayerGenRememberPlaye
@Override @Override
public void spawnPlayer(EntityPlayer player) { public void spawnPlayer(EntityPlayer player) {
this.player_pos = player.pos.copy(); this.player_pos = player.pos;
player.pos = new Vec2d( player.pos = new Vec2d(
RandomHelpers.randrange(rand, -size + 2, size - 2), RandomHelpers.randrange(rand, -size + 2, size - 2),
RandomHelpers.randrange(rand, -size + 2, size - 2)); RandomHelpers.randrange(rand, -size + 2, size - 2));

View File

@ -2,18 +2,18 @@ package projectzombie.world.layer.layergen;
import java.util.Random; import java.util.Random;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.entity.EntityZombie; import projectzombie.entity.EntityZombie;
import projectzombie.init.Tiles; import projectzombie.init.Tiles;
import projectzombie.util.math.ColorRange; import projectzombie.util.math.ColorRange;
import gl_engine.MathHelpers;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import projectzombie.util.math.random.OpenSimplexNoise; import projectzombie.util.math.random.OpenSimplexNoise;
import projectzombie.util.math.random.RandomHelpers; import projectzombie.util.math.random.RandomHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;

View File

@ -2,6 +2,9 @@ package projectzombie.world.layer.layergen;
import java.util.Random; import java.util.Random;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.Main; import projectzombie.Main;
import projectzombie.entity.Entity; import projectzombie.entity.Entity;
import projectzombie.entity.EntityZombie; import projectzombie.entity.EntityZombie;
@ -11,9 +14,6 @@ import projectzombie.util.math.ColorRange;
import projectzombie.util.math.TileState; import projectzombie.util.math.TileState;
import projectzombie.util.math.random.OpenSimplexNoise; import projectzombie.util.math.random.OpenSimplexNoise;
import projectzombie.util.math.random.RandomHelpers; import projectzombie.util.math.random.RandomHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer; import projectzombie.world.layer.Layer;

Some files were not shown because too many files have changed in this diff Show More