Program Listing for File WorldManager.hpp

Return to documentation for file (engine/include/Cacao/WorldManager.hpp)

#pragma once

#include "DllHelper.hpp"
#include "World.hpp"

#include <memory>

namespace Cacao {
    class CACAO_API WorldManager {
      public:
        static WorldManager& Get();

        WorldManager(const WorldManager&) = delete;
        WorldManager(WorldManager&&) = delete;
        WorldManager& operator=(const WorldManager&) = delete;
        WorldManager& operator=(WorldManager&&) = delete;

        void SetActiveWorld(const std::string& addr, bool noload = false);

        std::string GetActiveWorld();

        std::shared_ptr<World> operator()();

        struct Impl;
      private:
        std::unique_ptr<Impl> impl;
        friend class ImplAccessor;

        WorldManager();
        ~WorldManager();
    };
}