#include "cascademenubutton.h" #include "menudrop.h" CascadeMenuButton::CascadeMenuButton(const std::string& text) : Button(text) {} void CascadeMenuButton::input(const sf::Event& event) { if (!_submenu) return; switch (event.type) { default: break; case sf::Event::MouseMoved: if (isUnderMouse(event.mouseButton.x, event.mouseButton.y)) { _button_content.setFillColor(sf::Color(84, 158, 253)); _submenu->lock(); } else { _button_content.setFillColor(sf::Color::White); _submenu->unlock(); } break; } } void CascadeMenuButton::setRect(const sf::FloatRect& rect) { Button::setRect(rect); resetRect(_submenu); } void CascadeMenuButton::setSubmenu(const std::shared_ptr& submenu) { _submenu = submenu; resetRect(_submenu); } const std::shared_ptr CascadeMenuButton::submenu() const { return _submenu; } void CascadeMenuButton::resetRect(const std::shared_ptr& submenu) { if (submenu) { submenu->setPosition({_button_content.getPosition().x + _button_content.getSize().x, _button_content.getPosition().y}); } }