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 +