Make Widgets clickable

This commit is contained in:
2021-01-16 21:58:42 +01:00
parent 7e9702431f
commit f187a25e9e
13 changed files with 156 additions and 30 deletions

View File

@@ -1,6 +1,7 @@
#include "Menu.h"
#include "JsonParser.h"
#include "eventActions.h"
#include <iostream>
Menu::Menu(Framebuffer *p_framebuffer, ShaderProgram *p_shaderProgram) :
framebuffer(p_framebuffer), shaderProgram(p_shaderProgram)
{
@@ -16,12 +17,41 @@ Menu::~Menu()
}
}
void Menu::showScreenByName(const char *unique_name)
Screen *Menu::getScreenByName(const char* unique_name)
{
for (auto it = screens.begin(); it != screens.end(); it++) {
if((*it)->getUniqueName() == unique_name) {
return *it;
}
}
return nullptr;
}
void Menu::showScreenByName(const char *unique_name)
{
auto it = screens.begin();
for (; it != screens.end(); it++) {
if((*it)->getUniqueName() == unique_name) {
(*it)->draw();
break;
}
}
activeScreen = *it;
}
void Menu::resetActiveScreen()
{
activeScreen = nullptr;
}
void Menu::handleMouseButtonActionRegister(bool *mouseButtonActionRegister, Window* window)
{
if (mouseButtonActionRegister[mouseButtonActions::leftClicked]) {
auto widgets = activeScreen->getWidgets();
for (auto it = widgets.begin(); it != widgets.end(); it++) {
if ((*it)->isHovered(window)) {
std::cout << (*it)->getUniqueName() << " clicked!" << std::endl;
}
}
}
}