From fdf5fad14659e2f42de3a569b258b675d7311658 Mon Sep 17 00:00:00 2001 From: jsrobson10 Date: Thu, 23 Jul 2020 14:22:12 +1000 Subject: [PATCH] Renamed alot of GUI stuff for consistancy, worked on saves GUI, added vsync setting. --- src/projectzombie/display/Camera.java | 4 +- src/projectzombie/display/DisplayRender.java | 4 +- .../display/DisplayRenderUI.java | 7 +- src/projectzombie/display/DisplayWindow.java | 21 ++- src/projectzombie/input/types/InputGUI.java | 4 +- src/projectzombie/menu/MenuDeath.java | 11 +- src/projectzombie/menu/MenuGamePause.java | 16 +- src/projectzombie/menu/MenuInventory.java | 2 +- src/projectzombie/menu/MenuMain.java | 12 +- src/projectzombie/menu/MenuSaves.java | 35 ++--- src/projectzombie/menu/MenuSettings.java | 31 ++-- src/projectzombie/menu/gui/GUI.java | 18 ++- .../gui/{components => }/GUIBackToMenu.java | 3 +- src/projectzombie/menu/gui/GUIButton.java | 11 +- .../menu/gui/GUIButtonBasic.java | 27 ++++ .../menu/gui/GUIButtonCallback.java | 5 + .../menu/gui/GUIButtonGroup.java | 12 +- ...oupPause.java => GUIButtonGroupPause.java} | 9 +- .../menu/gui/GUIButtonModel.java | 10 +- ...ttonSetting.java => GUIButtonSetting.java} | 7 +- src/projectzombie/menu/gui/GUIComponent.java | 10 +- .../menu/gui/GUIContainerSlider.java | 145 ++++++++++++++++++ src/projectzombie/menu/gui/GUIItemHolder.java | 8 +- src/projectzombie/menu/gui/GUIItemSlot.java | 9 +- src/projectzombie/menu/gui/GUILabel.java | 7 +- src/projectzombie/menu/gui/GUILabelMain.java | 12 ++ src/projectzombie/menu/gui/GUILabelPause.java | 12 ++ src/projectzombie/menu/gui/GUIOverlay.java | 48 ------ src/projectzombie/menu/gui/GUISavesCard.java | 12 +- .../menu/gui/components/ButtonBasic.java | 28 ---- .../menu/gui/components/ButtonCallback.java | 7 - .../menu/gui/components/LabelMain.java | 13 -- .../menu/gui/components/LabelPause.java | 13 -- .../gui/components/OverlayBackground.java | 11 -- src/projectzombie/settings/Settings.java | 11 +- src/resources/shader/environmentRenderer.fsh | 5 +- src/resources/shader/environmentRenderer.vsh | 5 +- src/resources/texture/gui/label.png | Bin 8215 -> 14367 bytes src/resources/texture/gui/selection_box.png | Bin 0 -> 1205 bytes src/resources/texture/list.txt | 1 + texmap.xcf | Bin 275768 -> 0 bytes 41 files changed, 368 insertions(+), 238 deletions(-) rename src/projectzombie/menu/gui/{components => }/GUIBackToMenu.java (77%) create mode 100755 src/projectzombie/menu/gui/GUIButtonBasic.java create mode 100755 src/projectzombie/menu/gui/GUIButtonCallback.java rename src/projectzombie/menu/gui/{components/ButtonGroupPause.java => GUIButtonGroupPause.java} (52%) rename src/projectzombie/menu/gui/{components/ButtonSetting.java => GUIButtonSetting.java} (56%) create mode 100644 src/projectzombie/menu/gui/GUIContainerSlider.java create mode 100755 src/projectzombie/menu/gui/GUILabelMain.java create mode 100755 src/projectzombie/menu/gui/GUILabelPause.java delete mode 100755 src/projectzombie/menu/gui/GUIOverlay.java delete mode 100755 src/projectzombie/menu/gui/components/ButtonBasic.java delete mode 100755 src/projectzombie/menu/gui/components/ButtonCallback.java delete mode 100755 src/projectzombie/menu/gui/components/LabelMain.java delete mode 100755 src/projectzombie/menu/gui/components/LabelPause.java delete mode 100755 src/projectzombie/menu/gui/components/OverlayBackground.java create mode 100644 src/resources/texture/gui/selection_box.png delete mode 100755 texmap.xcf diff --git a/src/projectzombie/display/Camera.java b/src/projectzombie/display/Camera.java index 6046d70..d1b8a76 100755 --- a/src/projectzombie/display/Camera.java +++ b/src/projectzombie/display/Camera.java @@ -42,7 +42,7 @@ public class Camera projection_sun = Matrix4.multiply(projection_sun, Matrix4.rotate(-angle - 180, 0, 1, 0)); projection_sun = Matrix4.multiply(projection_sun, Matrix4.rotate(20, 0, 0, 1)); projection_sun = Matrix4.multiply(projection_sun, Matrix4.rotate(-time, 1, 0, 0)); - projection_sun = Matrix4.multiply(projection_sun, Matrix4.translate(0, 0, -16)); - projection_sun = Matrix4.multiply(projection_sun, Matrix4.scale(new Vec3d(1/20.0, 1/20.0, -1/32.0))); + projection_sun = Matrix4.multiply(projection_sun, Matrix4.translate(0, 0, -(16*Chunk.RENDER_DISTANCE+16))); + projection_sun = Matrix4.multiply(projection_sun, Matrix4.scale(new Vec3d(1.0/20.0, 1.0/20.0, -1.0/(32*Chunk.RENDER_DISTANCE+32)))); } } diff --git a/src/projectzombie/display/DisplayRender.java b/src/projectzombie/display/DisplayRender.java index 0f214ea..d471e96 100755 --- a/src/projectzombie/display/DisplayRender.java +++ b/src/projectzombie/display/DisplayRender.java @@ -92,7 +92,7 @@ public class DisplayRender GL33.glTexParameteri(GL33.GL_TEXTURE_2D, GL33.GL_TEXTURE_MAG_FILTER, GL33.GL_LINEAR); GL33.glTexParameteri(GL33.GL_TEXTURE_2D, GL33.GL_TEXTURE_WRAP_S, GL33.GL_CLAMP_TO_BORDER); GL33.glTexParameteri(GL33.GL_TEXTURE_2D, GL33.GL_TEXTURE_WRAP_T, GL33.GL_CLAMP_TO_BORDER); - GL33.glTexParameterfv(GL33.GL_TEXTURE_2D, GL33.GL_TEXTURE_BORDER_COLOR, new float[] {0, 0, 0, 0}); + GL33.glTexParameterfv(GL33.GL_TEXTURE_2D, GL33.GL_TEXTURE_BORDER_COLOR, new float[] {1, 1, 1, 1}); GL33.glFramebufferTexture(GL33.GL_FRAMEBUFFER, GL33.GL_DEPTH_ATTACHMENT, depth, 0); return depth; @@ -116,7 +116,7 @@ public class DisplayRender GL33.glEnable(GL33.GL_DEPTH_TEST); GL33.glUniform4f(Main.window.glsl_color, 1, 1, 1, 1); - GL33.glUniform4f(Main.window.glsl_discard_coords, -1, -1, 1, 1); + GL33.glUniform1i(Main.window.glsl_do_discard_coords, 0); ColorRange range = Main.world.getLayer().layergen.getLightLevel(); diff --git a/src/projectzombie/display/DisplayRenderUI.java b/src/projectzombie/display/DisplayRenderUI.java index d3435de..f37bf40 100755 --- a/src/projectzombie/display/DisplayRenderUI.java +++ b/src/projectzombie/display/DisplayRenderUI.java @@ -85,14 +85,17 @@ public class DisplayRenderUI model_health_b.setModel(matrix); model_health_b.render(); - GL33.glUniform4f(Main.window.glsl_discard_coords, -1, -1, (float)MathHelpers.map( + GL33.glUniform1i(Main.window.glsl_do_discard_coords, 1); + GL33.glUniform4f(Main.window.glsl_discard_coords, -10, -10, (float)MathHelpers.map( Main.player.getHealth(), 0, Main.player.maxHealth(), - offset, model_health_f.getWidth() + offset), 1); + offset, offset + model_health_f.getWidth()), 10); model_health_f.setModel(matrix); model_health_f.render(); + GL33.glUniform1i(Main.window.glsl_do_discard_coords, 0); + double temperature = MathHelpers.smoothStep(Main.player.getTemperature()); double hydration = MathHelpers.smoothStep(1 - Main.player.getHydration()) * 0.75; diff --git a/src/projectzombie/display/DisplayWindow.java b/src/projectzombie/display/DisplayWindow.java index ef46a13..17e2205 100755 --- a/src/projectzombie/display/DisplayWindow.java +++ b/src/projectzombie/display/DisplayWindow.java @@ -1,9 +1,5 @@ package projectzombie.display; -import static org.lwjgl.opengl.GL11.GL_FLOAT; -import static org.lwjgl.opengl.GL20.glEnableVertexAttribArray; -import static org.lwjgl.opengl.GL20.glVertexAttribPointer; - import java.nio.IntBuffer; import org.lwjgl.BufferUtils; @@ -28,7 +24,8 @@ import projectzombie.settings.Settings; public class DisplayWindow implements IMainloopTask { - public static boolean fullscreen = true; + public static boolean fullscreen; + public static boolean vsync; private long window; private long monitor; @@ -48,6 +45,7 @@ public class DisplayWindow implements IMainloopTask public int glsl_color; public int glsl_contrast; public int glsl_discard_coords; + public int glsl_do_discard_coords; public int glsl_model; public int glsl_camera; public int glsl_projection; @@ -70,6 +68,12 @@ public class DisplayWindow implements IMainloopTask public int glsl_effect_red_freq; public int glsl_effect_chill; + public static void setVSync(boolean status) + { + vsync = status; + GLFW.glfwSwapInterval(vsync ? 1 : 0); + } + public int getWidth() { return this.width; } @@ -121,7 +125,7 @@ public class DisplayWindow implements IMainloopTask // Make the cursor invisible GLFW.glfwSetInputMode(this.window, GLFW.GLFW_CURSOR, GLFW.GLFW_CURSOR_HIDDEN); - GLFW.glfwSwapInterval(0); + setVSync(vsync); // Show the window //GLFW.glfwShowWindow(this.window); @@ -137,6 +141,7 @@ public class DisplayWindow implements IMainloopTask glsl_projection_sun = GL33.glGetUniformLocation(environmentRenderer.program, "projection_sun"); glsl_time = GL33.glGetUniformLocation(environmentRenderer.program, "time"); glsl_discard_coords = GL33.glGetUniformLocation(environmentRenderer.program, "discard_coords"); + glsl_do_discard_coords = GL33.glGetUniformLocation(environmentRenderer.program, "do_discard_coords"); glsl_color = GL33.glGetUniformLocation(environmentRenderer.program, "color"); glsl_contrast = GL33.glGetUniformLocation(environmentRenderer.program, "contrast"); glsl_billboard = GL33.glGetUniformLocation(environmentRenderer.program, "billboard"); @@ -183,8 +188,8 @@ public class DisplayWindow implements IMainloopTask 1, 1, }, GL33.GL_STATIC_DRAW); - glVertexAttribPointer(0, 2, GL_FLOAT, false, Float.BYTES * 2, 0); - glEnableVertexAttribArray(0); + GL33.glVertexAttribPointer(0, 2, GL33.GL_FLOAT, false, Float.BYTES * 2, 0); + GL33.glEnableVertexAttribArray(0); int[] ptr = new int[1]; GL33.glGetIntegerv(GL33.GL_MAX_TEXTURE_SIZE, ptr); diff --git a/src/projectzombie/input/types/InputGUI.java b/src/projectzombie/input/types/InputGUI.java index 62d4f69..13c86bb 100755 --- a/src/projectzombie/input/types/InputGUI.java +++ b/src/projectzombie/input/types/InputGUI.java @@ -57,7 +57,9 @@ public class InputGUI implements Input public void hotbarGoto(boolean state, int pos) {} @Override - public void hotbarShift(boolean state, int amount) {} + public void hotbarShift(boolean state, int amount) { + gui.onScroll(amount); + } @Override public void mousePos(Vec2d pos) diff --git a/src/projectzombie/menu/MenuDeath.java b/src/projectzombie/menu/MenuDeath.java index f404951..8e39829 100755 --- a/src/projectzombie/menu/MenuDeath.java +++ b/src/projectzombie/menu/MenuDeath.java @@ -3,10 +3,9 @@ package projectzombie.menu; import projectzombie.Main; import projectzombie.input.types.InputGUI; import projectzombie.menu.gui.GUIButtonGroup; +import projectzombie.menu.gui.GUIButtonGroupPause; import projectzombie.menu.gui.GUI; -import projectzombie.menu.gui.components.ButtonBasic; -import projectzombie.menu.gui.components.ButtonGroupPause; -import projectzombie.menu.gui.components.OverlayBackground; +import projectzombie.menu.gui.GUIButtonBasic; public class MenuDeath extends Menu { @@ -20,11 +19,9 @@ public class MenuDeath extends Menu this.gui = new GUI(); this.input = new InputGUI(this.gui); - gui.add(new OverlayBackground()); + GUIButtonGroup group = new GUIButtonGroupPause(); - GUIButtonGroup group = new ButtonGroupPause(); - - group.add(new ButtonBasic("Quit", button -> { + group.add(new GUIButtonBasic("Quit", button -> { Main.menu = new MenuMain(); })); diff --git a/src/projectzombie/menu/MenuGamePause.java b/src/projectzombie/menu/MenuGamePause.java index 253fc42..1eec8e5 100755 --- a/src/projectzombie/menu/MenuGamePause.java +++ b/src/projectzombie/menu/MenuGamePause.java @@ -7,12 +7,11 @@ import bdf.types.BdfObject; import projectzombie.Main; import projectzombie.input.types.InputGUI; import projectzombie.menu.gui.GUIButtonGroup; +import projectzombie.menu.gui.GUIButtonGroupPause; +import projectzombie.menu.gui.GUILabelPause; import projectzombie.menu.gui.GUI; -import projectzombie.menu.gui.components.ButtonBasic; -import projectzombie.menu.gui.components.ButtonGroupPause; -import projectzombie.menu.gui.components.GUIBackToMenu; -import projectzombie.menu.gui.components.LabelPause; -import projectzombie.menu.gui.components.OverlayBackground; +import projectzombie.menu.gui.GUIBackToMenu; +import projectzombie.menu.gui.GUIButtonBasic; public class MenuGamePause extends Menu { @@ -26,12 +25,11 @@ public class MenuGamePause extends Menu this.gui = new GUIBackToMenu(Main.menu); this.input = new InputGUI(this.gui); - gui.add(new OverlayBackground()); - gui.add(new LabelPause("Game Paused")); + gui.add(new GUILabelPause("Game Paused")); - GUIButtonGroup group = new ButtonGroupPause(); + GUIButtonGroup group = new GUIButtonGroupPause(); - group.add(new ButtonBasic("Save And Exit", button -> { + group.add(new GUIButtonBasic("Save And Exit", button -> { saveAndQuit(); })); diff --git a/src/projectzombie/menu/MenuInventory.java b/src/projectzombie/menu/MenuInventory.java index d5fb9a1..fc5d44d 100644 --- a/src/projectzombie/menu/MenuInventory.java +++ b/src/projectzombie/menu/MenuInventory.java @@ -21,7 +21,7 @@ import projectzombie.menu.gui.GUIItemSlot; import projectzombie.menu.gui.GUIItemSlotGetter; import projectzombie.menu.gui.GUIItemSlotGetterStorage; import projectzombie.menu.gui.GUI; -import projectzombie.menu.gui.components.GUIBackToMenu; +import projectzombie.menu.gui.GUIBackToMenu; import projectzombie.model.Model; import projectzombie.util.gl.GlHelpers; import projectzombie.util.math.ItemStack; diff --git a/src/projectzombie/menu/MenuMain.java b/src/projectzombie/menu/MenuMain.java index a53fb88..8a377f0 100755 --- a/src/projectzombie/menu/MenuMain.java +++ b/src/projectzombie/menu/MenuMain.java @@ -7,9 +7,9 @@ import projectzombie.Main; import projectzombie.init.Layers; import projectzombie.input.types.InputGUI; import projectzombie.menu.gui.GUIButtonGroup; +import projectzombie.menu.gui.GUILabelMain; import projectzombie.menu.gui.GUI; -import projectzombie.menu.gui.components.ButtonBasic; -import projectzombie.menu.gui.components.LabelMain; +import projectzombie.menu.gui.GUIButtonBasic; public class MenuMain extends Menu { @@ -26,19 +26,19 @@ public class MenuMain extends Menu this.gui = new GUI(); this.input = new InputGUI(gui); - gui.add(new LabelMain()); + gui.add(new GUILabelMain()); GUIButtonGroup group = new GUIButtonGroup(); - group.add(new ButtonBasic("Play", button -> { + group.add(new GUIButtonBasic("Play", button -> { Main.menu = new MenuSaves(Main.menu); })); - group.add(new ButtonBasic("Settings", button -> { + group.add(new GUIButtonBasic("Settings", button -> { Main.menu = new MenuSettings(Main.menu); })); - group.add(new ButtonBasic("Quit", button -> { + group.add(new GUIButtonBasic("Quit", button -> { Main.mainloop.stop(); })); diff --git a/src/projectzombie/menu/MenuSaves.java b/src/projectzombie/menu/MenuSaves.java index 2006ea4..9a32069 100644 --- a/src/projectzombie/menu/MenuSaves.java +++ b/src/projectzombie/menu/MenuSaves.java @@ -12,19 +12,21 @@ import projectzombie.input.types.InputGUI; import projectzombie.menu.gui.GUI; import projectzombie.menu.gui.GUIAlignment; import projectzombie.menu.gui.GUIButton; +import projectzombie.menu.gui.GUIButtonBasic; +import projectzombie.menu.gui.GUIButtonCallback; import projectzombie.menu.gui.GUILabel; import projectzombie.menu.gui.GUISavesCard; import projectzombie.menu.gui.GUIButtonModel; -import projectzombie.menu.gui.components.ButtonBasic; -import projectzombie.menu.gui.components.ButtonCallback; -import projectzombie.menu.gui.components.ButtonSetting; +import projectzombie.menu.gui.GUIButtonSetting; +import projectzombie.menu.gui.GUIContainerSlider; public class MenuSaves extends Menu { private static final Random rand = new Random(); private Menu parent; - private GUI gui, gui_cards; + private GUIContainerSlider slider; + private GUI gui; public MenuSaves(Menu parent) { @@ -34,34 +36,25 @@ public class MenuSaves extends Menu doGameRender = parent.doGameRender; showIngameGUI = parent.showIngameGUI; - gui = new GUI() - { - @Override - public void render() - { - GL33.glUniform4f(Main.window.glsl_discard_coords, -0.5f, -0.5f, 0.5f, 0.5f); - super.render(); - GL33.glUniform4f(Main.window.glsl_discard_coords, -1, -1, 1, 1); - } - }; - - gui_cards = new GUI(); + gui = new GUI(); input = new InputGUI(gui); keepMouse = false; - ButtonBasic buttonBack = new ButtonBasic("Back", button -> { + GUIButtonBasic buttonBack = new GUIButtonBasic("Back", button -> { Main.menu = parent; }); - ButtonBasic buttonCreate = new ButtonBasic("Create", button -> { + GUIButtonBasic buttonCreate = new GUIButtonBasic("Create", button -> { Layers.createWorld(null, rand.nextLong()); Main.menu = new MenuGame(); }); + slider = new GUIContainerSlider(new Vec2d(-20, -5), new Vec2d(40, 10), 10); + GUISavesCard savesCard = new GUISavesCard(new Vec2d(0, 0)); - gui_cards.add(savesCard); + slider.add(savesCard); buttonBack.setAlign(GUIAlignment.RIGHT); buttonCreate.setAlign(GUIAlignment.LEFT); @@ -73,11 +66,11 @@ public class MenuSaves extends Menu labelSaves.setText("Saves"); labelSaves.setSize(new Vec2d(1, 1)); labelSaves.setPos(new Vec2d(0, 6.8)); - gui_cards.add(labelSaves); + gui.add(labelSaves); gui.add(buttonBack); gui.add(buttonCreate); - gui.add(gui_cards); + gui.add(slider); } @Override diff --git a/src/projectzombie/menu/MenuSettings.java b/src/projectzombie/menu/MenuSettings.java index 6de6d75..32d0661 100755 --- a/src/projectzombie/menu/MenuSettings.java +++ b/src/projectzombie/menu/MenuSettings.java @@ -8,21 +8,20 @@ import projectzombie.display.DisplayWindow; import projectzombie.entity.EntityParticle; import projectzombie.input.types.InputGUI; import projectzombie.menu.gui.GUIButton; +import projectzombie.menu.gui.GUIButtonBasic; import projectzombie.menu.gui.GUIButtonGroup; +import projectzombie.menu.gui.GUIButtonSetting; import projectzombie.menu.gui.GUI; +import projectzombie.menu.gui.GUIBackToMenu; import projectzombie.menu.gui.GUISelectableDirection; import projectzombie.menu.gui.GUILabel; -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 projectzombie.settings.Settings; import projectzombie.world.chunk.Chunk; public class MenuSettings extends Menu { - public ButtonSetting buttonFullscreen; + public GUIButtonSetting buttonFullscreen; private GUI gui; private Menu menuOld; @@ -51,19 +50,25 @@ public class MenuSettings extends Menu GUIButtonGroup group = new GUIButtonGroup(); group.setPos(new Vec2d(-1, 4)); - group.add(new ButtonSetting("FPS: " + (DisplayRenderUI.showFPS ? "On" : "Off"), button -> { + group.add(new GUIButtonSetting("FPS: " + (DisplayRenderUI.showFPS ? "On" : "Off"), button -> { DisplayRenderUI.showFPS = !DisplayRenderUI.showFPS; button.setText("FPS: " + (DisplayRenderUI.showFPS ? "On" : "Off")); Settings.update(); })); - group.add(buttonFullscreen = new ButtonSetting("Fullscreen: " + (DisplayWindow.fullscreen ? "On" : "Off"), + group.add(new GUIButtonSetting("VSync: " + (DisplayWindow.vsync ? "On" : "Off"), button -> { + DisplayWindow.setVSync(!DisplayWindow.vsync); + button.setText("VSync: " + (DisplayWindow.vsync ? "On" : "Off")); + Settings.update(); + })); + + group.add(buttonFullscreen = new GUIButtonSetting("Fullscreen: " + (DisplayWindow.fullscreen ? "On" : "Off"), button -> { Main.window.toggleFullscreen(); button.setText("Fullscreen: " + (DisplayWindow.fullscreen ? "On" : "Off")); })); - group.add(new ButtonSetting("Debug mode: " + (DisplayRenderUI.debug ? "On" : "Off"), + group.add(new GUIButtonSetting("Debug mode: " + (DisplayRenderUI.debug ? "On" : "Off"), button -> { DisplayRenderUI.debug = !DisplayRenderUI.debug; @@ -71,7 +76,7 @@ public class MenuSettings extends Menu Settings.update(); })); - group.add(new ButtonSetting("Render distance: "+Chunk.RENDER_DISTANCE, button -> { + group.add(new GUIButtonSetting("Render distance: "+Chunk.RENDER_DISTANCE, button -> { Chunk.RENDER_DISTANCE += 1; if(Chunk.RENDER_DISTANCE > 8) { Chunk.RENDER_DISTANCE = 2; @@ -80,7 +85,7 @@ public class MenuSettings extends Menu Settings.update(); })); - group.add(new ButtonSetting("Shadows: " + render(DisplayRender.getShadowQuality()), button -> + group.add(new GUIButtonSetting("Shadows: " + render(DisplayRender.getShadowQuality()), button -> { SettingQuality quality = DisplayRender.getShadowQuality(); @@ -127,10 +132,6 @@ public class MenuSettings extends Menu gui = new GUIBackToMenu(menuOld); input = new InputGUI(gui); - if(doGameRender) { - gui.add(new OverlayBackground()); - } - gui.add(group); GUILabel labelSettings = new GUILabel(); @@ -139,7 +140,7 @@ public class MenuSettings extends Menu labelSettings.setPos(new Vec2d(0, 6.8)); gui.add(labelSettings); - GUIButton buttonBack = new ButtonBasic("Back", new Vec2d(0, -8), button -> { + GUIButton buttonBack = new GUIButtonBasic("Back", new Vec2d(0, -8), button -> { Main.menu = menuOld; }); diff --git a/src/projectzombie/menu/gui/GUI.java b/src/projectzombie/menu/gui/GUI.java index c7e0d10..1111807 100755 --- a/src/projectzombie/menu/gui/GUI.java +++ b/src/projectzombie/menu/gui/GUI.java @@ -2,6 +2,7 @@ package projectzombie.menu.gui; import java.util.ArrayList; +import gl_engine.matrix.Matrix4; import gl_engine.vec.Vec2d; public class GUI implements GUIContainer @@ -24,14 +25,14 @@ public class GUI implements GUIContainer } @Override - public void render(Vec2d mousePos) { + public void render(Matrix4 matrix, Vec2d mousePos, boolean canHover) { for(GUIComponent c : components) { - c.render(mousePos); + c.render(matrix, mousePos, canHover); } } public void render() { - this.render(mousePos); + this.render(Matrix4.identity(), mousePos, true); } @Override @@ -141,4 +142,15 @@ public class GUI implements GUIContainer } } + @Override + public void onScroll(Vec2d mousePos, double amount) { + for(GUIComponent c : components) { + c.onScroll(mousePos, amount); + } + } + + public void onScroll(int amount) { + onScroll(mousePos, amount / 10.0); + } + } diff --git a/src/projectzombie/menu/gui/components/GUIBackToMenu.java b/src/projectzombie/menu/gui/GUIBackToMenu.java similarity index 77% rename from src/projectzombie/menu/gui/components/GUIBackToMenu.java rename to src/projectzombie/menu/gui/GUIBackToMenu.java index 0b933b2..e1173c9 100755 --- a/src/projectzombie/menu/gui/components/GUIBackToMenu.java +++ b/src/projectzombie/menu/gui/GUIBackToMenu.java @@ -1,8 +1,7 @@ -package projectzombie.menu.gui.components; +package projectzombie.menu.gui; import projectzombie.Main; import projectzombie.menu.Menu; -import projectzombie.menu.gui.GUI; public class GUIBackToMenu extends GUI { diff --git a/src/projectzombie/menu/gui/GUIButton.java b/src/projectzombie/menu/gui/GUIButton.java index 318220a..217b3f8 100755 --- a/src/projectzombie/menu/gui/GUIButton.java +++ b/src/projectzombie/menu/gui/GUIButton.java @@ -69,7 +69,7 @@ public class GUIButton implements GUIComponent, GUISelectable } @Override - public void render(Vec2d mousePos) + public void render(Matrix4 matrix, Vec2d mousePos, boolean canHover) { if(this.dirty) { this.updateMatrix(); @@ -77,14 +77,14 @@ public class GUIButton implements GUIComponent, GUISelectable } ModelGui model; - boolean mouseHover = InputMode.Controller ? this.selected : this.checkMouseHover(mousePos); + boolean mouseHover = InputMode.Controller ? this.selected : (this.checkMouseHover(mousePos) && canHover); if(mouseHover) { model = Models.UI_BUTTON_HOVER; } else { model = Models.UI_BUTTON; } - model.setModel(matrix); + model.setModel(Matrix4.multiply(this.matrix, matrix)); model.render(); Text.render(text, matrix_text); @@ -171,6 +171,9 @@ public class GUIButton implements GUIComponent, GUISelectable @Override public void onRightClick(Vec2d pos) { - + } + + @Override + public void onScroll(Vec2d mousePos, double amount) { } } diff --git a/src/projectzombie/menu/gui/GUIButtonBasic.java b/src/projectzombie/menu/gui/GUIButtonBasic.java new file mode 100755 index 0000000..ba0857a --- /dev/null +++ b/src/projectzombie/menu/gui/GUIButtonBasic.java @@ -0,0 +1,27 @@ +package projectzombie.menu.gui; + +import gl_engine.vec.Vec2d; + +public class GUIButtonBasic extends GUIButton { + + private GUIButtonCallback callback; + + public GUIButtonBasic(String text, GUIButtonCallback callback) { + setText(text); + + this.callback = callback; + } + + public GUIButtonBasic(String text, Vec2d pos, GUIButtonCallback callback) { + this(text, callback); + + setPos(pos); + } + + @Override + public void onMouseClick(Vec2d pos) { + super.onMouseClick(pos); + + callback.onClick(this); + } +} diff --git a/src/projectzombie/menu/gui/GUIButtonCallback.java b/src/projectzombie/menu/gui/GUIButtonCallback.java new file mode 100755 index 0000000..cbe8cae --- /dev/null +++ b/src/projectzombie/menu/gui/GUIButtonCallback.java @@ -0,0 +1,5 @@ +package projectzombie.menu.gui; + +public interface GUIButtonCallback { + public void onClick(GUIButton button); +} diff --git a/src/projectzombie/menu/gui/GUIButtonGroup.java b/src/projectzombie/menu/gui/GUIButtonGroup.java index 4416623..fde57f3 100755 --- a/src/projectzombie/menu/gui/GUIButtonGroup.java +++ b/src/projectzombie/menu/gui/GUIButtonGroup.java @@ -2,6 +2,7 @@ package projectzombie.menu.gui; import java.util.ArrayList; +import gl_engine.matrix.Matrix4; import gl_engine.vec.Vec2d; public class GUIButtonGroup implements GUIContainer @@ -36,9 +37,9 @@ public class GUIButtonGroup implements GUIContainer } @Override - public void render(Vec2d mousePos) { + public void render(Matrix4 matrix, Vec2d mousePos, boolean canHover) { for(GUIButton b : buttons) { - b.render(mousePos); + b.render(matrix, mousePos, canHover); } } @@ -96,5 +97,12 @@ public class GUIButtonGroup implements GUIContainer b.onRightClick(pos); } } + + @Override + public void onScroll(Vec2d mousePos, double amount) { + for(GUIButton c : buttons) { + c.onScroll(mousePos, amount); + } + } } diff --git a/src/projectzombie/menu/gui/components/ButtonGroupPause.java b/src/projectzombie/menu/gui/GUIButtonGroupPause.java similarity index 52% rename from src/projectzombie/menu/gui/components/ButtonGroupPause.java rename to src/projectzombie/menu/gui/GUIButtonGroupPause.java index 62ac186..d5643ef 100755 --- a/src/projectzombie/menu/gui/components/ButtonGroupPause.java +++ b/src/projectzombie/menu/gui/GUIButtonGroupPause.java @@ -1,15 +1,14 @@ -package projectzombie.menu.gui.components; +package projectzombie.menu.gui; import gl_engine.vec.Vec2d; import projectzombie.Main; import projectzombie.menu.MenuSettings; -import projectzombie.menu.gui.GUIButtonGroup; -public class ButtonGroupPause extends GUIButtonGroup +public class GUIButtonGroupPause extends GUIButtonGroup { - public ButtonGroupPause() + public GUIButtonGroupPause() { - add(new ButtonBasic("Settings", button -> { + add(new GUIButtonBasic("Settings", button -> { Main.menu.input.mousePos(new Vec2d(0, 0)); Main.menu = new MenuSettings(Main.menu); })); diff --git a/src/projectzombie/menu/gui/GUIButtonModel.java b/src/projectzombie/menu/gui/GUIButtonModel.java index 5c414db..f8ef2bd 100644 --- a/src/projectzombie/menu/gui/GUIButtonModel.java +++ b/src/projectzombie/menu/gui/GUIButtonModel.java @@ -28,11 +28,11 @@ public class GUIButtonModel implements GUIComponent } @Override - public void render(Vec2d mousePos) + public void render(Matrix4 matrix, Vec2d mousePos, boolean canHover) { - Model model = checkMouseHover(mousePos) ? this.modelHover : this.model; + Model model = (checkMouseHover(mousePos) && canHover) ? this.modelHover : this.model; - model.setModel(Matrix4.translate(pos.x, pos.y, 0)); + model.setModel(Matrix4.multiply(Matrix4.translate(pos.x, pos.y, 0), matrix)); model.render(); } @@ -65,5 +65,9 @@ public class GUIButtonModel implements GUIComponent @Override public void onBack() { } + + @Override + public void onScroll(Vec2d mousePos, double amount) { + } } diff --git a/src/projectzombie/menu/gui/components/ButtonSetting.java b/src/projectzombie/menu/gui/GUIButtonSetting.java similarity index 56% rename from src/projectzombie/menu/gui/components/ButtonSetting.java rename to src/projectzombie/menu/gui/GUIButtonSetting.java index 63543c0..57d945d 100755 --- a/src/projectzombie/menu/gui/components/ButtonSetting.java +++ b/src/projectzombie/menu/gui/GUIButtonSetting.java @@ -1,13 +1,12 @@ -package projectzombie.menu.gui.components; +package projectzombie.menu.gui; import gl_engine.vec.Vec2d; -import projectzombie.menu.gui.GUIAlignment; import projectzombie.settings.Settings; -public class ButtonSetting extends ButtonBasic +public class GUIButtonSetting extends GUIButtonBasic { - public ButtonSetting(String text, ButtonCallback callback) { + public GUIButtonSetting(String text, GUIButtonCallback callback) { super(text, callback); this.setAlign(GUIAlignment.RIGHT); diff --git a/src/projectzombie/menu/gui/GUIComponent.java b/src/projectzombie/menu/gui/GUIComponent.java index ec59442..4221c30 100755 --- a/src/projectzombie/menu/gui/GUIComponent.java +++ b/src/projectzombie/menu/gui/GUIComponent.java @@ -1,16 +1,18 @@ package projectzombie.menu.gui; +import gl_engine.matrix.Matrix4; import gl_engine.vec.Vec2d; public interface GUIComponent { - public void render(Vec2d mousePos); + public void render(Matrix4 matrix, Vec2d mousePos, boolean canHover); public void update(Vec2d mousePos); - public boolean checkMouseHover(Vec2d pos); + public boolean checkMouseHover(Vec2d mousePos); - public void onRightClick(Vec2d pos); - public void onMouseClick(Vec2d pos); + public void onScroll(Vec2d mousePos, double amount); + public void onRightClick(Vec2d mousePos); + public void onMouseClick(Vec2d mousePos); public void onActivate(); public void onBack(); } diff --git a/src/projectzombie/menu/gui/GUIContainerSlider.java b/src/projectzombie/menu/gui/GUIContainerSlider.java new file mode 100644 index 0000000..6d23cc1 --- /dev/null +++ b/src/projectzombie/menu/gui/GUIContainerSlider.java @@ -0,0 +1,145 @@ +package projectzombie.menu.gui; + +import java.util.ArrayList; + +import org.lwjgl.opengl.GL33; + +import gl_engine.matrix.Matrix4; +import gl_engine.vec.Vec2d; +import gl_engine.vec.Vec4d; +import projectzombie.Main; + +public class GUIContainerSlider implements GUIComponent, GUIContainer +{ + private ArrayList components = new ArrayList(); + private Vec2d pos; + private Vec2d size; + private double length; + private double scroll = 0; + + public GUIContainerSlider(Vec2d pos, Vec2d size, double length) { + this.pos = pos; + this.size = size; + this.length = length; + } + + public void setLength(double length) { + this.length = length; + } + + @Override + public void add(GUIComponent c) { + components.add(c); + } + + @Override + public void render(Matrix4 matrix, Vec2d mousePos, boolean canHover) + { + if(mousePos.y < pos.y || mousePos.y > pos.y + size.y) { + canHover = false; + } + + matrix = Matrix4.multiply(matrix, Matrix4.translate(0, -scroll, 0)); + mousePos = mousePos.add(new Vec2d(0, scroll)); + + GL33.glUniform1i(Main.window.glsl_do_discard_coords, 1); + GL33.glUniform4f(Main.window.glsl_discard_coords, + (float)pos.x, (float)pos.y, (float)(pos.x + size.x), (float)(pos.y + size.y)); + + for(GUIComponent c : components) { + c.render(matrix, mousePos, canHover); + } + + GL33.glUniform1i(Main.window.glsl_do_discard_coords, 0); + } + + @Override + public void update(Vec2d mousePos) + { + if(mousePos.y < pos.y || mousePos.y > pos.y + size.y) { + return; + } + + mousePos = mousePos.add(new Vec2d(0, scroll)); + + for(GUIComponent c : components) { + c.update(mousePos); + } + } + + @Override + public boolean checkMouseHover(Vec2d pos) { + return true; + } + + @Override + public void onRightClick(Vec2d mousePos) + { + if(mousePos.y < pos.y || mousePos.y > pos.y + size.y) { + return; + } + + mousePos = mousePos.add(new Vec2d(0, scroll)); + + for(GUIComponent c : components) { + if(c.checkMouseHover(mousePos)) { + c.onRightClick(mousePos); + } + } + } + + @Override + public void onMouseClick(Vec2d mousePos) + { + if(mousePos.y < pos.y || mousePos.y > pos.y + size.y) { + return; + } + + mousePos = mousePos.add(new Vec2d(0, scroll)); + + for(GUIComponent c : components) { + if(c.checkMouseHover(mousePos)) { + c.onMouseClick(mousePos); + } + } + } + + @Override + public void onActivate() { + for(GUIComponent c : components) { + c.onActivate(); + } + } + + @Override + public void onBack() { + for(GUIComponent c : components) { + c.onBack(); + } + } + + @Override + public void onScroll(Vec2d mousePos, double amount) + { + // Only scroll if the mouse is hovering over the scroll area + if( + mousePos.x > pos.x && mousePos.x < pos.x + size.x && + mousePos.y > pos.y && mousePos.y < pos.y + size.y) + { + scroll -= amount; + + if(scroll < 0) { + scroll = 0; + } + + if(scroll > length) { + scroll = length; + } + } + + for(GUIComponent c : components) { + c.onScroll(mousePos, amount); + } + } + +} diff --git a/src/projectzombie/menu/gui/GUIItemHolder.java b/src/projectzombie/menu/gui/GUIItemHolder.java index 53ababf..e703a76 100644 --- a/src/projectzombie/menu/gui/GUIItemHolder.java +++ b/src/projectzombie/menu/gui/GUIItemHolder.java @@ -22,12 +22,12 @@ public class GUIItemHolder implements GUIComponent } @Override - public void render(Vec2d mousePos) + public void render(Matrix4 matrix, Vec2d mousePos, boolean canHover) { if(!holding.isEmpty()) { Model model = holding.item.getModel(holding.meta).getGuiModel(); - Matrix4 matrix = Matrix4.translate(mousePos.x - 0.425, mousePos.y - 0.425, 0); + matrix = Matrix4.multiply(Matrix4.translate(mousePos.x - 0.425, mousePos.y - 0.425, 0), matrix); model.setModel(matrix); model.render(); @@ -187,5 +187,9 @@ public class GUIItemHolder implements GUIComponent holding.count = 0; } } + + @Override + public void onScroll(Vec2d mousePos, double amount) { + } } diff --git a/src/projectzombie/menu/gui/GUIItemSlot.java b/src/projectzombie/menu/gui/GUIItemSlot.java index 6ebfe26..548f15d 100644 --- a/src/projectzombie/menu/gui/GUIItemSlot.java +++ b/src/projectzombie/menu/gui/GUIItemSlot.java @@ -48,11 +48,11 @@ public class GUIItemSlot implements GUIComponent } @Override - public void render(Vec2d mousePos) + public void render(Matrix4 matrix, Vec2d mousePos, boolean canHover) { ItemStack stack = getter.getItemStack(); - Matrix4 matrix = Matrix4.translate(pos.x, pos.y, 0); + matrix = Matrix4.multiply(Matrix4.translate(pos.x, pos.y, 0), matrix); Model model = stack.item.getModel(stack.meta).getGuiModel(); if(stack.isEmpty()) { @@ -65,7 +65,7 @@ public class GUIItemSlot implements GUIComponent model.render(); } - if(checkMouseHover(mousePos)) + if(checkMouseHover(mousePos) && canHover) { double offset = (0.85 - hitboxSize) / 2; Matrix4 hover_matrix = Matrix4.multiply(matrix, Matrix4.translate(offset, offset, 0)); @@ -122,5 +122,8 @@ public class GUIItemSlot implements GUIComponent public void update(Vec2d mousePos) { } + @Override + public void onScroll(Vec2d mousePos, double amount) { + } } diff --git a/src/projectzombie/menu/gui/GUILabel.java b/src/projectzombie/menu/gui/GUILabel.java index 283e5f6..9cf2c9d 100755 --- a/src/projectzombie/menu/gui/GUILabel.java +++ b/src/projectzombie/menu/gui/GUILabel.java @@ -29,7 +29,7 @@ public class GUILabel implements GUIComponent } @Override - public void render(Vec2d mousePos) + public void render(Matrix4 matrix, Vec2d mousePos, boolean canHover) { double off = 0; @@ -45,7 +45,6 @@ public class GUILabel implements GUIComponent break; } - Matrix4 matrix = Matrix4.identity(); matrix = Matrix4.multiply(matrix, Matrix4.scale(new Vec3d(size, 1))); matrix = Matrix4.multiply(matrix, Matrix4.translate(pos.x - off, pos.y, 1)); @@ -76,5 +75,9 @@ public class GUILabel implements GUIComponent @Override public void onRightClick(Vec2d pos) { } + + @Override + public void onScroll(Vec2d mousePos, double amount) { + } } diff --git a/src/projectzombie/menu/gui/GUILabelMain.java b/src/projectzombie/menu/gui/GUILabelMain.java new file mode 100755 index 0000000..ce8bdba --- /dev/null +++ b/src/projectzombie/menu/gui/GUILabelMain.java @@ -0,0 +1,12 @@ +package projectzombie.menu.gui; + +import gl_engine.vec.Vec2d; + +public class GUILabelMain extends GUILabel +{ + public GUILabelMain() { + setText("Project Zombie"); + setSize(new Vec2d(1.2, 1.2)); + setPos(new Vec2d(0, 3.2)); + } +} diff --git a/src/projectzombie/menu/gui/GUILabelPause.java b/src/projectzombie/menu/gui/GUILabelPause.java new file mode 100755 index 0000000..966a008 --- /dev/null +++ b/src/projectzombie/menu/gui/GUILabelPause.java @@ -0,0 +1,12 @@ +package projectzombie.menu.gui; + +import gl_engine.vec.Vec2d; + +public class GUILabelPause extends GUILabel +{ + public GUILabelPause(String text) { + setText(text); + setPos(new Vec2d(0, 2.4)); + setSize(new Vec2d(1, 1)); + } +} diff --git a/src/projectzombie/menu/gui/GUIOverlay.java b/src/projectzombie/menu/gui/GUIOverlay.java deleted file mode 100755 index 5054cc2..0000000 --- a/src/projectzombie/menu/gui/GUIOverlay.java +++ /dev/null @@ -1,48 +0,0 @@ -package projectzombie.menu.gui; - -import gl_engine.vec.Vec2d; -import gl_engine.vec.Vec3d; -import gl_engine.vec.Vec4d; - -public class GUIOverlay implements GUIComponent -{ - Vec4d color = new Vec4d(0, 0, 0, 0); - - public void setColor(Vec3d color) { - this.color = new Vec4d(color.x, color.y, color.z, this.color.m); - } - - public void setColor(Vec4d color) { - this.color = color; - } - - @Override - public void render(Vec2d mousePos) { - } - - @Override - public boolean checkMouseHover(Vec2d pos) { - return false; - } - - @Override - public void onMouseClick(Vec2d pos) { - } - - @Override - public void onBack() { - } - - @Override - public void onActivate() { - } - - @Override - public void update(Vec2d mousePos) { - } - - @Override - public void onRightClick(Vec2d pos) { - } - -} diff --git a/src/projectzombie/menu/gui/GUISavesCard.java b/src/projectzombie/menu/gui/GUISavesCard.java index cb8c036..ce2d75c 100644 --- a/src/projectzombie/menu/gui/GUISavesCard.java +++ b/src/projectzombie/menu/gui/GUISavesCard.java @@ -40,13 +40,13 @@ public class GUISavesCard implements GUIComponent } @Override - public void render(Vec2d mousePos) + public void render(Matrix4 matrix, Vec2d mousePos, boolean canHover) { - LABEL.setModel(Matrix4.translate(pos.x, pos.y, 0)); + LABEL.setModel(Matrix4.multiply(Matrix4.translate(pos.x, pos.y, 0), matrix)); LABEL.render(); - buttonDelete.render(mousePos); - buttonPlay.render(mousePos); + buttonDelete.render(matrix, mousePos, canHover); + buttonPlay.render(matrix, mousePos, canHover); } @Override @@ -89,4 +89,8 @@ public class GUISavesCard implements GUIComponent buttonPlay.onBack(); } + @Override + public void onScroll(Vec2d mousePos, double amount) { + } + } diff --git a/src/projectzombie/menu/gui/components/ButtonBasic.java b/src/projectzombie/menu/gui/components/ButtonBasic.java deleted file mode 100755 index 7c2560e..0000000 --- a/src/projectzombie/menu/gui/components/ButtonBasic.java +++ /dev/null @@ -1,28 +0,0 @@ -package projectzombie.menu.gui.components; - -import gl_engine.vec.Vec2d; -import projectzombie.menu.gui.GUIButton; - -public class ButtonBasic extends GUIButton { - - private ButtonCallback callback; - - public ButtonBasic(String text, ButtonCallback callback) { - setText(text); - - this.callback = callback; - } - - public ButtonBasic(String text, Vec2d pos, ButtonCallback callback) { - this(text, callback); - - setPos(pos); - } - - @Override - public void onMouseClick(Vec2d pos) { - super.onMouseClick(pos); - - callback.onClick(this); - } -} diff --git a/src/projectzombie/menu/gui/components/ButtonCallback.java b/src/projectzombie/menu/gui/components/ButtonCallback.java deleted file mode 100755 index 93dd839..0000000 --- a/src/projectzombie/menu/gui/components/ButtonCallback.java +++ /dev/null @@ -1,7 +0,0 @@ -package projectzombie.menu.gui.components; - -import projectzombie.menu.gui.GUIButton; - -public interface ButtonCallback { - public void onClick(GUIButton button); -} diff --git a/src/projectzombie/menu/gui/components/LabelMain.java b/src/projectzombie/menu/gui/components/LabelMain.java deleted file mode 100755 index 89a22da..0000000 --- a/src/projectzombie/menu/gui/components/LabelMain.java +++ /dev/null @@ -1,13 +0,0 @@ -package projectzombie.menu.gui.components; - -import gl_engine.vec.Vec2d; -import projectzombie.menu.gui.GUILabel; - -public class LabelMain extends GUILabel -{ - public LabelMain() { - setText("Project Zombie"); - setSize(new Vec2d(1.2, 1.2)); - setPos(new Vec2d(0, 3.2)); - } -} diff --git a/src/projectzombie/menu/gui/components/LabelPause.java b/src/projectzombie/menu/gui/components/LabelPause.java deleted file mode 100755 index 2ef7b21..0000000 --- a/src/projectzombie/menu/gui/components/LabelPause.java +++ /dev/null @@ -1,13 +0,0 @@ -package projectzombie.menu.gui.components; - -import gl_engine.vec.Vec2d; -import projectzombie.menu.gui.GUILabel; - -public class LabelPause extends GUILabel -{ - public LabelPause(String text) { - setText(text); - setPos(new Vec2d(0, 2.4)); - setSize(new Vec2d(1, 1)); - } -} diff --git a/src/projectzombie/menu/gui/components/OverlayBackground.java b/src/projectzombie/menu/gui/components/OverlayBackground.java deleted file mode 100755 index d5c70f8..0000000 --- a/src/projectzombie/menu/gui/components/OverlayBackground.java +++ /dev/null @@ -1,11 +0,0 @@ -package projectzombie.menu.gui.components; - -import gl_engine.vec.Vec4d; -import projectzombie.menu.gui.GUIOverlay; - -public class OverlayBackground extends GUIOverlay -{ - public OverlayBackground() { - setColor(new Vec4d(0, 0, 0, 0.5)); - } -} diff --git a/src/projectzombie/settings/Settings.java b/src/projectzombie/settings/Settings.java index 8c0b710..bcc74ee 100755 --- a/src/projectzombie/settings/Settings.java +++ b/src/projectzombie/settings/Settings.java @@ -42,6 +42,14 @@ public class Settings implements IBdfClassManager if(nl.get("fullscreen").getType() == BdfTypes.BOOLEAN) { DisplayWindow.fullscreen = nl.get("fullscreen").getBoolean(); + } else { + DisplayWindow.fullscreen = true; + } + + if(nl.get("vsync").getType() == BdfTypes.BOOLEAN) { + DisplayWindow.vsync = nl.get("vsync").getBoolean(); + } else { + DisplayWindow.vsync = true; } if(nl.get("shadow_size").getType() == BdfTypes.INTEGER) @@ -110,7 +118,8 @@ public class Settings implements IBdfClassManager nl.set("show_fps", BdfObject.withBoolean(DisplayRenderUI.showFPS)); nl.set("debug", BdfObject.withBoolean(DisplayRenderUI.debug)); nl.set("shadow_size", BdfObject.withInteger(shadow_size)); - nl.set("fullscreen", BdfObject.withBoolean(Main.window.fullscreen)); + nl.set("fullscreen", BdfObject.withBoolean(DisplayWindow.fullscreen)); + nl.set("vsync", BdfObject.withBoolean(DisplayWindow.vsync)); } public static void init() { diff --git a/src/resources/shader/environmentRenderer.fsh b/src/resources/shader/environmentRenderer.fsh index 8e940c6..e9a3799 100644 --- a/src/resources/shader/environmentRenderer.fsh +++ b/src/resources/shader/environmentRenderer.fsh @@ -23,6 +23,7 @@ uniform vec3 lighting_day_high; uniform vec2 lightmap_offset; uniform vec2 lightmap_size; +uniform int do_discard_coords; uniform vec4 discard_coords; uniform vec4 color; @@ -100,7 +101,7 @@ void main() FragColor.b = min(1, FragColor.b); } - discard(textureRGB.a == 0 || ( + discard(textureRGB.a == 0 || (do_discard_coords == 1 && ( pVertex.x < discard_coords.x || pVertex.y < discard_coords.y || - pVertex.x > discard_coords.z || pVertex.y > discard_coords.w)); + pVertex.x > discard_coords.z || pVertex.y > discard_coords.w))); } \ No newline at end of file diff --git a/src/resources/shader/environmentRenderer.vsh b/src/resources/shader/environmentRenderer.vsh index 3a30cf6..f34f336 100644 --- a/src/resources/shader/environmentRenderer.vsh +++ b/src/resources/shader/environmentRenderer.vsh @@ -66,9 +66,8 @@ void main() vec4 pos = vec4(aPos, 1) * (mod(type >> 3, 2) == 1 ? billboard : (mod(type, 2) == 1 ? rotated : mat4(1))) * translate(aOffset) * model; - vec4 vertex = pos * projection; - gl_Position = vertex; - pVertex = vertex.xy / vertex.w; + gl_Position = pos * projection; + pVertex = pos.xy / pos.w; if(mode == 0) { pCameraDepth = mod(type >> 4, 2) == 1 ? 0 : min(1, mist * (-(pos * camera).z * 0.5 + 0.5)); diff --git a/src/resources/texture/gui/label.png b/src/resources/texture/gui/label.png index 45a3a9774ef719b21756e975332808ba59ba5523..a96ece8095d737aad2ec48662cbf18cd7bb1fd4f 100644 GIT binary patch literal 14367 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 U`0wEBxu6vdp00i_>zopr0CHGXMgRZ+ delta 8199 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 literal 0 HcmV?d00001 diff --git a/src/resources/texture/list.txt b/src/resources/texture/list.txt index ac165f3..9783435 100644 --- a/src/resources/texture/list.txt +++ b/src/resources/texture/list.txt @@ -79,6 +79,7 @@ ./gui/button_play.png ./gui/slot_armor_legs.png ./gui/inventory.png +./gui/selection_box.png ./gui/label.png ./gui/slot_clothing_pants.png ./gui/health_empty.png diff --git a/texmap.xcf b/texmap.xcf deleted file mode 100755 index 855faec331a7b249757a58672e331690b9cd0427..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275768 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�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 Y&^@P+J*AL6s-Qiopv{FK8ocWg0B^hrc>n+a