diff --git a/abstractGuiManager.cpp b/abstractGuiManager.cpp index f30f2c8..d8c61cd 100644 --- a/abstractGuiManager.cpp +++ b/abstractGuiManager.cpp @@ -94,22 +94,32 @@ namespace vb01Gui{ } } - void AbstractGuiManager::findClickedButton(){ - bool textboxClicked = false, listboxClicked = false; - + vector AbstractGuiManager::findClickedButtons(){ + vector clickedButtons; + Vector2 mousePos = getCursorPos(); + for (int i = 0; i < buttons.size(); i++) { - Vector2 mousePos = getCursorPos(); - Button *b = buttons[i]; - bool withinX = mousePos.x > b->getPos().x && mousePos.x < b->getPos().x + b->getSize().x; - bool withinY = mousePos.y > b->getPos().y && mousePos.y < b->getPos().y + b->getSize().y; + bool withinX = mousePos.x > buttons[i]->getPos().x && mousePos.x < buttons[i]->getPos().x + buttons[i]->getSize().x; + bool withinY = mousePos.y > buttons[i]->getPos().y && mousePos.y < buttons[i]->getPos().y + buttons[i]->getSize().y; - if (b->isActive() && withinX && withinY){ + if (withinX && withinY) + clickedButtons.push_back(buttons[i]); + } + + return clickedButtons; + } + + void AbstractGuiManager::updateGui(){ + bool textboxClicked = false, listboxClicked = false; + vector clickedButtons = findClickedButtons(); + + for (Button *b : clickedButtons) + if (b->isActive()){ b->onClick(); updateCurrentListbox(b, listboxClicked); updateCurrentSlider(b); updateCurrentTextbox(b, textboxClicked); } - } if(!textboxClicked && currentTextbox){ currentTextbox->disable(); diff --git a/abstractGuiManager.h b/abstractGuiManager.h index efcf824..762721a 100644 --- a/abstractGuiManager.h +++ b/abstractGuiManager.h @@ -19,7 +19,8 @@ namespace vb01Gui{ class AbstractGuiManager{ public: void update(); - void findClickedButton(); + std::vector findClickedButtons(); + void updateGui(); void addButton(Button *b){buttons.push_back(b);} void removeButton(Button*); void removeButton(std::string);