Program Listing for File scene_manager.h

Return to documentation for file (simple2dengine/managers/scene_manager.h)

#ifndef _SIMPLE2DENGINE_MANAGERS_SCENE_MANAGER_H_
#define _SIMPLE2DENGINE_MANAGERS_SCENE_MANAGER_H_

#include <memory>
#include <string>
#include <unordered_map>
#include <vector>

#include "simple2dengine/nodes/node.h"

namespace simple2dengine
{
    class SceneManager
    {
      public:
        SceneManager() : currentScene(nullptr){};
        void addScene(std::shared_ptr<Node> scene);
        void removeSceneImmediately(const std::string& name);
        void removeScene(const std::string& name);
        void activateScene(const std::string& name);
        int getSceneCount() const;
        void clear();
        void update(int deltaInMs);
        void render();
        void input(sf::Event event);

      private:
        std::shared_ptr<Node> currentScene = nullptr;                  // current scene
        std::unordered_map<std::string, std::shared_ptr<Node>> scenes; // all scenes (nodes)
        std::vector<std::shared_ptr<Node>> deletionQueue; // nodes that will be destroyed on next tick

        Engine* engine = nullptr; // engine pointer

        friend class Engine;
    };
} // namespace simple2dengine

#endif // _SIMPLE2DENGINE_MANAGERS_SCENE_MANAGER_H_