2016-04-11 21:38:03 +00:00
|
|
|
#ifndef __SKIZZLE_RESOURCE_MANAGER_HPP__
|
|
|
|
#define __SKIZZLE_RESOURCE_MANAGER_HPP__
|
2016-03-22 19:03:19 +00:00
|
|
|
|
|
|
|
#include <SFML/Graphics.hpp>
|
2016-03-30 11:32:49 +00:00
|
|
|
#include <SFML/Audio.hpp>
|
2016-04-10 10:27:06 +00:00
|
|
|
#include <boost/filesystem.hpp>
|
2016-04-09 20:36:07 +00:00
|
|
|
#include <unordered_map>
|
2016-03-22 19:03:19 +00:00
|
|
|
#include <string>
|
2016-04-09 20:36:07 +00:00
|
|
|
#include <memory>
|
|
|
|
|
2016-04-10 03:10:27 +00:00
|
|
|
/**
|
2016-04-20 14:33:21 +00:00
|
|
|
* Gestionnaire de ressources du jeu. La classe agit comme une interface
|
|
|
|
* avec le dossier res/. Elle permet de précharger les ressources gourmandes
|
|
|
|
* telles que les textures ou les polices
|
2016-04-10 03:10:27 +00:00
|
|
|
*/
|
2016-03-22 19:03:19 +00:00
|
|
|
class ResourceManager {
|
|
|
|
private:
|
2016-04-20 14:33:21 +00:00
|
|
|
/**
|
|
|
|
* Chemins vers les différents dossiers de ressources
|
|
|
|
*/
|
2016-04-10 10:27:06 +00:00
|
|
|
boost::filesystem::path textures_path;
|
|
|
|
boost::filesystem::path fonts_path;
|
|
|
|
boost::filesystem::path levels_path;
|
|
|
|
boost::filesystem::path musics_path;
|
2016-04-19 15:51:42 +00:00
|
|
|
|
2016-04-20 14:33:21 +00:00
|
|
|
std::unordered_map<
|
2016-04-20 15:01:25 +00:00
|
|
|
std::string,
|
2016-04-20 14:33:21 +00:00
|
|
|
std::shared_ptr<sf::Image>
|
|
|
|
> images_cache;
|
|
|
|
|
|
|
|
std::unordered_map<
|
2016-04-20 15:01:25 +00:00
|
|
|
std::string,
|
2016-04-20 14:33:21 +00:00
|
|
|
std::shared_ptr<sf::Texture>
|
|
|
|
> textures_cache;
|
2016-04-19 15:51:42 +00:00
|
|
|
|
2016-04-20 14:33:21 +00:00
|
|
|
boost::filesystem::path current_music_path;
|
|
|
|
bool is_playing;
|
|
|
|
sf::Music current_music;
|
2016-04-12 13:48:06 +00:00
|
|
|
float music_volume;
|
2016-03-22 19:03:19 +00:00
|
|
|
|
2016-04-20 14:33:21 +00:00
|
|
|
/**
|
|
|
|
* Construit le gestionnaire de ressources. Comme on ne
|
|
|
|
* veut qu'une seule instance du gestionnaire, c'est privé
|
|
|
|
*/
|
2016-03-30 18:40:59 +00:00
|
|
|
ResourceManager();
|
2016-03-22 19:03:19 +00:00
|
|
|
|
2016-04-20 14:33:21 +00:00
|
|
|
public:
|
2016-03-22 19:03:19 +00:00
|
|
|
/**
|
2016-04-20 14:33:21 +00:00
|
|
|
* Renvoie l'unique instance du singleton gestionnaire de ressources
|
2016-04-10 10:27:06 +00:00
|
|
|
*/
|
2016-04-20 14:33:21 +00:00
|
|
|
static ResourceManager& get();
|
2016-04-10 10:27:06 +00:00
|
|
|
|
2016-04-19 15:51:42 +00:00
|
|
|
/**
|
2016-04-20 14:33:21 +00:00
|
|
|
* Récupère la liste des fichiers dans le dossier donné
|
2016-04-19 15:51:42 +00:00
|
|
|
*/
|
2016-04-20 15:31:13 +00:00
|
|
|
std::vector<boost::filesystem::path> getFiles(boost::filesystem::path path) const;
|
2016-04-19 15:51:42 +00:00
|
|
|
|
2016-04-10 10:27:06 +00:00
|
|
|
/**
|
2016-04-20 14:33:21 +00:00
|
|
|
* Récupère le chemin vers le dossier des textures
|
2016-03-22 19:03:19 +00:00
|
|
|
*/
|
2016-04-20 14:33:21 +00:00
|
|
|
const boost::filesystem::path& getTexturesPath() const;
|
2016-03-30 11:32:49 +00:00
|
|
|
|
2016-04-05 15:37:43 +00:00
|
|
|
/**
|
2016-04-20 14:33:21 +00:00
|
|
|
* Récupère le chemin vers le dossier des polices
|
2016-04-05 15:37:43 +00:00
|
|
|
*/
|
2016-04-20 14:33:21 +00:00
|
|
|
const boost::filesystem::path& getFontsPath() const;
|
2016-04-05 15:37:43 +00:00
|
|
|
|
2016-03-30 11:32:49 +00:00
|
|
|
/**
|
2016-04-20 14:33:21 +00:00
|
|
|
* Récupère le chemin vers le dossier des niveaux
|
2016-03-30 11:32:49 +00:00
|
|
|
*/
|
2016-04-20 14:33:21 +00:00
|
|
|
const boost::filesystem::path& getLevelsPath() const;
|
2016-03-30 11:32:49 +00:00
|
|
|
|
2016-04-11 01:50:08 +00:00
|
|
|
/**
|
2016-04-20 14:33:21 +00:00
|
|
|
* Récupère le chemin vers le dossier des musiques
|
2016-04-11 01:50:08 +00:00
|
|
|
*/
|
2016-04-20 14:33:21 +00:00
|
|
|
const boost::filesystem::path& getMusicsPath() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Charge l'image dont le chemin est donné en paramètre
|
|
|
|
*/
|
2016-04-20 17:01:09 +00:00
|
|
|
std::shared_ptr<sf::Image> getImage(boost::filesystem::path path);
|
2016-04-20 14:33:21 +00:00
|
|
|
std::shared_ptr<sf::Image> getImage(std::string name);
|
2016-04-20 17:01:09 +00:00
|
|
|
std::shared_ptr<sf::Image> getImage(const char* name);
|
2016-04-20 14:33:21 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Charge l'image dont le chemin est donné en paramètre
|
|
|
|
* et la charge vers le GPU en tant que texture
|
|
|
|
*/
|
2016-04-20 17:01:09 +00:00
|
|
|
std::shared_ptr<sf::Texture> getTexture(boost::filesystem::path path);
|
2016-04-20 14:33:21 +00:00
|
|
|
std::shared_ptr<sf::Texture> getTexture(std::string name);
|
2016-04-20 17:01:09 +00:00
|
|
|
std::shared_ptr<sf::Texture> getTexture(const char* name);
|
2016-04-20 14:33:21 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Récupère une police préchargée
|
|
|
|
*/
|
2016-04-20 17:01:09 +00:00
|
|
|
std::shared_ptr<sf::Font> getFont(boost::filesystem::path path);
|
2016-04-20 14:33:21 +00:00
|
|
|
std::shared_ptr<sf::Font> getFont(std::string name);
|
2016-04-20 17:01:09 +00:00
|
|
|
std::shared_ptr<sf::Font> getFont(const char* name);
|
2016-04-11 01:50:08 +00:00
|
|
|
|
2016-03-30 11:32:49 +00:00
|
|
|
/**
|
2016-04-20 14:33:21 +00:00
|
|
|
* Joue la musique de fond donnée en paramètre
|
2016-03-30 11:32:49 +00:00
|
|
|
*/
|
2016-04-20 17:01:09 +00:00
|
|
|
void playMusic(boost::filesystem::path path);
|
2016-04-09 20:36:07 +00:00
|
|
|
void playMusic(std::string name);
|
2016-04-20 17:01:09 +00:00
|
|
|
void playMusic(const char* name);
|
2016-03-30 11:32:49 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Arrête la musique de fond
|
|
|
|
*/
|
|
|
|
void stopMusic();
|
2016-04-09 20:36:07 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Récupère le volume de la musique de fond
|
|
|
|
*/
|
2016-04-20 14:33:21 +00:00
|
|
|
float getMusicVolume() const;
|
2016-04-09 20:36:07 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Modifie le volume de la musique de fond
|
|
|
|
*/
|
|
|
|
void setMusicVolume(float set_music_volume);
|
2016-03-22 19:03:19 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|