From 1f2258bc0109767003b5e7ae095d03acd4397db8 Mon Sep 17 00:00:00 2001 From: Lars Date: Tue, 25 May 2021 15:52:41 +0200 Subject: [PATCH] [ADD] skeleton code for different scenes --- gameoverScene.cpp | 0 gameoverScene.h | 0 src/main.cpp | 25 ++++++++++++++++++++----- src/scenes/inGameScene.cpp | 30 ++++++++++++++++++++++++++++++ src/scenes/inGameScene.h | 15 +++++++++++++++ src/scenes/scene.cpp | 1 + src/scenes/scene.h | 23 +++++++++++++++++++++++ src/scenes/startupScene.cpp | 31 +++++++++++++++++++++++++++++++ src/scenes/startupScene.h | 15 +++++++++++++++ wk2_fps.vcxproj | 6 ++++++ wk2_fps.vcxproj.filters | 18 ++++++++++++++++++ 11 files changed, 159 insertions(+), 5 deletions(-) create mode 100644 gameoverScene.cpp create mode 100644 gameoverScene.h create mode 100644 src/scenes/inGameScene.cpp create mode 100644 src/scenes/inGameScene.h create mode 100644 src/scenes/scene.cpp create mode 100644 src/scenes/scene.h create mode 100644 src/scenes/startupScene.cpp create mode 100644 src/scenes/startupScene.h diff --git a/gameoverScene.cpp b/gameoverScene.cpp new file mode 100644 index 0000000..e69de29 diff --git a/gameoverScene.h b/gameoverScene.h new file mode 100644 index 0000000..e69de29 diff --git a/src/main.cpp b/src/main.cpp index 53cb0a4..2b9e16c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,6 +4,7 @@ #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" #include +#include #include #include @@ -16,6 +17,10 @@ #include "shaders/static_shader.h" #include "toolbox/toolbox.h" +#include "scenes/scene.h" +#include "scenes/startupScene.h" +#include "scenes/inGameScene.h" + #include "computervision/ObjectDetection.h" #pragma comment(lib, "glfw3.lib") @@ -26,6 +31,10 @@ static double UpdateDelta(); static GLFWwindow* window; +//Scene management variables +std::map scenes; +Scene* current_scene = nullptr; + int main(void) { @@ -44,11 +53,14 @@ int main(void) #pragma endregion glfwSetKeyCallback(window, [](GLFWwindow* window, int key, int scancode, int action, int mods) - { - if (key == GLFW_KEY_ESCAPE) - glfwSetWindowShouldClose(window, true); - }); + { + current_scene->onKey(key, scancode, action, mods); + if (key == GLFW_KEY_ESCAPE) + glfwSetWindowShouldClose(window, true); + }); + scenes[Scenes::STARTUP] = new StartupScene(); + scenes[Scenes::INGAME] = new InGameScene(); models::RawModel raw_model = LoadObjModel("res/Tree.obj"); models::ModelTexture texture = { render_engine::loader::LoadTexture("res/TreeTexture.png") }; @@ -68,6 +80,7 @@ int main(void) // set up object detection //objDetect.setup(); + current_scene->start(); // Main game loop while (!glfwWindowShouldClose(window)) { @@ -75,12 +88,13 @@ int main(void) const double delta = UpdateDelta(); entity.IncreaseRotation(glm::vec3(0, 1, 0)); camera.Move(window); + current_scene->update(window); // Render render_engine::renderer::Prepare(); shader.Start(); shader.LoadViewMatrix(camera); - + current_scene->render(); render_engine::renderer::Render(entity, shader); //objDetect.setup(); @@ -95,6 +109,7 @@ int main(void) // Clean up shader.CleanUp(); render_engine::loader::CleanUp(); + current_scene->stop(); glfwTerminate(); return 0; } diff --git a/src/scenes/inGameScene.cpp b/src/scenes/inGameScene.cpp new file mode 100644 index 0000000..91de42c --- /dev/null +++ b/src/scenes/inGameScene.cpp @@ -0,0 +1,30 @@ +#include "inGameScene.h" +#include + +void start() +{ + +} + +void stop() +{ + +} + +void render() +{ + +} + +void update(GLFWwindow* window) +{ + +} + +void onKey(int key, int scancode, int action, int mods) +{ + /** + * misschien iets van als niet in settings dan hoeft alleen escape een knop zijn als reserve optie. Als wel in settings, dan heb je hetzelfde hoe je in het in het begin scherm hebt. + **/ +} + diff --git a/src/scenes/inGameScene.h b/src/scenes/inGameScene.h new file mode 100644 index 0000000..869433c --- /dev/null +++ b/src/scenes/inGameScene.h @@ -0,0 +1,15 @@ +#pragma once +#include "scene.h" +class InGameScene : public Scene +{ +private: + + +public: + virtual void start() override; + virtual void stop() override; + virtual void render() override; + virtual void update(GLFWwindow* window) override; + virtual void onKey(int key, int scancode, int action, int mods) override; +}; + diff --git a/src/scenes/scene.cpp b/src/scenes/scene.cpp new file mode 100644 index 0000000..4b4be29 --- /dev/null +++ b/src/scenes/scene.cpp @@ -0,0 +1 @@ +#include "scene.h" \ No newline at end of file diff --git a/src/scenes/scene.h b/src/scenes/scene.h new file mode 100644 index 0000000..3cd4568 --- /dev/null +++ b/src/scenes/scene.h @@ -0,0 +1,23 @@ +#pragma once +#include + +class Scene +{ +public: + virtual void start() = 0; + virtual void stop() = 0; + virtual void render() = 0; + virtual void update(GLFWwindow* window) = 0; + virtual void onKey(int key, int scancode, int action, int mods) {}; +}; + + + +enum class Scenes +{ + STARTUP, + INGAME, + GAMEOVER, + SETTINGS, + CALIBRATION +}; diff --git a/src/scenes/startupScene.cpp b/src/scenes/startupScene.cpp new file mode 100644 index 0000000..f83832e --- /dev/null +++ b/src/scenes/startupScene.cpp @@ -0,0 +1,31 @@ +#include "startupScene.h" +#include + +void start() +{ + +} + +void stop() +{ + +} + +void render() +{ + +} + +void update(GLFWwindow* window) +{ + +} + +void onKey(int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_DOWN && action == GLFW_RELEASE) + { + //ideetje voor het scrollen door het menu heen + menuIndex = (menuIndex + 1) % 4; + } +} diff --git a/src/scenes/startupScene.h b/src/scenes/startupScene.h new file mode 100644 index 0000000..dd5bafd --- /dev/null +++ b/src/scenes/startupScene.h @@ -0,0 +1,15 @@ +#pragma once +#include "scene.h" +class StartupScene : public Scene +{ +private: + int menuIndex; + +public: + virtual void start() override; + virtual void stop() override; + virtual void render() override; + virtual void update(GLFWwindow* window) override; + virtual void onKey(int key, int scancode, int action, int mods) override; +}; + diff --git a/wk2_fps.vcxproj b/wk2_fps.vcxproj index fe5e71a..17f781f 100644 --- a/wk2_fps.vcxproj +++ b/wk2_fps.vcxproj @@ -19,6 +19,8 @@ + + @@ -33,8 +35,11 @@ + + + @@ -50,6 +55,7 @@ + diff --git a/wk2_fps.vcxproj.filters b/wk2_fps.vcxproj.filters index 54a06e5..843708b 100644 --- a/wk2_fps.vcxproj.filters +++ b/wk2_fps.vcxproj.filters @@ -57,6 +57,15 @@ Source Files + + Source Files + + + Source Files + + + Source Files + @@ -104,6 +113,15 @@ Header Files + + Header Files + + + Header Files + + + Header Files +