#ifndef ASSETS_ASSETS_HPP_ #define ASSETS_ASSETS_HPP_ #include "../graphics/core/TextureAnimation.hpp" #include #include #include #include #include class Texture; class Shader; class Font; class Atlas; class Assets; class UiDocument; namespace audio { class Sound; } namespace assetload { /// @brief final work to do in the main thread using postfunc = std::function; } class Assets { std::unordered_map> textures; std::unordered_map> shaders; std::unordered_map> fonts; std::unordered_map> atlases; std::unordered_map> layouts; std::unordered_map> sounds; std::vector animations; public: Assets() {} Assets(const Assets&) = delete; ~Assets(); Texture* getTexture(std::string name) const; void store(Texture* texture, std::string name); Shader* getShader(std::string name) const; void store(Shader* shader, std::string name); Font* getFont(std::string name) const; void store(Font* font, std::string name); Atlas* getAtlas(std::string name) const; void store(Atlas* atlas, std::string name); audio::Sound* getSound(std::string name) const; void store(audio::Sound* sound, std::string name); const std::vector& getAnimations(); void store(const TextureAnimation& animation); UiDocument* getLayout(std::string name) const; void store(UiDocument* layout, std::string name); }; #endif // ASSETS_ASSETS_HPP_