#pragma once #include "core/corefactory.h" #include "core/functional.h" #include "core/game.h" #include "core/music.h" #include "state.h" class Group; class GameState : public GUIState { public: struct Callbacks { kku::lambda onLeaveGame; }; explicit GameState(const std::shared_ptr &core_factory, const std::shared_ptr &game, Callbacks &&callbacks); 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 std::shared_ptr _core_factory; std::shared_ptr _music; std::shared_ptr _game; kku::lambda _onEnterGameCallback; kku::lambda _onLeaveGameCallback; };