#pragma once #include "gui/state.h" #include "tools/music.h" #include class MenuBar; class BPMCalculator; class Editor : public GUIState { public: struct Callbacks { std::function onLeaveEditorState; }; explicit Editor(sf::RenderWindow& game_window, Callbacks&& callbacks, std::unique_ptr&& music); virtual void input(const sf::Event& event) override; virtual void update() override; virtual void draw() const override; virtual void enter() override; virtual void leave() override; private: std::shared_ptr _menu_bar; sf::RenderWindow& _game_window; std::shared_ptr _music; std::shared_ptr _bpm_calculator; };