Bomberman Multiplayer
Authoritative multiplayer networking layer for Bomberman.
Loading...
Searching...
No Matches
SceneManager.h
1#ifndef _BOMBERMAN_MANAGERS_SCENE_MANAGER_H_
2#define _BOMBERMAN_MANAGERS_SCENE_MANAGER_H_
3
4#include <memory>
5#include <queue>
6#include <string>
7#include <unordered_map>
8
9#include "Scenes/Scene.h"
10
11namespace bomberman
12{
18 {
19 public:
31 void addScene(const std::string& name, std::shared_ptr<Scene> scene);
37 void activateScene(const std::string& name);
43 void removeScene(const std::string& name);
49 void onEvent(const SDL_Event& event);
55 void update(const unsigned int delta);
60 void draw() const;
61
63 [[nodiscard]]
64 Scene* getCurrentScene() const { return currentScene.get(); }
65
66 private:
67 std::unordered_map<std::string, std::shared_ptr<Scene>> scenes; // scenes
68 std::queue<std::shared_ptr<Scene>> removedScenes; // removed scenes, for clean up
69 std::shared_ptr<Scene> currentScene = nullptr; // active scene
70 };
71} // namespace bomberman
72
73#endif // _BOMBERMAN_MANAGERS_SCENE_MANAGER_H_
Scene Manager.
Definition SceneManager.h:18
void removeScene(const std::string &name)
remove scene by name
Definition SceneManager.cpp:40
void onEvent(const SDL_Event &event)
send event to active scene
Definition SceneManager.cpp:61
void draw() const
draw objects of active scene
Definition SceneManager.cpp:79
void activateScene(const std::string &name)
activate scene by name
Definition SceneManager.cpp:21
void addScene(const std::string &name, std::shared_ptr< Scene > scene)
add scene to manager
Definition SceneManager.cpp:9
SceneManager()
Construct a new Scene Manager object.
Definition SceneManager.cpp:7
void update(const unsigned int delta)
update active scene
Definition SceneManager.cpp:67
Scene * getCurrentScene() const
Returns the currently active scene, or nullptr if none.
Definition SceneManager.h:64
Scene base class.
Definition Scene.h:17