factored out method to get clicked buttons

This commit is contained in:
devZoGok
2024-03-17 14:22:39 +02:00
parent 0460303610
commit 7013aa745e
2 changed files with 21 additions and 10 deletions
+19 -9
View File
@@ -94,22 +94,32 @@ namespace vb01Gui{
}
}
void AbstractGuiManager::findClickedButton(){
bool textboxClicked = false, listboxClicked = false;
vector<Button*> AbstractGuiManager::findClickedButtons(){
vector<Button*> 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<Button*> clickedButtons = findClickedButtons();
for (Button *b : clickedButtons)
if (b->isActive()){
b->onClick();
updateCurrentListbox(b, listboxClicked);
updateCurrentSlider(b);
updateCurrentTextbox(b, textboxClicked);
}
}
if(!textboxClicked && currentTextbox){
currentTextbox->disable();
+2 -1
View File
@@ -19,7 +19,8 @@ namespace vb01Gui{
class AbstractGuiManager{
public:
void update();
void findClickedButton();
std::vector<Button*> findClickedButtons();
void updateGui();
void addButton(Button *b){buttons.push_back(b);}
void removeButton(Button*);
void removeButton(std::string);