skizzle/include/resource_manager.hpp

92 lines
2.1 KiB
C++

#ifndef __SKIZZLE_RESOURCE_MANAGER_HPP__
#define __SKIZZLE_RESOURCE_MANAGER_HPP__
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <boost/filesystem.hpp>
#include <unordered_map>
#include <string>
#include <fstream>
#include <memory>
/**
* Gestionnaire de ressources du jeu. Conserve des
* références vers toutes les ressources pour éviter
* de les charger deux fois, permet l'accès uniforme
* aux ressources
*/
class ResourceManager {
private:
bool preloaded;
boost::filesystem::path textures_path;
boost::filesystem::path fonts_path;
boost::filesystem::path levels_path;
boost::filesystem::path musics_path;
std::unordered_map<std::string, std::shared_ptr<sf::Image>> images;
std::unordered_map<std::string, std::shared_ptr<sf::Texture>> textures;
std::unordered_map<std::string, std::shared_ptr<sf::Font>> fonts;
sf::Music music;
float music_volume;
bool playing_state;
std::string current_music;
public:
ResourceManager();
/**
* Précharge toutes les ressources préchargeables
*/
void preload();
/**
* Récupère une image préchargée
*/
std::shared_ptr<sf::Image> getImage(std::string name);
/**
* Récupère une texture préchargée
*/
std::shared_ptr<sf::Texture> getTexture(std::string name);
/**
* Récupère une police préchargée
*/
std::shared_ptr<sf::Font> getFont(std::string name);
/**
* Récupère le chemin vers le fichier du niveau portant le
* nom passé en argument
*/
std::string getLevelPath(std::string name);
/**
* Récupère la liste de tous les niveaux
*/
std::vector<std::string> getLevelList();
/**
* Démarre la musique de fond donnée
*/
void playMusic(std::string name);
/**
* Arrête la musique de fond
*/
void stopMusic();
/**
* Récupère le volume de la musique de fond
*/
float getMusicVolume();
/**
* Modifie le volume de la musique de fond
*/
void setMusicVolume(float set_music_volume);
};
#endif