#pragma once #include "application/state.h" #include "core/corefactory.h" #include "core/music.h" class BPMCalculator; class Group; namespace kku { class Editor; } class EditorState : public GUIState { public: struct Callbacks { std::function onLeaveEditorState; }; explicit EditorState(const std::shared_ptr& core_factory, std::unique_ptr&& editor, Callbacks&& callbacks); virtual ~EditorState() override; virtual void input(const kku::SystemEvent& event) override; virtual void update(const kku::microsec& dt) override; virtual void display() const override; virtual void enter() override; virtual void leave() override; private: const Callbacks _callbacks; const std::shared_ptr _core_factory; std::shared_ptr _music; std::shared_ptr _bpm_calculator; std::shared_ptr _group; std::unique_ptr _editor; };