// // Created by Neirokan on 09.05.2020 // #ifndef ENGINE_RESOURCEMANAGER_H #define ENGINE_RESOURCEMANAGER_H #include #include #include #include "Mesh.h" class ResourceManager final { private: std::map> _textures; std::map> _fonts; std::map> _soundBuffers; std::map>> _objects; static ResourceManager *_instance; static bool _validInstance; ResourceManager() = default; // Unloads all currently loaded textures. static void unloadObjects(); static void unloadTextures(); static void unloadSoundBuffers(); static void unloadFonts(); public: ResourceManager(const ResourceManager &) = delete; ResourceManager &operator=(ResourceManager &) = delete; static void unloadAllResources(); static void init(); static void free(); // Try to load texture from file. // If success returns pointer to texture. // Otherwise returns nullptr. static std::vector> loadObjects(const std::string &filename); static std::shared_ptr loadTexture(const std::string &filename); static std::shared_ptr loadFont(const std::string &filename); static std::shared_ptr loadSoundBuffer(const std::string &filename); }; #endif //PSEUDO3DENGINE_RESOURCEMANAGER_H