From 71284a9daedacf64fb027728429e4bc4cf5acccb Mon Sep 17 00:00:00 2001 From: okseby Date: Fri, 26 May 2023 22:36:34 -0400 Subject: [PATCH] Implement RenderManager & Fix escape key callback. --- .../java/com/okseby/core/EngineManager.java | 11 +++- src/main/java/com/okseby/core/ILogic.java | 13 ++++ src/main/java/com/okseby/core/Launcher.java | 11 +++- .../java/com/okseby/core/RenderManager.java | 27 ++++++++ .../java/com/okseby/core/WindowManager.java | 2 +- .../java/com/okseby/core/test/TestGame.java | 61 +++++++++++++++++++ 6 files changed, 120 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/okseby/core/ILogic.java create mode 100644 src/main/java/com/okseby/core/RenderManager.java create mode 100644 src/main/java/com/okseby/core/test/TestGame.java diff --git a/src/main/java/com/okseby/core/EngineManager.java b/src/main/java/com/okseby/core/EngineManager.java index a53f8fd..1970777 100644 --- a/src/main/java/com/okseby/core/EngineManager.java +++ b/src/main/java/com/okseby/core/EngineManager.java @@ -15,11 +15,15 @@ public class EngineManager { private WindowManager window; private GLFWErrorCallback errorCallback; + private ILogic gameLogic; private void init() throws Exception { GLFW.glfwSetErrorCallback(errorCallback = GLFWErrorCallback.createPrint(System.err)); window = Launcher.getWindow(); + gameLogic = Launcher.getGame(); + window.init(); + gameLogic.init(); } public void start() throws Exception { @@ -84,19 +88,22 @@ public class EngineManager { } private void input() { - + gameLogic.input(); } private void render() { + gameLogic.render(); window.update(); } private void update() { - + gameLogic.update(); } private void cleanup() { window.cleanup(); + gameLogic.cleanup(); + errorCallback.free(); GLFW.glfwTerminate(); diff --git a/src/main/java/com/okseby/core/ILogic.java b/src/main/java/com/okseby/core/ILogic.java new file mode 100644 index 0000000..cb4391d --- /dev/null +++ b/src/main/java/com/okseby/core/ILogic.java @@ -0,0 +1,13 @@ +package com.okseby.core; + +public interface ILogic { + void init() throws Exception; + + void input(); + + void update(); + + void render(); + + void cleanup(); +} diff --git a/src/main/java/com/okseby/core/Launcher.java b/src/main/java/com/okseby/core/Launcher.java index 8535384..a9730f0 100644 --- a/src/main/java/com/okseby/core/Launcher.java +++ b/src/main/java/com/okseby/core/Launcher.java @@ -1,18 +1,21 @@ package com.okseby.core; +import com.okseby.core.test.TestGame; import com.okseby.core.utils.Constants; import org.lwjgl.Version; public class Launcher { private static WindowManager window; - private static EngineManager engine; + private static TestGame game; public static void main(String[] args) { System.out.println("LWJGL Version: " + Version.getVersion()); window = new WindowManager(Constants.title, 1600, 900, false); - engine = new EngineManager(); + game = new TestGame(); + + EngineManager engine = new EngineManager(); try { engine.start(); @@ -24,4 +27,8 @@ public class Launcher { public static WindowManager getWindow() { return window; } + + public static TestGame getGame() { + return game; + } } diff --git a/src/main/java/com/okseby/core/RenderManager.java b/src/main/java/com/okseby/core/RenderManager.java new file mode 100644 index 0000000..3c267e4 --- /dev/null +++ b/src/main/java/com/okseby/core/RenderManager.java @@ -0,0 +1,27 @@ +package com.okseby.core; + +import org.lwjgl.opengl.GL11; + +public class RenderManager { + private final WindowManager window; + + public RenderManager() { + window = Launcher.getWindow(); + } + + public void init() throws Exception { + + } + + public void render() { + + } + + public void clear() { + GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); + } + + public void cleanup() { + + } +} diff --git a/src/main/java/com/okseby/core/WindowManager.java b/src/main/java/com/okseby/core/WindowManager.java index e102fcb..1704586 100644 --- a/src/main/java/com/okseby/core/WindowManager.java +++ b/src/main/java/com/okseby/core/WindowManager.java @@ -65,7 +65,7 @@ public class WindowManager { }); GLFW.glfwSetKeyCallback(window, (window, key, scancode, action, mods) -> { - if (key == GLFW.GLFW_KEY_ESCAPE || action == GLFW.GLFW_RELEASE) + if (key == GLFW.GLFW_KEY_ESCAPE && action == GLFW.GLFW_RELEASE) GLFW.glfwSetWindowShouldClose(window, true); }); diff --git a/src/main/java/com/okseby/core/test/TestGame.java b/src/main/java/com/okseby/core/test/TestGame.java new file mode 100644 index 0000000..40900d3 --- /dev/null +++ b/src/main/java/com/okseby/core/test/TestGame.java @@ -0,0 +1,61 @@ +package com.okseby.core.test; + +import com.okseby.core.ILogic; +import com.okseby.core.Launcher; +import com.okseby.core.RenderManager; +import com.okseby.core.WindowManager; +import org.lwjgl.glfw.GLFW; +import org.lwjgl.opengl.GL11; + +public class TestGame implements ILogic { + private int direction = 0; + private float color = 0.0f; + + private final RenderManager renderer; + private final WindowManager window; + + public TestGame() { + renderer = new RenderManager(); + window = Launcher.getWindow(); + } + + @Override + public void init() throws Exception { + renderer.init(); + } + + @Override + public void input() { + if (window.isKeyPressed(GLFW.GLFW_KEY_UP)) + direction = 1; + else if (window.isKeyPressed(GLFW.GLFW_KEY_DOWN)) + direction = -1; + else + direction = 0; + } + + @Override + public void update() { + color += direction * 0.01f; + if (color > 1) + color = 1.0f; + else if (color <= 0) + color = 0.0f; + } + + @Override + public void render() { + if (window.isResizeable()) { + GL11.glViewport(0, 0, window.getWidth(), window.getHeight()); + window.setResizeable(true); + } + + window.setClearColor(color, color, color, 0.0f); + renderer.clear(); + } + + @Override + public void cleanup() { + renderer.cleanup(); + } +}