Make Widgets clickable
This commit is contained in:
34
src/Menu.cpp
34
src/Menu.cpp
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user