#include "pushbutton.h" #include PushButton::PushButton(const std::string& text, const std::shared_ptr &font, unsigned int font_size) : Button(text, font, font_size), _pressed(false) { _color_idle = sf::Color(230, 230, 230); _color_pressed = sf::Color(200, 200, 200); _button_content.setFillColor(_color_idle); } void PushButton::input(const sf::Event& event) { switch (event.type) { default: break; case sf::Event::MouseButtonPressed: if (isUnderMouse(event.mouseButton.x, event.mouseButton.y)) { _pressed = true; _button_content.setFillColor(sf::Color(_color_pressed)); } break; case sf::Event::MouseButtonReleased: if (_pressed) { _button_content.setFillColor(_color_idle); _pressed = false; if (isUnderMouse(event.mouseButton.x, event.mouseButton.y)) _on_click_callback(); } break; } } void PushButton::setCallback(std::function callback) { _on_click_callback = callback; } void PushButton::setFillColors(sf::Color&& idle_color, sf::Color&& pressed_color) { _color_idle = idle_color; _color_pressed = pressed_color; _button_content.setFillColor(_pressed ? pressed_color : idle_color); }