#include "editor.h" #include "widgets/button.h" #include "widgets/group.h" #include "widgets/menubar.h" #include "tools/bpmcalculator.h" #include Editor::Editor(sf::RenderWindow& game_window, Callbacks&& callbacks, std::unique_ptr&& music, const FontHolder& font_holder) : _game_window(game_window), _music(std::move(music)), _bpm_calculator(std::make_unique(_music)) { (void)callbacks; const float window_width = game_window.getSize().x; //const float window_height = game_window.getSize().y; _menu_bar = std::make_shared(font_holder.get(Fonts::Id::GUI)); auto bpm_button = std::make_shared("Play song :)", font_holder.get(Fonts::Id::GUI)); bpm_button->setCallback([&]() { _bpm_calculator->startListening(0); }); auto test_menu_2 = std::make_shared(); test_menu_2->setRect(sf::FloatRect{0, 0, 200, 27 * 5}); auto test_cascade_button = std::make_shared("Show submenu", font_holder.get(Fonts::Id::GUI)); auto quit_button = std::make_shared("Quit", font_holder.get(Fonts::Id::GUI)); quit_button->setCallback(callbacks.onLeaveEditorState); auto test_menu = std::make_shared(); test_menu->setRect(sf::FloatRect{0, 0, 200, 27 * 3}); _menu_bar->setRect(sf::FloatRect(0, 0, window_width, 27)); _menu_bar->addSubMenu("test", test_menu); test_cascade_button->setSubmenu(test_menu_2); test_menu->addPushButton(bpm_button); test_menu->addCascadeButton(test_cascade_button); test_menu->addPushButton(quit_button); test_cascade_button->resetRect(test_menu_2); _music->openFromFile("Uta-test.flac"); _music->setVolume(5); } void Editor::input(const sf::Event& event) { _menu_bar->input(event); if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Space) { _bpm_calculator->click(); std::cout << _bpm_calculator->getCurrentApproximation() << '\n'; } } void Editor::update() { _menu_bar->update(); } void Editor::draw() const { _game_window.draw(*_menu_bar); } void Editor::enter() { _menu_bar->setVisibility(); } void Editor::leave() { _menu_bar->setVisibility(false); }