#ifndef ASSETS_ASSETS_LOADER_H #define ASSETS_ASSETS_LOADER_H #include #include #include #include #include const short ASSET_TEXTURE = 1; const short ASSET_SHADER = 2; const short ASSET_FONT = 3; const short ASSET_ATLAS = 4; class Assets; typedef std::function aloader_func; struct aloader_entry { int tag; const std::filesystem::path filename; const std::string alias; }; class AssetsLoader { Assets* assets; std::map loaders; std::queue entries; std::filesystem::path resdir; public: AssetsLoader(Assets* assets, std::filesystem::path resdir); void addLoader(int tag, aloader_func func); void add(int tag, const std::filesystem::path filename, const std::string alias); bool hasNext() const; bool loadNext(); static void createDefaults(AssetsLoader& loader); static void addDefaults(AssetsLoader& loader); std::filesystem::path getDirectory() const; }; #endif // ASSETS_ASSETS_LOADER_H