77 lines
2.9 KiB
C++
77 lines
2.9 KiB
C++
#ifndef _H_RESOURCEMANAGER_H
|
|
#define _H_RESOURCEMANAGER_H
|
|
|
|
#include <unordered_map>
|
|
#include <memory>
|
|
#include <string>
|
|
|
|
#include "sound/soundeffect.h"
|
|
#include "utility/xmlloader.h"
|
|
#include "graphics/shader.h"
|
|
#include "graphics/sprite.h"
|
|
#include "graphics/background.h"
|
|
#include <cassert>
|
|
|
|
class Weapon;
|
|
class Script;
|
|
class AnimationSet;
|
|
class AIScript;
|
|
class WeaponScript;
|
|
class SpriteComponent;
|
|
|
|
class ResourceManager
|
|
{
|
|
public:
|
|
ResourceManager() :
|
|
xmlLoader(std::make_shared<XMLLoader>())
|
|
{
|
|
xmlLoader->loadWeapons("weapons");
|
|
xmlLoader->loadAnimations("animations");
|
|
xmlLoader->loadTileSets("maps/tilesets");
|
|
xmlLoader->loadMaps("maps");
|
|
xmlLoader->loadScenes("scenes");
|
|
xmlLoader->loadSoundEffects("sounds");
|
|
shaders["__fallback__"] = std::make_unique<GenericShader>();
|
|
};
|
|
|
|
// 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<AIScript> loadAIScript (const std::string& path);
|
|
std::unique_ptr<WeaponScript> loadWeaponScript (const std::string& path);
|
|
std::unique_ptr<Weapon> loadWeapon (const std::string& name, const unsigned weaponShaderID, const unsigned bulletShaderID);
|
|
std::shared_ptr<AnimationSet> 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<std::string, std::unique_ptr<Shader>> shaders;
|
|
std::unordered_map<unsigned, Shader*> shaderIDs;
|
|
std::unordered_map<std::string, std::unique_ptr<SoundEffect>> sounds;
|
|
std::unordered_map<std::string, std::unique_ptr<Sprite>> sprites;
|
|
//std::unordered_map<std::string, std::unique_ptr<Weapon>> weapons;
|
|
//std::unordered_map<std::string, std::string> scripts;
|
|
std::unordered_map<std::string, std::unique_ptr<Background>> backgrounds;
|
|
std::unordered_map<std::string, std::shared_ptr<TileSetData>> tileSets;
|
|
//std::unordered_map<std::string, std::shared_ptr<EntityData>> entityData;
|
|
//std::unordered_map<std::string, std::shared_ptr<SceneData>> scenes;
|
|
//std::unordered_map<std::string, std::shared_ptr<MapData>> maps;
|
|
//std::unordered_map<std::string, std::shared_ptr<TileType>> tiles;
|
|
|
|
std::shared_ptr<XMLLoader> xmlLoader;
|
|
};
|
|
|
|
#endif // _H_RESOURCEMANAGER_H
|