#include "mainmenu.h" #include "widgets/pushbutton.h" #include "widgets/group.h" MainMenu::MainMenu(sf::RenderWindow& game_window, Callbacks&& callbacks, const FontHolder& font_holder) : _buttons(std::make_shared<Group>()), _game_window(game_window) { const float window_width = game_window.getSize().x; const float window_height = game_window.getSize().y; std::shared_ptr<PushButton> button_start = std::make_shared<PushButton>("Start", font_holder.get(Fonts::Id::GUI), 48); button_start->setRect(sf::FloatRect(window_width / 3., window_height / 7. * 2, window_width / 3., window_height / 7.)); button_start->setCallback(callbacks.onAppendGameState); std::shared_ptr<PushButton> button_exit = std::make_shared<PushButton>("Exit", font_holder.get(Fonts::Id::GUI), 48); button_exit->setRect(sf::FloatRect(window_width / 3., window_height / 7. * 4, window_width / 3., window_height / 7.)); button_exit->setCallback([&]() { _game_window.close(); }); _buttons->addChild(button_start); _buttons->addChild(button_exit); } void MainMenu::input(const sf::Event& event) { _buttons->input(event); } void MainMenu::update(const sf::Time& dt) { _buttons->update(dt); } void MainMenu::draw() const { _game_window.draw(*_buttons); } void MainMenu::enter() { _buttons->setVisibility(); } void MainMenu::leave() { _buttons->setVisibility(false); }