diff --git a/.gitignore b/.gitignore index ae3c172..e29a091 100755 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /bin/ +hs_err_pid* diff --git a/layer.bdf b/layer.bdf index 2154d69..e309617 100644 Binary files a/layer.bdf and b/layer.bdf differ diff --git a/settings.bdf b/settings.bdf deleted file mode 100755 index 77e319e..0000000 Binary files a/settings.bdf and /dev/null differ diff --git a/src/projectzombie/Main.java b/src/projectzombie/Main.java index 2c0a725..184c97b 100755 --- a/src/projectzombie/Main.java +++ b/src/projectzombie/Main.java @@ -2,11 +2,9 @@ package projectzombie; import java.util.Random; -import bdf.file.BdfCompressedFileManager; import mainloop.manager.MainloopManager; import projectzombie.audio.AudioEngine; import projectzombie.audio.AudioSources; -import projectzombie.display.Camera; import projectzombie.display.DisplayStatsEventHandler; import projectzombie.display.DisplayWindow; import projectzombie.display.bossbar.BossBars; @@ -18,7 +16,6 @@ import projectzombie.init.LayerGenerators; import projectzombie.init.Layers; import projectzombie.init.Resources; import projectzombie.init.Sounds; -import projectzombie.init.Models; import projectzombie.init.Tiles; import projectzombie.input.JoystickCallback; import projectzombie.input.KeyCallback; diff --git a/src/projectzombie/audio/AudioObject.java b/src/projectzombie/audio/AudioObject.java index e7e1ffd..fd89462 100755 --- a/src/projectzombie/audio/AudioObject.java +++ b/src/projectzombie/audio/AudioObject.java @@ -20,13 +20,10 @@ import java.nio.ShortBuffer; import org.lwjgl.stb.STBVorbis; import org.lwjgl.system.MemoryStack; -import projectzombie.Main; +import gl_engine.matrix.Matrix4; +import gl_engine.vec.Vec3d; import projectzombie.display.Camera; 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 { @@ -88,8 +85,9 @@ public class AudioObject return; } - // Calculate the rotation - Vec3d vec = Matrix4.multiply(Camera.camera.getMatrix(), pos); + // Calculate the position relative to the player + 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 int source = AudioSources.getSource(); diff --git a/src/projectzombie/display/Camera.java b/src/projectzombie/display/Camera.java index 51bf666..ba7b410 100755 --- a/src/projectzombie/display/Camera.java +++ b/src/projectzombie/display/Camera.java @@ -2,13 +2,11 @@ package projectzombie.display; import gl_engine.matrix.Matrix4; import gl_engine.vec.Vec2d; -import gl_engine.vec.Vec3d; import projectzombie.Main; public class Camera { public double angle = 45; - public int renderDistance = 3; private Matrix4 matrix; public static Camera camera; @@ -19,10 +17,10 @@ public class Camera Vec2d pos = Main.player.pos; angle = Main.player.angle; - identity = Matrix4.multiply(identity, Matrix4.translate(-pos.x, 0, -pos.y)); - identity = Matrix4.multiply(identity, Matrix4.rotate(angle, 0, 1, 0)); - identity = Matrix4.multiply(identity, Matrix4.rotate(-50, 1, 0, 0)); - identity = Matrix4.multiply(identity, Matrix4.translate(0, 0, -12)); + identity = Matrix4.multiply(identity, Matrix4.translate(-pos.x + 0.5, 0, -pos.y + 0.5)); + identity = Matrix4.multiply(identity, Matrix4.rotate(angle + 180, 0, 1, 0)); + identity = Matrix4.multiply(identity, Matrix4.rotate(-45, 1, 0, 0)); + identity = Matrix4.multiply(identity, Matrix4.translate(0, 0, -16)); matrix = identity; } diff --git a/src/projectzombie/display/DisplayRender.java b/src/projectzombie/display/DisplayRender.java index 8a0d583..7e052d4 100755 --- a/src/projectzombie/display/DisplayRender.java +++ b/src/projectzombie/display/DisplayRender.java @@ -2,30 +2,15 @@ package projectzombie.display; 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_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.glLoadMatrixf; -import static org.lwjgl.opengl.GL11.glMatrixMode; import static org.lwjgl.opengl.GL11.glViewport; -import org.lwjgl.opengl.GL; import org.lwjgl.opengl.GL33; -import org.lwjgl.system.MemoryStack; -import gl_engine.graphics.GraphicsShader; import gl_engine.matrix.Matrix4; import projectzombie.Main; -import projectzombie.display.lighting.DynamicLighting; import projectzombie.entity.player.EntityPlayer; -import projectzombie.init.Models; 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; 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_projection, true, projection.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 Main.world.render(camera); player.chunk = Main.world.getLayer().getChunk(player.pos); - Model model = player.getModel(); - Matrix4 matrix = Matrix4.translate(player.pos.x, 0, player.pos.y); - GL33.glUniformMatrix4fv(Main.window.glsl_model, true, matrix.getArray()); - model.bind(); - model.render(); + if(!Main.player.dead) + { + Model model = player.getModel(); + Matrix4 matrix = Matrix4.translate(player.pos.x - 0.5, player.getHeight(), player.pos.y - 0.5); + GL33.glUniformMatrix4fv(Main.window.glsl_model, true, matrix.getArray()); + model.bind(); + model.render(); + } } } // Render the user interface - //DisplayRenderUI.render(); + DisplayRenderUI.render(); } } diff --git a/src/projectzombie/display/DisplayRenderUI.java b/src/projectzombie/display/DisplayRenderUI.java index 841680c..b255b7c 100755 --- a/src/projectzombie/display/DisplayRenderUI.java +++ b/src/projectzombie/display/DisplayRenderUI.java @@ -1,16 +1,5 @@ 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 static boolean showFPS = false; @@ -19,173 +8,9 @@ public class DisplayRenderUI 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 - Main.menu.render();*/ + //Main.menu.render(); } } diff --git a/src/projectzombie/display/DisplayStatsEventHandler.java b/src/projectzombie/display/DisplayStatsEventHandler.java index 769ec4e..b3d3e48 100755 --- a/src/projectzombie/display/DisplayStatsEventHandler.java +++ b/src/projectzombie/display/DisplayStatsEventHandler.java @@ -1,7 +1,7 @@ package projectzombie.display; import mainloop.task.IMainloopTask; -import projectzombie.mainloop.MainloopEventHandler; +import projectzombie.Main; public class DisplayStatsEventHandler implements IMainloopTask { @@ -22,9 +22,11 @@ public class DisplayStatsEventHandler implements IMainloopTask @Override public void MainLoopUpdate() { - // Set the fps from mspf every second - long mspf = MainloopEventHandler.MAINLOOP_EVENT_HANDLER.mspf; - fps = (int)(1000 / mspf); + // Display the fps + Main.window.setTitle("Project Zombie (" + DisplayWindow.fps + " fps)"); + + fps = DisplayWindow.fps; + DisplayWindow.fps = 0; } diff --git a/src/projectzombie/display/DisplayWindow.java b/src/projectzombie/display/DisplayWindow.java index 383f4df..f72990b 100755 --- a/src/projectzombie/display/DisplayWindow.java +++ b/src/projectzombie/display/DisplayWindow.java @@ -1,22 +1,14 @@ 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 org.lwjgl.BufferUtils; import org.lwjgl.glfw.GLFW; -import org.lwjgl.opengl.GL; import org.lwjgl.opengl.GL33; import gl_engine.graphics.GraphicsHelpers; import gl_engine.graphics.GraphicsShader; -import gl_engine.matrix.Matrix4; import mainloop.task.IMainloopTask; -import projectzombie.Main; -import projectzombie.init.Models; import projectzombie.init.Resources; import projectzombie.input.CursorEnterCallback; import projectzombie.input.CursorPosCallback; @@ -26,7 +18,6 @@ import projectzombie.input.KeyCharCallback; import projectzombie.input.MouseButtonCallback; import projectzombie.input.ScrollWheelCallback; import projectzombie.mainloop.MainloopEventHandler; -import projectzombie.util.gl.GlHelpers; public class DisplayWindow implements IMainloopTask { @@ -38,12 +29,15 @@ public class DisplayWindow implements IMainloopTask private boolean fullscreen = true; private boolean mouseVisibility_last = false; + public static int fps = 0; + public GraphicsShader environmentRenderer; public int glsl_model; public int glsl_projection; public int glsl_rotated; public int glsl_camera; + public int glsl_time; public int getWidth() { return this.width; @@ -80,6 +74,8 @@ public class DisplayWindow implements IMainloopTask width = w.get()*4; height = h.get()*4; + //GLFW.glfwWindowHint(GLFW.GLFW_DOUBLEBUFFER, GLFW.GLFW_FALSE); + // Create the window window = GraphicsHelpers.initWindow("Project Zombie", width, height, monitor); @@ -102,6 +98,7 @@ public class DisplayWindow implements IMainloopTask //GLFW.glfwShowWindow(this.window); GL33.glEnable(GL33.GL_DEPTH_TEST); + GL33.glEnable(GL33.GL_BLEND); environmentRenderer = new GraphicsShader("/resources/shader/environmentRenderer"); environmentRenderer.use(); @@ -110,6 +107,7 @@ public class DisplayWindow implements IMainloopTask glsl_camera = GL33.glGetUniformLocation(environmentRenderer.program, "camera"); glsl_rotated = GL33.glGetUniformLocation(environmentRenderer.program, "rotated"); glsl_projection = GL33.glGetUniformLocation(environmentRenderer.program, "projection"); + glsl_time = GL33.glGetUniformLocation(environmentRenderer.program, "time"); } public void render() @@ -133,6 +131,8 @@ public class DisplayWindow implements IMainloopTask // Swap the framebuffers and poll events GLFW.glfwSwapBuffers(window); GLFW.glfwPollEvents(); + + fps += 1; } public void toggleFullscreen() { @@ -157,7 +157,11 @@ public class DisplayWindow implements IMainloopTask } public boolean shouldClose() { - return GLFW.glfwWindowShouldClose(this.window); + return GLFW.glfwWindowShouldClose(window); + } + + public void makeContextCurrent() { + GLFW.glfwMakeContextCurrent(window); } @Override @@ -174,4 +178,8 @@ public class DisplayWindow implements IMainloopTask public void MainLoopUpdate() { this.render(); } + + public void setTitle(String string) { + GLFW.glfwSetWindowTitle(window, string); + } } diff --git a/src/projectzombie/display/bossbar/BossBars.java b/src/projectzombie/display/bossbar/BossBars.java index efccaaf..9a89cf7 100755 --- a/src/projectzombie/display/bossbar/BossBars.java +++ b/src/projectzombie/display/bossbar/BossBars.java @@ -2,10 +2,6 @@ package projectzombie.display.bossbar; import java.util.ArrayList; -import projectzombie.init.Models; -import projectzombie.util.gl.GlHelpers; -import projectzombie.util.gl.texture.TextureReference; - public class BossBars { private static final ArrayList bossbars = new ArrayList(); diff --git a/src/projectzombie/display/lighting/ChunkLightingCollection.java b/src/projectzombie/display/lighting/ChunkLightingCollection.java index a663c0d..c79387a 100755 --- a/src/projectzombie/display/lighting/ChunkLightingCollection.java +++ b/src/projectzombie/display/lighting/ChunkLightingCollection.java @@ -1,10 +1,10 @@ package projectzombie.display.lighting; 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.Vec2i; +import projectzombie.util.math.map.IMap2D; +import projectzombie.util.math.map.Map2D; import projectzombie.world.chunk.Chunk; public class ChunkLightingCollection implements IMap2D diff --git a/src/projectzombie/display/lighting/DynamicLighting.java b/src/projectzombie/display/lighting/DynamicLighting.java index 546b59a..77468ce 100755 --- a/src/projectzombie/display/lighting/DynamicLighting.java +++ b/src/projectzombie/display/lighting/DynamicLighting.java @@ -1,12 +1,11 @@ package projectzombie.display.lighting; +import gl_engine.MathHelpers; +import gl_engine.vec.Vec2i; import projectzombie.Main; -import projectzombie.display.Camera; import projectzombie.entity.Entity; import projectzombie.entity.player.EntityPlayer; -import gl_engine.MathHelpers; import projectzombie.util.math.TileState; -import gl_engine.vec.Vec2i; import projectzombie.world.chunk.Chunk; import projectzombie.world.chunk.ChunkEventHandler; import projectzombie.world.layer.Layer; @@ -18,7 +17,7 @@ public class DynamicLighting public static void update() { if(!ChunkEventHandler.loaded) return; - int r = Camera.camera.renderDistance; + int r = Chunk.RENDER_DISTANCE; Layer layer = Main.world.getLayer(); EntityPlayer player = Main.player; @@ -84,7 +83,7 @@ public class DynamicLighting MathHelpers.floor(lpos.squareDistance(new Vec2i( MathHelpers.floor(Main.player.pos.x), MathHelpers.floor(Main.player.pos.y))) / 16) - > Camera.camera.renderDistance) { + > Chunk.RENDER_DISTANCE) { return; } diff --git a/src/projectzombie/display/lighting/TileLighting.java b/src/projectzombie/display/lighting/TileLighting.java index 33bc2c2..124b4ec 100755 --- a/src/projectzombie/display/lighting/TileLighting.java +++ b/src/projectzombie/display/lighting/TileLighting.java @@ -1,15 +1,15 @@ 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 projectzombie.Main; import projectzombie.display.Camera; import projectzombie.entity.player.EntityPlayer; import projectzombie.mainloop.MainloopHelpers; -import gl_engine.MathHelpers; 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.ChunkEventHandler; import projectzombie.world.layer.Layer; @@ -123,7 +123,7 @@ public class TileLighting implements IMainloopTask MathHelpers.floor(lpos.squareDistance(new Vec2i( MathHelpers.floor(Main.player.pos.x), MathHelpers.floor(Main.player.pos.y))) / 16) - > Camera.camera.renderDistance + > Chunk.RENDER_DISTANCE ) { return; } @@ -190,7 +190,7 @@ public class TileLighting implements IMainloopTask @Override public boolean MainLoopRepeat() { - return true; + return false; } @Override diff --git a/src/projectzombie/entity/Entity.java b/src/projectzombie/entity/Entity.java index 48a44f2..0b92d5b 100755 --- a/src/projectzombie/entity/Entity.java +++ b/src/projectzombie/entity/Entity.java @@ -8,17 +8,15 @@ import bdf.classes.IBdfClassManager; import bdf.types.BdfArray; import bdf.types.BdfNamedList; import bdf.types.BdfObject; +import gl_engine.MathHelpers; +import gl_engine.vec.Vec2d; +import gl_engine.vec.Vec2i; import mainloop.task.IMainloopTask; import projectzombie.Main; -import projectzombie.display.Camera; import projectzombie.init.Entities; import projectzombie.model.Model; import projectzombie.tiles.Tile; -import gl_engine.MathHelpers; 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.ChunkEventHandler; import projectzombie.world.layer.Layer; diff --git a/src/projectzombie/entity/EntityBoss.java b/src/projectzombie/entity/EntityBoss.java index 73b0c78..49a42fd 100755 --- a/src/projectzombie/entity/EntityBoss.java +++ b/src/projectzombie/entity/EntityBoss.java @@ -4,8 +4,11 @@ import java.util.Random; import bdf.types.BdfNamedList; 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.display.Camera; import projectzombie.display.bossbar.BossBars; import projectzombie.display.bossbar.IBossBar; import projectzombie.init.Items; @@ -13,14 +16,9 @@ import projectzombie.init.Models; import projectzombie.init.Tiles; import projectzombie.model.Model; import projectzombie.time.GameTimer; -import projectzombie.util.gl.texture.TextureReference; import projectzombie.util.math.ItemStack; -import gl_engine.MathHelpers; import projectzombie.util.math.random.OpenSimplexNoise; 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.layer.Layer; diff --git a/src/projectzombie/entity/EntityBullet.java b/src/projectzombie/entity/EntityBullet.java index ead0e96..302f4f8 100755 --- a/src/projectzombie/entity/EntityBullet.java +++ b/src/projectzombie/entity/EntityBullet.java @@ -2,20 +2,17 @@ package projectzombie.entity; import bdf.types.BdfNamedList; 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.init.Models; import projectzombie.init.Sounds; import projectzombie.model.Model; -import projectzombie.settings.SettingQuality; import projectzombie.tiles.Tile; import projectzombie.tiles.TileBulletBreakable; -import projectzombie.util.gl.GlHelpers; -import gl_engine.MathHelpers; 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.layer.Layer; @@ -75,7 +72,7 @@ public class EntityBullet extends EntityParticle Math.toRadians(this.angle), Math.toRadians(this.height_angle))); // 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) { @@ -157,7 +154,7 @@ public class EntityBullet extends EntityParticle e.push(1, angle); // Spawn some blood particles - if(EntityParticle.MODE != SettingQuality.OFF) { + if(!EntityParticle.DISABLED) { for(int i=0;i Camera.camera.renderDistance * 16) this.kill(); + if(Main.player.pos.squareDistance(pos) > Chunk.RENDER_DISTANCE * 16) this.kill(); } } diff --git a/src/projectzombie/entity/EntityTnt.java b/src/projectzombie/entity/EntityTnt.java index 3c6d920..a7e9022 100755 --- a/src/projectzombie/entity/EntityTnt.java +++ b/src/projectzombie/entity/EntityTnt.java @@ -2,14 +2,12 @@ package projectzombie.entity; import bdf.types.BdfNamedList; 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.vec.Vec2d; 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.layer.Layer; @@ -127,8 +125,7 @@ public class EntityTnt extends Entity @Override public Model getModel() { - // TODO Auto-generated method stub - return null; + return Models.EMPTY; } } diff --git a/src/projectzombie/entity/EntityZombie.java b/src/projectzombie/entity/EntityZombie.java index 5df5fa5..05e8897 100755 --- a/src/projectzombie/entity/EntityZombie.java +++ b/src/projectzombie/entity/EntityZombie.java @@ -4,15 +4,14 @@ import java.util.Random; import bdf.types.BdfNamedList; import bdf.types.BdfObject; +import gl_engine.vec.Vec2d; +import gl_engine.vec.Vec2i; import projectzombie.Main; import projectzombie.init.Models; import projectzombie.model.Model; -import projectzombie.util.gl.texture.TextureReference; import projectzombie.util.math.astar.AStar; import projectzombie.util.math.astar.AStarSearcher; import projectzombie.util.math.random.OpenSimplexNoise; -import gl_engine.vec.Vec2d; -import gl_engine.vec.Vec2i; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; diff --git a/src/projectzombie/entity/EntityZombieArmored.java b/src/projectzombie/entity/EntityZombieArmored.java index 49b4211..2c4d111 100755 --- a/src/projectzombie/entity/EntityZombieArmored.java +++ b/src/projectzombie/entity/EntityZombieArmored.java @@ -1,11 +1,9 @@ package projectzombie.entity; import bdf.types.BdfObject; -import projectzombie.display.Camera; +import gl_engine.vec.Vec2d; import projectzombie.init.Models; import projectzombie.model.Model; -import projectzombie.util.gl.texture.TextureReference; -import gl_engine.vec.Vec2d; public class EntityZombieArmored extends EntityZombie { diff --git a/src/projectzombie/entity/particle/ParticleBlood.java b/src/projectzombie/entity/particle/ParticleBlood.java index 385aed9..ad58378 100755 --- a/src/projectzombie/entity/particle/ParticleBlood.java +++ b/src/projectzombie/entity/particle/ParticleBlood.java @@ -2,27 +2,34 @@ package projectzombie.entity.particle; 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.init.Models; import projectzombie.model.Model; -import projectzombie.settings.SettingQuality; -import projectzombie.util.gl.GlHelpers; -import gl_engine.MathHelpers; 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.layer.Layer; -public class ParticleBlood extends EntityParticle +public class ParticleBlood extends EntityParticle implements EntityHeight { private double r_color; private double time = 1000; private double height = 0; 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) { super(pos); @@ -60,7 +67,7 @@ public class ParticleBlood extends EntityParticle // Should this particle too old; destroy it if(time < 0) chunk.killEntity(this); - if(MODE == SettingQuality.OFF) { + if(DISABLED) { kill(); } } diff --git a/src/projectzombie/entity/particle/ParticleBreak.java b/src/projectzombie/entity/particle/ParticleBreak.java index 89b3478..bc8a071 100755 --- a/src/projectzombie/entity/particle/ParticleBreak.java +++ b/src/projectzombie/entity/particle/ParticleBreak.java @@ -1,60 +1,59 @@ package projectzombie.entity.particle; +import gl_engine.MathHelpers; +import gl_engine.vec.Vec2d; +import gl_engine.vec.Vec3d; import projectzombie.Main; -import projectzombie.display.Camera; import projectzombie.entity.Entity; +import projectzombie.entity.EntityHeight; import projectzombie.entity.EntityParticle; import projectzombie.init.Models; 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.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.layer.Layer; -public class ParticleBreak extends EntityParticle +public class ParticleBreak extends EntityParticle implements EntityHeight { private double height = 0; private Vec3d velocity; private int time = 0; 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) { - if(EntityParticle.MODE == SettingQuality.OFF) { + if(DISABLED) { return; } - int height = 1; - - /*if(e instanceof EntityVertical) { - height = MathHelpers.floor(((EntityVertical)e).size.y); - } + double height = e.getModel().getHeight(); 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) { - if(EntityParticle.MODE == SettingQuality.OFF) { + if(DISABLED) { return; } - int height = 1; - - + double height = s.tile.getModel(s.meta).getHeight(); 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); double angle = RandomHelpers.randrange(rand, 360); @@ -100,10 +99,11 @@ public class ParticleBreak extends EntityParticle side_v.x, side_v.y, RandomHelpers.randrange(rand, 10000) / 200000.0); + this.height = RandomHelpers.randrange(rand, 0, (int)(height * 1000)) / 1000.0; time = RandomHelpers.randrange(rand, 800, 1200); } - public ParticleBreak(Vec2d pos, Entity entity) { + public ParticleBreak(Vec2d pos, Entity entity, double height) { super(pos); double angle = RandomHelpers.randrange(rand, 360); @@ -112,6 +112,7 @@ public class ParticleBreak extends EntityParticle side_v.x, side_v.y, RandomHelpers.randrange(rand, 10000) / 200000.0); + this.height = RandomHelpers.randrange(rand, 0, (int)(height * 1000)) / 1000.0; time = RandomHelpers.randrange(rand, 500, 1500); /*if(entity instanceof EntityVertical) { @@ -154,7 +155,7 @@ public class ParticleBreak extends EntityParticle pos.y += velocity.y; } - if(EntityParticle.MODE == SettingQuality.OFF) { + if(DISABLED) { kill(); } } diff --git a/src/projectzombie/entity/particle/ParticleLava.java b/src/projectzombie/entity/particle/ParticleLava.java index 52388e3..8e431be 100755 --- a/src/projectzombie/entity/particle/ParticleLava.java +++ b/src/projectzombie/entity/particle/ParticleLava.java @@ -2,25 +2,33 @@ package projectzombie.entity.particle; 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.init.Models; import projectzombie.model.Model; -import projectzombie.settings.SettingQuality; -import projectzombie.util.gl.GlHelpers; -import gl_engine.MathHelpers; import projectzombie.util.math.random.RandomHelpers; -import gl_engine.vec.Vec2d; -import gl_engine.vec.Vec3d; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; -public class ParticleLava extends EntityParticle +public class ParticleLava extends EntityParticle implements EntityHeight { private static Random rand = new Random(); private Vec3d velocity; private double height = 0; + @Override + public double getHeight() { + return height; + } + + @Override + public void setHeight(double height) { + this.height = height; + } + public ParticleLava(Vec2d pos) { super(pos); @@ -44,7 +52,7 @@ public class ParticleLava extends EntityParticle kill(); } - if(MODE == SettingQuality.OFF) { + if(DISABLED) { kill(); } } diff --git a/src/projectzombie/entity/particle/ParticleSmoke.java b/src/projectzombie/entity/particle/ParticleSmoke.java index 169bfed..dac14aa 100755 --- a/src/projectzombie/entity/particle/ParticleSmoke.java +++ b/src/projectzombie/entity/particle/ParticleSmoke.java @@ -1,18 +1,16 @@ package projectzombie.entity.particle; +import gl_engine.vec.Vec2d; import projectzombie.Main; -import projectzombie.display.Camera; +import projectzombie.entity.EntityHeight; import projectzombie.entity.EntityParticle; import projectzombie.init.Models; import projectzombie.model.Model; -import projectzombie.settings.SettingQuality; -import projectzombie.util.gl.GlHelpers; import projectzombie.util.math.random.RandomHelpers; -import gl_engine.vec.Vec2d; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; -public class ParticleSmoke extends EntityParticle +public class ParticleSmoke extends EntityParticle implements EntityHeight { double height = 0; double opacity = 1; @@ -20,6 +18,16 @@ public class ParticleSmoke extends EntityParticle double disappear_speed; private Model model; + + @Override + public double getHeight() { + return height; + } + + @Override + public void setHeight(double height) { + this.height = height; + } public ParticleSmoke(Vec2d pos) { super(pos); @@ -44,7 +52,7 @@ public class ParticleSmoke extends EntityParticle height += height_speed; opacity -= disappear_speed; - if(EntityParticle.MODE == SettingQuality.OFF) { + if(DISABLED) { kill(); } } diff --git a/src/projectzombie/entity/particle/ParticleSpark.java b/src/projectzombie/entity/particle/ParticleSpark.java index ed2caab..231e6ac 100755 --- a/src/projectzombie/entity/particle/ParticleSpark.java +++ b/src/projectzombie/entity/particle/ParticleSpark.java @@ -1,12 +1,9 @@ package projectzombie.entity.particle; -import projectzombie.display.Camera; +import gl_engine.vec.Vec2d; import projectzombie.entity.EntityParticle; import projectzombie.init.Models; 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.layer.Layer; @@ -32,7 +29,7 @@ public class ParticleSpark extends EntityParticle kill(); } - if(MODE == SettingQuality.OFF) { + if(DISABLED) { kill(); } } diff --git a/src/projectzombie/entity/particle/ParticleWater.java b/src/projectzombie/entity/particle/ParticleWater.java index 42f7ab4..6bc3f7b 100755 --- a/src/projectzombie/entity/particle/ParticleWater.java +++ b/src/projectzombie/entity/particle/ParticleWater.java @@ -1,24 +1,31 @@ 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.init.Models; import projectzombie.model.Model; -import projectzombie.settings.SettingQuality; -import projectzombie.util.gl.GlHelpers; -import gl_engine.MathHelpers; 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.layer.Layer; -public class ParticleWater extends EntityParticle +public class ParticleWater extends EntityParticle implements EntityHeight { private Vec3d velocity; private double height = 0; + @Override + public double getHeight() { + return height; + } + + @Override + public void setHeight(double height) { + this.height = height; + } + public ParticleWater(Vec2d pos) { super(pos); @@ -42,7 +49,7 @@ public class ParticleWater extends EntityParticle kill(); } - if(MODE == SettingQuality.OFF) { + if(DISABLED) { kill(); } } diff --git a/src/projectzombie/entity/player/EntityPlayer.java b/src/projectzombie/entity/player/EntityPlayer.java index 1639160..245897c 100755 --- a/src/projectzombie/entity/player/EntityPlayer.java +++ b/src/projectzombie/entity/player/EntityPlayer.java @@ -1,14 +1,11 @@ package projectzombie.entity.player; -import java.io.FileOutputStream; -import java.util.zip.DeflaterOutputStream; - -import bdf.types.BdfIndent; import bdf.types.BdfNamedList; import bdf.types.BdfObject; +import gl_engine.MathHelpers; +import gl_engine.vec.Vec2d; import mainloop.task.IMainloopTask; import projectzombie.Main; -import projectzombie.display.Camera; import projectzombie.entity.Entity; import projectzombie.entity.EntityAlive; import projectzombie.entity.EntityBullet; @@ -22,16 +19,8 @@ import projectzombie.inventory.Inventory; import projectzombie.menu.MenuDeath; import projectzombie.model.Model; import projectzombie.settings.Cheats; -import projectzombie.util.gl.GlHelpers; -import projectzombie.util.gl.texture.TextureReference; 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.ChunkEventHandler; import projectzombie.world.layer.Layer; public class EntityPlayer extends Entity implements EntityAlive, EntityInventory, EntityHeight diff --git a/src/projectzombie/init/Items.java b/src/projectzombie/init/Items.java index 51b7570..86d7ea6 100755 --- a/src/projectzombie/init/Items.java +++ b/src/projectzombie/init/Items.java @@ -38,6 +38,8 @@ public class Items register(GRAPPLING_HOOK); register(SPAWN_ZOMBIE); + register(SPAWN_DUMMY); + register(ROCK); register(AMMO); @@ -54,6 +56,7 @@ public class Items public static final Item GRAPPLING_HOOK = new ItemGrapplingHook(); public static final Item SPAWN_ZOMBIE = new ItemSpawnZombie(); + public static final Item SPAWN_DUMMY = new ItemSpawnZombie(); public static final Item ROCK = new ItemRock(); } diff --git a/src/projectzombie/init/Models.java b/src/projectzombie/init/Models.java index c0304de..ebf6fc3 100755 --- a/src/projectzombie/init/Models.java +++ b/src/projectzombie/init/Models.java @@ -1,20 +1,13 @@ package projectzombie.init; -import java.util.ArrayList; - -import org.lwjgl.opengl.GL; - import gl_engine.vec.Vec2d; -import projectzombie.display.DisplayWindow; import projectzombie.model.Model; import projectzombie.model.ModelEmpty; import projectzombie.model.ModelGui; +import projectzombie.model.ModelItem; import projectzombie.model.ModelRandom; import projectzombie.model.ModelTile; 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 { @@ -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_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_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_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_BOSS_PORTAL = new ModelVertical(Resources.ATLAS.get("/tile/boss_portal.png")); - public static final Model TILE_WATER = new ModelTile(Resources.ATLAS.get("/tile/water.png")); - public static final Model TILE_LAVA = new ModelTile(Resources.ATLAS.get("/tile/lava.png")); - public static final Model TILE_LAVA_FLOW = new ModelTile(Resources.ATLAS.get("/tile/lava_flow.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"), 16, 10); + 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"), 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_FIRING = new ModelVertical(Resources.ATLAS.get("/entity/boss1/boss_firing.png"), 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_AND_FIRING = new ModelVertical(Resources.ATLAS.get("/entity/boss1/boss_walking_firing.png"), 4, 10); + 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"), new Vec2d(4, 4), 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"), 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_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_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")); - public static final Model PARTICLE_LAVA = new ModelVertical(Resources.ATLAS.get("/particle/blood.png")); - public static final Model PARTICLE_WATER = new ModelVertical(Resources.ATLAS.get("/particle/blood.png")); - 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 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_WATER = new ModelVertical(Resources.ATLAS.get("/particle/water.png"), new Vec2d(0.1, 0.1)); + 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_BULLET = new ModelVertical(Resources.ATLAS.get("/particle/bullet.png"), new Vec2d(0.1, 0.1)); public static final ModelRandom PARTICLE_SMOKE_RANDOM = new ModelRandom( 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_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 Model ITEM_HEALTH_POTION = new ModelGui(Resources.ATLAS.get("/item/health_potion.png")); - public static final Model ITEM_AMMO_BOX = new ModelGui(Resources.ATLAS.get("/item/ammo_box.png")); - public static final Model ITEM_GUN_UPGRADE = new ModelGui(Resources.ATLAS.get("/item/gun_upgrade.png")); - public static final Model ITEM_DEFENCE_UPGRADE = new ModelGui(Resources.ATLAS.get("/item/shield_upgrade.png")); - public static final Model ITEM_ROCK = new ModelGui(Resources.ATLAS.get("/item/rock.png")); + public static final ModelItem ITEM_EMPTY = ModelItem.createEmpty(); + public static final ModelItem ITEM_GRAPPLING_HOOK = new ModelItem(Resources.ATLAS.get("/item/grappling_hook.png")); + public static final ModelItem ITEM_HEALTH_POTION = new ModelItem(Resources.ATLAS.get("/item/health_potion.png")); + public static final ModelItem ITEM_AMMO_BOX = new ModelItem(Resources.ATLAS.get("/item/ammo_box.png")); + public static final ModelItem ITEM_GUN_UPGRADE = new ModelItem(Resources.ATLAS.get("/item/gun_upgrade.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 public static final Model ENTITY_PLAYER_B_W_STILL = new ModelVertical(Resources.ATLAS.get("/player/player_white_back_still.png")); diff --git a/src/projectzombie/init/Resources.java b/src/projectzombie/init/Resources.java index 01b9624..47047cd 100755 --- a/src/projectzombie/init/Resources.java +++ b/src/projectzombie/init/Resources.java @@ -30,20 +30,20 @@ public class Resources public static TextureAtlas3D ATLAS; - 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_2 = new Resource("sound/gun2.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_5 = new Resource("sound/gun5.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_8 = new Resource("sound/gun8.ogg"); - public static final Resource GUN_OGG_9 = new Resource("sound/gun9.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_2 = new Resource("/sound/gun2.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_5 = new Resource("/sound/gun5.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_8 = new Resource("/sound/gun8.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_1 = new Resource("sound/hit1.ogg"); - public static final Resource HIT_OGG_2 = new Resource("sound/hit2.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_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"); } diff --git a/src/projectzombie/input/CursorPosCallback.java b/src/projectzombie/input/CursorPosCallback.java index 9a5eb97..ef6f295 100755 --- a/src/projectzombie/input/CursorPosCallback.java +++ b/src/projectzombie/input/CursorPosCallback.java @@ -3,8 +3,8 @@ package projectzombie.input; import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFWCursorPosCallbackI; -import projectzombie.Main; import gl_engine.vec.Vec2d; +import projectzombie.Main; public class CursorPosCallback implements GLFWCursorPosCallbackI { diff --git a/src/projectzombie/input/KeyCallback.java b/src/projectzombie/input/KeyCallback.java index 691907c..d96281c 100755 --- a/src/projectzombie/input/KeyCallback.java +++ b/src/projectzombie/input/KeyCallback.java @@ -25,10 +25,10 @@ import static projectzombie.input.GameInput.move_last; import org.lwjgl.glfw.GLFWKeyCallbackI; +import gl_engine.vec.Vec2d; import mainloop.task.IMainloopTask; import projectzombie.Main; import projectzombie.input.types.Input; -import gl_engine.vec.Vec2d; public class KeyCallback implements GLFWKeyCallbackI, IMainloopTask { @@ -165,11 +165,11 @@ public class KeyCallback implements GLFWKeyCallbackI, IMainloopTask } if(moveLeft) { - move_point.y -= 1; + move_point.y += 1; } if(moveRight) { - move_point.y += 1; + move_point.y -= 1; } if(move_point.x != 0 || move_point.y != 0) { diff --git a/src/projectzombie/input/types/InputGUI.java b/src/projectzombie/input/types/InputGUI.java index d651a8b..40df85a 100755 --- a/src/projectzombie/input/types/InputGUI.java +++ b/src/projectzombie/input/types/InputGUI.java @@ -1,7 +1,7 @@ package projectzombie.input.types; -import projectzombie.menu.gui.GUI; import gl_engine.vec.Vec2d; +import projectzombie.menu.gui.GUI; public class InputGUI implements Input { diff --git a/src/projectzombie/input/types/InputGame.java b/src/projectzombie/input/types/InputGame.java index 207bf1a..8d24d8f 100755 --- a/src/projectzombie/input/types/InputGame.java +++ b/src/projectzombie/input/types/InputGame.java @@ -1,9 +1,9 @@ package projectzombie.input.types; -import projectzombie.Main; -import projectzombie.menu.MenuGamePause; import gl_engine.MathHelpers; import gl_engine.vec.Vec2d; +import projectzombie.Main; +import projectzombie.menu.MenuGamePause; import projectzombie.world.chunk.ChunkEventHandler; public class InputGame implements Input @@ -40,7 +40,7 @@ public class InputGame implements Input @Override public void camera(boolean state, double amount) { - Main.player.angle += amount; + Main.player.angle -= amount; } @Override diff --git a/src/projectzombie/items/Item.java b/src/projectzombie/items/Item.java index c3071bc..07890d1 100755 --- a/src/projectzombie/items/Item.java +++ b/src/projectzombie/items/Item.java @@ -4,17 +4,13 @@ import projectzombie.entity.Entity; import projectzombie.entity.EntityInventory; import projectzombie.entity.player.EntityPlayer; import projectzombie.inventory.Inventory; -import projectzombie.model.Model; -import projectzombie.util.gl.GlHelpers; -import projectzombie.util.gl.texture.TextureReference; +import projectzombie.model.ModelItem; import projectzombie.util.math.ItemStack; -import gl_engine.vec.Vec2d; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; public abstract class Item { - public TextureReference texture; public int id; public void onPlayerAction(ItemStack stack, Layer layer, Chunk chunk, EntityPlayer player) { @@ -29,7 +25,7 @@ public abstract class Item 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) { diff --git a/src/projectzombie/items/ItemAmmo.java b/src/projectzombie/items/ItemAmmo.java index 9b43217..c4b023b 100755 --- a/src/projectzombie/items/ItemAmmo.java +++ b/src/projectzombie/items/ItemAmmo.java @@ -3,7 +3,7 @@ package projectzombie.items; import projectzombie.entity.Entity; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; -import projectzombie.model.Model; +import projectzombie.model.ModelItem; import projectzombie.util.math.ItemStack; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; @@ -12,7 +12,7 @@ public class ItemAmmo extends Item { @Override - public Model getModel(short meta) { + public ModelItem getModel(short meta) { return Models.ITEM_AMMO_BOX; } diff --git a/src/projectzombie/items/ItemDefenceUpgrade.java b/src/projectzombie/items/ItemDefenceUpgrade.java index fab0996..27e14e6 100755 --- a/src/projectzombie/items/ItemDefenceUpgrade.java +++ b/src/projectzombie/items/ItemDefenceUpgrade.java @@ -3,7 +3,7 @@ package projectzombie.items; import projectzombie.Main; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; -import projectzombie.model.Model; +import projectzombie.model.ModelItem; import projectzombie.util.math.ItemStack; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; @@ -12,7 +12,7 @@ public class ItemDefenceUpgrade extends Item { @Override - public Model getModel(short meta) { + public ModelItem getModel(short meta) { return Models.ITEM_DEFENCE_UPGRADE; } diff --git a/src/projectzombie/items/ItemEmpty.java b/src/projectzombie/items/ItemEmpty.java index 285a6ed..6fa2c31 100755 --- a/src/projectzombie/items/ItemEmpty.java +++ b/src/projectzombie/items/ItemEmpty.java @@ -2,9 +2,9 @@ package projectzombie.items; import projectzombie.entity.Entity; import projectzombie.entity.player.EntityPlayer; -import projectzombie.model.Model; +import projectzombie.init.Models; +import projectzombie.model.ModelItem; import projectzombie.util.math.ItemStack; -import gl_engine.vec.Vec2d; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; @@ -23,8 +23,8 @@ public class ItemEmpty extends Item } @Override - public Model getModel(short meta) { - return null; + public ModelItem getModel(short meta) { + return Models.ITEM_EMPTY; } } diff --git a/src/projectzombie/items/ItemFlare.java b/src/projectzombie/items/ItemFlare.java index 24cc6fa..9e7f553 100755 --- a/src/projectzombie/items/ItemFlare.java +++ b/src/projectzombie/items/ItemFlare.java @@ -3,7 +3,7 @@ package projectzombie.items; import projectzombie.entity.EntityFlare; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; -import projectzombie.model.Model; +import projectzombie.model.ModelItem; import projectzombie.util.math.ItemStack; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; @@ -12,8 +12,8 @@ public class ItemFlare extends Item { @Override - public Model getModel(short meta) { - return Models.ENTITY_FLARE; + public ModelItem getModel(short meta) { + return Models.ITEM_FLARE; } @Override diff --git a/src/projectzombie/items/ItemGrapplingHook.java b/src/projectzombie/items/ItemGrapplingHook.java index 16df8da..e7bc0db 100755 --- a/src/projectzombie/items/ItemGrapplingHook.java +++ b/src/projectzombie/items/ItemGrapplingHook.java @@ -1,12 +1,12 @@ package projectzombie.items; +import gl_engine.MathHelpers; +import gl_engine.vec.Vec2d; import projectzombie.entity.EntityGrapplingHook; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; -import projectzombie.model.Model; +import projectzombie.model.ModelItem; import projectzombie.util.math.ItemStack; -import gl_engine.MathHelpers; -import gl_engine.vec.Vec2d; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; @@ -14,7 +14,7 @@ public class ItemGrapplingHook extends Item { @Override - public Model getModel(short meta) { + public ModelItem getModel(short meta) { return Models.ITEM_GRAPPLING_HOOK; } @@ -28,7 +28,7 @@ public class ItemGrapplingHook extends Item super.onPlayerAction(stack, layer, chunk, player); 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)); } } diff --git a/src/projectzombie/items/ItemGunUpgrade.java b/src/projectzombie/items/ItemGunUpgrade.java index 6028f13..174cb5e 100755 --- a/src/projectzombie/items/ItemGunUpgrade.java +++ b/src/projectzombie/items/ItemGunUpgrade.java @@ -3,7 +3,7 @@ package projectzombie.items; import projectzombie.Main; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; -import projectzombie.model.Model; +import projectzombie.model.ModelItem; import projectzombie.util.math.ItemStack; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; @@ -12,7 +12,7 @@ public class ItemGunUpgrade extends Item { @Override - public Model getModel(short meta) { + public ModelItem getModel(short meta) { return Models.ITEM_GUN_UPGRADE; } diff --git a/src/projectzombie/items/ItemHealthPotion.java b/src/projectzombie/items/ItemHealthPotion.java index 6abdf73..89597c5 100755 --- a/src/projectzombie/items/ItemHealthPotion.java +++ b/src/projectzombie/items/ItemHealthPotion.java @@ -2,7 +2,7 @@ package projectzombie.items; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; -import projectzombie.model.Model; +import projectzombie.model.ModelItem; import projectzombie.util.math.ItemStack; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; @@ -11,7 +11,7 @@ public class ItemHealthPotion extends Item { @Override - public Model getModel(short meta) { + public ModelItem getModel(short meta) { return Models.ITEM_HEALTH_POTION; } diff --git a/src/projectzombie/items/ItemLantern.java b/src/projectzombie/items/ItemLantern.java index 8dc3175..4d4f218 100755 --- a/src/projectzombie/items/ItemLantern.java +++ b/src/projectzombie/items/ItemLantern.java @@ -1,12 +1,12 @@ package projectzombie.items; +import gl_engine.MathHelpers; +import gl_engine.vec.Vec2i; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; import projectzombie.init.Tiles; -import projectzombie.model.Model; +import projectzombie.model.ModelItem; import projectzombie.util.math.ItemStack; -import gl_engine.MathHelpers; -import gl_engine.vec.Vec2i; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; @@ -14,8 +14,8 @@ public class ItemLantern extends Item { @Override - public Model getModel(short meta) { - return Models.TILE_LANTERN; + public ModelItem getModel(short meta) { + return Models.ITEM_LANTERN; } @Override diff --git a/src/projectzombie/items/ItemRock.java b/src/projectzombie/items/ItemRock.java index 7727bde..3acc59b 100755 --- a/src/projectzombie/items/ItemRock.java +++ b/src/projectzombie/items/ItemRock.java @@ -2,7 +2,7 @@ package projectzombie.items; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; -import projectzombie.model.Model; +import projectzombie.model.ModelItem; import projectzombie.util.math.ItemStack; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; @@ -11,7 +11,7 @@ public class ItemRock extends Item { @Override - public Model getModel(short meta) { + public ModelItem getModel(short meta) { return Models.ITEM_ROCK; } diff --git a/src/projectzombie/items/ItemSpawn.java b/src/projectzombie/items/ItemSpawn.java index 4a824eb..e11f622 100755 --- a/src/projectzombie/items/ItemSpawn.java +++ b/src/projectzombie/items/ItemSpawn.java @@ -1,8 +1,8 @@ package projectzombie.items; +import gl_engine.vec.Vec2d; import projectzombie.entity.player.EntityPlayer; import projectzombie.util.math.ItemStack; -import gl_engine.vec.Vec2d; import projectzombie.world.chunk.Chunk; 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) { 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) { diff --git a/src/projectzombie/items/ItemTnt.java b/src/projectzombie/items/ItemTnt.java index ce9332c..c677330 100755 --- a/src/projectzombie/items/ItemTnt.java +++ b/src/projectzombie/items/ItemTnt.java @@ -3,7 +3,7 @@ package projectzombie.items; import projectzombie.entity.EntityTnt; import projectzombie.entity.player.EntityPlayer; import projectzombie.init.Models; -import projectzombie.model.Model; +import projectzombie.model.ModelItem; import projectzombie.util.math.ItemStack; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; @@ -11,8 +11,8 @@ import projectzombie.world.layer.Layer; public class ItemTnt extends Item { @Override - public Model getModel(short meta) { - return Models.ENTITY_TNT; + public ModelItem getModel(short meta) { + return Models.ITEM_TNT; } @Override diff --git a/src/projectzombie/items/spawner/ItemSpawnDummy.java b/src/projectzombie/items/spawner/ItemSpawnDummy.java new file mode 100644 index 0000000..3b734f5 --- /dev/null +++ b/src/projectzombie/items/spawner/ItemSpawnDummy.java @@ -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))); + } + +} diff --git a/src/projectzombie/items/spawner/ItemSpawnZombie.java b/src/projectzombie/items/spawner/ItemSpawnZombie.java index 8d3a8cb..a48a28d 100755 --- a/src/projectzombie/items/spawner/ItemSpawnZombie.java +++ b/src/projectzombie/items/spawner/ItemSpawnZombie.java @@ -1,10 +1,10 @@ package projectzombie.items.spawner; +import gl_engine.vec.Vec2d; import projectzombie.entity.EntityZombie; import projectzombie.init.Models; import projectzombie.items.ItemSpawn; -import projectzombie.model.Model; -import gl_engine.vec.Vec2d; +import projectzombie.model.ModelItem; import projectzombie.world.chunk.Chunk; import projectzombie.world.layer.Layer; @@ -12,13 +12,13 @@ public class ItemSpawnZombie extends ItemSpawn { @Override - public Model getModel(short meta) { - return Models.ENTITY_ZOMBIE_B; + public ModelItem getModel(short meta) { + return Models.ITEM_SPAWN_ZOMBIE; } @Override public void spawnEntity(Layer layer, Chunk chunk, Vec2d pos) { - chunk.spawnEntity(new EntityZombie(pos)); + chunk.spawnEntity(new EntityZombie(new Vec2d(pos.x, pos.y))); } } diff --git a/src/projectzombie/menu/MenuGamePause.java b/src/projectzombie/menu/MenuGamePause.java index 44453c0..cbfc318 100755 --- a/src/projectzombie/menu/MenuGamePause.java +++ b/src/projectzombie/menu/MenuGamePause.java @@ -3,11 +3,9 @@ package projectzombie.menu; import java.io.FileOutputStream; import java.util.zip.DeflaterOutputStream; -import bdf.types.BdfIndent; import bdf.types.BdfObject; import projectzombie.Main; import projectzombie.input.types.InputGUI; -import projectzombie.menu.gui.Button; import projectzombie.menu.gui.ButtonGroup; import projectzombie.menu.gui.GUI; import projectzombie.menu.gui.components.ButtonBasic; diff --git a/src/projectzombie/menu/MenuSettings.java b/src/projectzombie/menu/MenuSettings.java index 4a0cfc4..3ea8b20 100755 --- a/src/projectzombie/menu/MenuSettings.java +++ b/src/projectzombie/menu/MenuSettings.java @@ -1,5 +1,6 @@ package projectzombie.menu; +import gl_engine.vec.Vec2d; import projectzombie.Main; import projectzombie.display.DisplayRenderUI; 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.GUIBackToMenu; import projectzombie.menu.gui.components.OverlayBackground; -import projectzombie.settings.SettingQuality; -import gl_engine.vec.Vec2d; import projectzombie.world.chunk.Chunk; public class MenuSettings extends Menu @@ -22,10 +21,8 @@ public class MenuSettings extends Menu private GUI gui; private Menu menuOld; - private String qualitySettingToString(SettingQuality sq) { - return sq == SettingQuality.OFF ? "Off" : - sq == SettingQuality.FAST ? "Fast" : - sq == SettingQuality.FANCY ? "Fancy" : null; + private String qualitySettingToString(boolean status) { + return status ? "On" : "Off"; } public MenuSettings(Menu menuOld) { @@ -55,8 +52,8 @@ public class MenuSettings extends Menu group.add(new ButtonSetting("Render Distance: "+Chunk.RENDER_DISTANCE, button -> { Chunk.RENDER_DISTANCE += 1; - if(Chunk.RENDER_DISTANCE > 5) { - Chunk.RENDER_DISTANCE = 1; + if(Chunk.RENDER_DISTANCE > 8) { + Chunk.RENDER_DISTANCE = 2; } button.setText("Render Distance: "+Chunk.RENDER_DISTANCE); })); @@ -69,32 +66,10 @@ public class MenuSettings extends Menu button.setText("GUI Scale: " + DisplayRenderUI.guiScale); })); - group.add(new ButtonSetting("Particles: " + qualitySettingToString(EntityParticle.MODE), button -> { - - switch(EntityParticle.MODE) { - - 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("Particles: " + qualitySettingToString(EntityParticle.DISABLED), button -> + { + EntityParticle.DISABLED = !EntityParticle.DISABLED; + button.setText("Particles: " + qualitySettingToString(EntityParticle.DISABLED)); })); /*group.add(new ButtonSetting("Dynamic Lighting: " + (LightingManager.lightingMode == 0 ? "Fast" : "Fancy"), diff --git a/src/projectzombie/menu/gui/Button.java b/src/projectzombie/menu/gui/Button.java index d6625c7..4bc71a0 100755 --- a/src/projectzombie/menu/gui/Button.java +++ b/src/projectzombie/menu/gui/Button.java @@ -1,14 +1,13 @@ package projectzombie.menu.gui; +import gl_engine.matrix.Matrix4; +import gl_engine.vec.Vec2d; import projectzombie.Main; import projectzombie.init.Models; import projectzombie.input.InputMode; import projectzombie.model.Model; import projectzombie.text.Text; 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 { @@ -74,6 +73,7 @@ public class Button implements GUIComponent, GUISelectable Matrix4 matrix = Matrix4.translate(pos.x, pos.y, 0); model.bind(); + model.render(); if(mouseHover) { //GlHelpers.color3(0.8, 0.8, 0.8); diff --git a/src/projectzombie/menu/gui/Label.java b/src/projectzombie/menu/gui/Label.java index 007a0d4..c207dda 100755 --- a/src/projectzombie/menu/gui/Label.java +++ b/src/projectzombie/menu/gui/Label.java @@ -1,9 +1,9 @@ package projectzombie.menu.gui; -import projectzombie.text.Text; -import projectzombie.util.gl.GlHelpers; import gl_engine.vec.Vec2d; import gl_engine.vec.Vec3d; +import projectzombie.text.Text; +import projectzombie.util.gl.GlHelpers; public class Label implements GUIComponent { @@ -35,18 +35,6 @@ public class Label implements GUIComponent @Override 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 diff --git a/src/projectzombie/menu/gui/Overlay.java b/src/projectzombie/menu/gui/Overlay.java index d8ea450..7dd31a9 100755 --- a/src/projectzombie/menu/gui/Overlay.java +++ b/src/projectzombie/menu/gui/Overlay.java @@ -1,9 +1,9 @@ package projectzombie.menu.gui; -import projectzombie.util.gl.GlHelpers; import gl_engine.vec.Vec2d; import gl_engine.vec.Vec3d; import gl_engine.vec.Vec4d; +import projectzombie.util.gl.GlHelpers; public class Overlay implements GUIComponent { @@ -19,17 +19,6 @@ public class Overlay implements GUIComponent @Override 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 diff --git a/src/projectzombie/menu/gui/components/ButtonBasic.java b/src/projectzombie/menu/gui/components/ButtonBasic.java index 25b8313..b054662 100755 --- a/src/projectzombie/menu/gui/components/ButtonBasic.java +++ b/src/projectzombie/menu/gui/components/ButtonBasic.java @@ -1,7 +1,7 @@ package projectzombie.menu.gui.components; -import projectzombie.menu.gui.Button; import gl_engine.vec.Vec2d; +import projectzombie.menu.gui.Button; public class ButtonBasic extends Button { diff --git a/src/projectzombie/menu/gui/components/ButtonGroupPause.java b/src/projectzombie/menu/gui/components/ButtonGroupPause.java index 001a0e5..6d0bd87 100755 --- a/src/projectzombie/menu/gui/components/ButtonGroupPause.java +++ b/src/projectzombie/menu/gui/components/ButtonGroupPause.java @@ -1,10 +1,9 @@ package projectzombie.menu.gui.components; +import gl_engine.vec.Vec2d; import projectzombie.Main; -import projectzombie.menu.MenuMain; import projectzombie.menu.MenuSettings; import projectzombie.menu.gui.ButtonGroup; -import gl_engine.vec.Vec2d; public class ButtonGroupPause extends ButtonGroup { diff --git a/src/projectzombie/menu/gui/components/ButtonSetting.java b/src/projectzombie/menu/gui/components/ButtonSetting.java index 13be1e6..f63cd04 100755 --- a/src/projectzombie/menu/gui/components/ButtonSetting.java +++ b/src/projectzombie/menu/gui/components/ButtonSetting.java @@ -1,8 +1,8 @@ package projectzombie.menu.gui.components; +import gl_engine.vec.Vec2d; import projectzombie.menu.gui.Alignment; import projectzombie.settings.Settings; -import gl_engine.vec.Vec2d; public class ButtonSetting extends ButtonBasic { diff --git a/src/projectzombie/menu/gui/components/LabelMain.java b/src/projectzombie/menu/gui/components/LabelMain.java index 67a5197..f56ff62 100755 --- a/src/projectzombie/menu/gui/components/LabelMain.java +++ b/src/projectzombie/menu/gui/components/LabelMain.java @@ -1,7 +1,7 @@ package projectzombie.menu.gui.components; -import projectzombie.menu.gui.Label; import gl_engine.vec.Vec2d; +import projectzombie.menu.gui.Label; public class LabelMain extends Label { diff --git a/src/projectzombie/menu/gui/components/LabelPause.java b/src/projectzombie/menu/gui/components/LabelPause.java index 1bf2cec..6683c57 100755 --- a/src/projectzombie/menu/gui/components/LabelPause.java +++ b/src/projectzombie/menu/gui/components/LabelPause.java @@ -1,7 +1,7 @@ package projectzombie.menu.gui.components; -import projectzombie.menu.gui.Label; import gl_engine.vec.Vec2d; +import projectzombie.menu.gui.Label; public class LabelPause extends Label { diff --git a/src/projectzombie/menu/gui/components/OverlayBackground.java b/src/projectzombie/menu/gui/components/OverlayBackground.java index f1449ed..a66d130 100755 --- a/src/projectzombie/menu/gui/components/OverlayBackground.java +++ b/src/projectzombie/menu/gui/components/OverlayBackground.java @@ -1,7 +1,7 @@ package projectzombie.menu.gui.components; -import projectzombie.menu.gui.Overlay; import gl_engine.vec.Vec4d; +import projectzombie.menu.gui.Overlay; public class OverlayBackground extends Overlay { diff --git a/src/projectzombie/model/Model.java b/src/projectzombie/model/Model.java index e123695..09b287f 100644 --- a/src/projectzombie/model/Model.java +++ b/src/projectzombie/model/Model.java @@ -1,29 +1,83 @@ 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.texture.TextureRef3D; -import static org.lwjgl.opengl.GL33.*; - -import org.lwjgl.opengl.GL33; - public abstract class Model { - int vao, size; + int vao, vbo; boolean loaded = false; - private static final int SIZE = 9; - private float[] verticies; - - public int getSize() { - return size; - } + public static final int SIZE = 14; // px, py, pz, tx, ty - protected abstract float[] getVerticies(); - protected abstract TextureRef3D[] getTextures(); + public abstract float[] getVerticies(); + public abstract TextureRef3D[] getTextures(); + public abstract double getHeight(); + public abstract int getSize(); - public float[] getLoadedVerticies() { - return verticies; + private TextureRef3D tex; + + 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