23 SceneManager() =
default;
25 void Init(
const std::string& scene_folder);
29 void AddScene(
int id, std::shared_ptr<Scene> scene);
30 void ChangeScene(
int id);
32 void PushScene(std::shared_ptr<Scene> scene);
35 void HandleInput(sf::RenderWindow& window);
36 void Update(
float delta_time);
37 void Render(sf::RenderWindow& window);
39 template<
typename Func>
40 void ForActiveScene(Func func)
42 if (current_scene_.scene_ ==
nullptr)
47 if (!scene_stack_.empty())
49 func(scene_stack_.top().get());
53 func(current_scene_.scene_.get());
57 GameState GetActiveGameState()
const {
return current_scene_.scene_state_; }
58 int GetActiveSceneID()
const {
return current_scene_.scene_id_; }
59 const std::unordered_map<int, std::shared_ptr<Scene>>& GetScenes()
const {
return scenes_; }
62 std::unordered_map<int, std::shared_ptr<Scene>> scenes_;
63 std::stack<std::shared_ptr<Scene>> scene_stack_;