#pragma once #include "state.h" #include "tools/music.h" #include "tools/resourceholder.h" #include class BPMCalculator; class Group; class Editor; class EditorState : public GUIState { public: struct Callbacks { std::function onLeaveEditorState; }; explicit EditorState(std::unique_ptr&& editor, Callbacks&& callbacks, const FontHolder& font_holder); virtual ~EditorState() override; virtual void input(const sf::Event& event) override; virtual void update(const sf::Time& dt) override; virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const override; virtual void enter(sf::Vector2u&& render_size) override; virtual void leave() override; private: const std::shared_ptr _font; Callbacks _callbacks; Music _music; std::shared_ptr _bpm_calculator; std::shared_ptr _group; std::unique_ptr _editor; };