#ifndef _H_RESOURCEMANAGER_H #define _H_RESOURCEMANAGER_H #include #include #include #include "utility/xmlloader.h" #include "graphics/shader.h" #include "graphics/sprite.h" #include class Weapon; class Script; class AnimationSet; class AIScript; class WeaponScript; class TileSetData; class SpriteComponent; class ResourceManager { public: ResourceManager() : xmlLoader(std::make_shared()) { xmlLoader->loadWeapons("weapons"); xmlLoader->loadAnimations("animations"); xmlLoader->loadTileSets("maps/tilesets"); xmlLoader->loadMaps("maps"); xmlLoader->loadScenes("scenes"); }; SpriteAtlas* loadSpriteAtlas (const std::string& path, float frameSize, bool isDirectional = false); Sprite* loadSpriteStatic (const std::string& path); std::shared_ptr loadAIScript (const std::string& path); std::shared_ptr loadWeaponScript (const std::string& path); const unsigned loadShader (const std::string& name, const std::string& vertexPath, const std::string& fragPath); std::shared_ptr loadWeapon (const std::string& name, const unsigned weaponShaderID, const unsigned bulletShaderID); std::shared_ptr loadScene (const std::string& id); std::shared_ptr loadAnimationSet(const std::string& name, int entityid = 0); std::shared_ptr loadTileSet (const std::string& name); Shader* getShaderByID(unsigned int ID); void clearResources(); ~ResourceManager(); private: std::unordered_map> shaders; std::unordered_map shaderIDs; std::unordered_map> sprites; std::unordered_map> weapons; std::unordered_map> scripts; std::unordered_map>tileSets; //std::unordered_map> entityData; //std::unordered_map> scenes; //std::unordered_map> maps; //std::unordered_map> tiles; std::shared_ptr xmlLoader; }; #endif // _H_RESOURCEMANAGER_H