[ADD] added the menu buttons with correct textures to the scene

This commit is contained in:
Jasper
2021-06-01 15:10:23 +02:00
parent ef466c9d95
commit 7679555059
14 changed files with 88 additions and 3 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
res/menu_item_quit1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
res/menu_item_start.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
res/menu_item_start1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -5,6 +5,11 @@
namespace gui namespace gui
{ {
//Represents the type of the entitie
enum class GuiType{
LABEL, BUTTON
};
/* /*
* Structure for representing a gui item to display on the screen * Structure for representing a gui item to display on the screen
* *
@@ -12,12 +17,17 @@ namespace gui
* position = The center position of the gui * position = The center position of the gui
* scale = The size (scale) of the gui * scale = The size (scale) of the gui
*/ */
struct GuiTexture struct GuiTexture
{ {
int texture; int texture;
glm::vec2 position; glm::vec2 position;
glm::vec2 scale; glm::vec2 scale;
virtual GuiType GetType() {
return GuiType::LABEL;
}
GuiTexture(int texture, glm::vec2 position, glm::vec2 scale): texture(texture), position(position), scale(scale) GuiTexture(int texture, glm::vec2 position, glm::vec2 scale): texture(texture), position(position), scale(scale)
{ {
scale.x /= (WINDOW_WIDTH / WINDOW_HEIGT); scale.x /= (WINDOW_WIDTH / WINDOW_HEIGT);

View File

@@ -104,6 +104,10 @@ namespace gui
*/ */
void SetOnExitAction(void (*fun)()) { on_exit_action = fun; } void SetOnExitAction(void (*fun)()) { on_exit_action = fun; }
GuiType GetType() override {
return GuiType::BUTTON;
}
protected: protected:
void OnClick() override { if (on_click_action != nullptr) on_click_action(); } void OnClick() override { if (on_click_action != nullptr) on_click_action(); }
void OnEnter() override { if (on_enter_action != nullptr) on_enter_action(); } void OnEnter() override { if (on_enter_action != nullptr) on_enter_action(); }

View File

@@ -2,27 +2,96 @@
#include <GLFW/glfw3.h> #include <GLFW/glfw3.h>
#include <map> #include <map>
#include "startup_Scene.h" #include "startup_Scene.h"
#include <iostream>
#include "../models/model.h"
#include "../renderEngine/loader.h"
#include "../renderEngine/obj_loader.h"
#include "../renderEngine/renderer.h"
#include "../shaders/entity_shader.h"
#include "../toolbox/toolbox.h"
namespace scene namespace scene
{ {
shaders::GuiShader* gui_shader1;
std::vector<gui::GuiTexture*> guis1;
Startup_Scene::Startup_Scene() {
shaders::EntityShader shader;
shader.Init();
render_engine::renderer::Init(shader);
shader.CleanUp();
gui_shader1 = new shaders::GuiShader();
gui_shader1->Init();
}
gui::Button* ConvertGuiTextureToButton(gui::GuiTexture* texture) {
if (texture->GetType() == gui::GuiType::BUTTON) {
return (gui::Button*)texture;
}
else {
return NULL;
}
}
scene::Scenes scene::Startup_Scene::start(GLFWwindow *window) scene::Scenes scene::Startup_Scene::start(GLFWwindow *window)
{ {
// GUI stuff
gui::Button button_start(render_engine::loader::LoadTexture("res/menu_item_start1.png"), glm::vec2(0.0f, 0.6f), glm::vec2(0.25f, 0.25f));
button_start.SetHoverTexture(render_engine::loader::LoadTexture("res/menu_item_start1_hover.png"));
button_start.SetClickedTexture(render_engine::loader::LoadTexture("res/menu_item_start1_click.png"));
button_start.SetOnClickAction([]()
{
std::cout << "Clicked on button: Start!" << std::endl;
});
guis1.push_back(&button_start);
gui::Button button_calibrate(render_engine::loader::LoadTexture("res/menu_item_calibrate1.png"), glm::vec2(0.0f, 0.0f), glm::vec2(0.25f, 0.25f));
button_calibrate.SetHoverTexture(render_engine::loader::LoadTexture("res/menu_item_calibrate1_hover.png"));
button_calibrate.SetClickedTexture(render_engine::loader::LoadTexture("res/menu_item_calibrate1_click.png"));
button_calibrate.SetOnClickAction([]()
{
std::cout << "Clicked on button: Calibrate!" << std::endl;
});
guis1.push_back(&button_calibrate);
gui::Button button_quit(render_engine::loader::LoadTexture("res/menu_item_quit1.png"), glm::vec2(0.0f, -0.6f), glm::vec2(0.25f, 0.25f));
button_quit.SetHoverTexture(render_engine::loader::LoadTexture("res/menu_item_quit1_hover.png"));
button_quit.SetClickedTexture(render_engine::loader::LoadTexture("res/menu_item_quit1_click.png"));
button_quit.SetOnClickAction([]()
{
std::cout << "Clicked on button: Quit!" << std::endl;
});
guis1.push_back(&button_quit);
while (return_value == scene::Scenes::STARTUP) while (return_value == scene::Scenes::STARTUP)
{ {
render(); render();
update(window); update(window);
for (gui::GuiTexture* button : guis1) {
gui::Button* new_button = ConvertGuiTextureToButton(button);
if(new_button != NULL)
new_button->Update(window);
}
glfwSwapBuffers(window); glfwSwapBuffers(window);
glfwPollEvents(); glfwPollEvents();
} }
gui_shader1->CleanUp();
render_engine::loader::CleanUp();
return return_value; return return_value;
} }
void scene::Startup_Scene::render() void scene::Startup_Scene::render()
{ {
render_engine::renderer::Prepare();
// Render GUI items
render_engine::renderer::Render(guis1, *gui_shader1);
} }
void scene::Startup_Scene::update(GLFWwindow* window) void scene::Startup_Scene::update(GLFWwindow* window)

View File

@@ -1,6 +1,6 @@
#pragma once #pragma once
#include "scene.h" #include "scene.h"
#include <map> #include "../gui/gui_interactable.h"
namespace scene namespace scene
{ {
@@ -12,6 +12,8 @@ namespace scene
scene::Scenes return_value = scene::Scenes::STARTUP; scene::Scenes return_value = scene::Scenes::STARTUP;
public: public:
Startup_Scene();
gui::Button* ConvertGuiTextureToButton(gui::GuiTexture* texture);
Scenes start(GLFWwindow* window) override; Scenes start(GLFWwindow* window) override;
void render() override; void render() override;
void update(GLFWwindow* window) override; void update(GLFWwindow* window) override;