#ifndef _H_RESOURCEMANAGER_H #define _H_RESOURCEMANAGER_H #include #include #include #include "sound/soundeffect.h" #include "utility/xmlloader.h" #include "graphics/shader.h" #include "graphics/sprite.h" #include "graphics/background.h" #include class Weapon; class Script; class AnimationSet; class AIScript; class WeaponScript; 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"); xmlLoader->loadSoundEffects("sounds"); shaders["__fallback__"] = std::make_unique(); }; // Returns a NON-OWNING pointer to a sprite atlas SpriteAtlas* loadSpriteAtlas (const std::string& path, float frameSize, bool isDirectional = false); // Returns a NON-OWNING pointer to a static sprite Sprite* loadSpriteStatic (const std::string& path); // Returns a NON-OWNING pointer to a background Background* loadBackground (const std::string& path); const unsigned loadSoundEffect (const std::string& id); std::unique_ptr loadAIScript (const std::string& path); std::unique_ptr loadWeaponScript (const std::string& path); std::unique_ptr loadWeapon (const std::string& name, const unsigned weaponShaderID, const unsigned bulletShaderID); std::shared_ptr loadAnimationSet (const std::string& name, int entityid = 0); const unsigned loadShader (const std::string& name, const std::string& vertexPath, const std::string& fragPath); const SceneData* loadScene (const std::string& id); const TileSetData* loadTileSet (const std::string& name); // Returns a NON-OWNING pointer to a shader by ID Shader* getShaderByID(unsigned int ID); void clearResources(); ~ResourceManager(); private: std::unordered_map> shaders; std::unordered_map shaderIDs; std::unordered_map> sounds; std::unordered_map> sprites; //std::unordered_map> weapons; //std::unordered_map scripts; std::unordered_map> backgrounds; 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